Arduino programozás segítség

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 163
Csatlakozott: 2012. január 22. vasárnap, 7:00
Tartózkodási hely: Budapest

Re: Arduino programozás segítség

HozzászólásSzerző: aaszabo » 2020. szeptember 24. csütörtök, 22:01

Arra érdemes figyelni, hogy a sprintf egy költséges utasítás. Ha kicsi a hely, akkor kerülendő, mert pár sprintf és el is fogyott a hely.

Attila79
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2020. október 19. hétfő, 19:16

Re: Arduino programozás segítség

HozzászólásSzerző: Attila79 » 2020. október 19. hétfő, 19:26

Sziasztok,
Egy másik téma lenne.
Ha shift registert használok, akkor van e lehetőség arra, hogy a for ciklus tömbből vegye ki az értékeket.
Találtam példát arra, hogy ledeket villogtat, de mindig csak olyanra, ahol sorban villogtak a ledek, én egy meghatározott rendben de nem sorban akarom villogtatni a ledeket, de nem megy.
Segítsetek ha kell beirom ide a kódot : :|

vargham
Chipgyilok
Hozzászólások: 283
Csatlakozott: 2014. január 8. szerda, 8:32
Kapcsolat:

Re: Arduino programozás segítség

HozzászólásSzerző: vargham » 2020. október 20. kedd, 5:04

Írd be, megnézzük.

Attila79
Újonc
Újonc
Hozzászólások: 2
Csatlakozott: 2020. október 19. hétfő, 19:16

Re: Arduino programozás segítség

HozzászólásSzerző: Attila79 » 2020. október 20. kedd, 19:57

Tehát erről lenne szó. A netről néztem le, és működik is, csak mint mondtam nem úgy, ahogy én szeretném.

int latchPin = 5; //a lanch változó kimenethez rendelése
int clockPin = 6; //idő változó kimenethez rendelése
int dataPin = 4; //adat változó kimenethez rendelése

byte leds = 0; //8bit-es változó létrehozása és kezdeti értékadása

void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT); // kimenetek beállítása
pinMode(clockPin, OUTPUT);
}

void loop()
{
leds = 0;// minden kimenet (led) kikapcsolása
updateShiftRegister(); //függvény meghívása, leds értéke elküldve shift regiszternek
delay(500); //1/2 sec várakozás
for (int i = 0; i < 8; i++) //i értékének növelése 8-ig
{
bitSet(leds, i); // leds változó i-edik értéke 1 , a többi 0
updateShiftRegister(); // függvény meghívása, leds értéke elküldve shift regiszternek
delay(500); //várakozás 1/2sec-ig aztán vissza a for ciklusig
}
}
void updateShiftRegister()
{
digitalWrite(latchPin, LOW); //latch alacsony szinten
shiftOut(dataPin, clockPin, LSBFIRST, leds);

//shift regiszterbe kiíratás, első két paraméter adat és az idő pin, a harmadik paraméter a kiolvasás

//iránya jobb szélső bittől kezdi (LSB), negyedik paraméter a tényleges bit adat a 'leds' változóban

digitalWrite(latchPin, HIGH); //latch magas szinten(kiíratás a kimenetekre)
}

vargham
Chipgyilok
Hozzászólások: 283
Csatlakozott: 2014. január 8. szerda, 8:32
Kapcsolat:

Re: Arduino programozás segítség

HozzászólásSzerző: vargham » 2020. október 21. szerda, 5:55

Kérhetnénk egy kis odafigyelést? A program forrását kódként formázva illeszd be! Kösz.
Valahogy így:

Kód: Egész kijelölése

int latchPin = 5; //a lanch változó kimenethez rendelése
int clockPin = 6; //idő változó kimenethez rendelése
int dataPin = 4; //adat változó kimenethez rendelése

byte leds = 0; //8bit-es változó létrehozása és kezdeti értékadása

void setup()
{
   pinMode(latchPin, OUTPUT);
   pinMode(dataPin, OUTPUT); // kimenetek beállítása
   pinMode(clockPin, OUTPUT);
}

void loop()
{
   leds = 0;// minden kimenet (led) kikapcsolása
   updateShiftRegister(); //függvény meghívása, leds értéke elküldve shift regiszternek
   delay(500); //1/2 sec várakozás
   for (int i = 0; i < 8; i++) //i értékének növelése 8-ig
   {
      bitSet(leds, i); // leds változó i-edik értéke 1 , a többi 0
      updateShiftRegister(); // függvény meghívása, leds értéke elküldve shift regiszternek
      delay(500); //várakozás 1/2sec-ig aztán vissza a for ciklusig
   }
}

void updateShiftRegister()
{
   digitalWrite(latchPin, LOW); //latch alacsony szinten
   shiftOut(dataPin, clockPin, LSBFIRST, leds);

   //shift regiszterbe kiíratás, első két paraméter adat és az idő pin, a harmadik paraméter a kiolvasás

   //iránya jobb szélső bittől kezdi (LSB), negyedik paraméter a tényleges bit adat a 'leds' változóban

   digitalWrite(latchPin, HIGH); //latch magas szinten(kiíratás a kimenetekre)
}

vargham
Chipgyilok
Hozzászólások: 283
Csatlakozott: 2014. január 8. szerda, 8:32
Kapcsolat:

Re: Arduino programozás segítség

HozzászólásSzerző: vargham » 2020. október 21. szerda, 9:37

Például így:
https://www.tinkercad.com/things/lOV4isgpCgM-arduino-shift-register

Kód: Egész kijelölése

int latchPin = 5; //a lanch változó kimenethez rendelése
int clockPin = 6; //idő változó kimenethez rendelése
int dataPin = 4; //adat változó kimenethez rendelése

byte leds = 0; //8bit-es változó létrehozása és kezdeti értékadása

uint8_t const length = 5;
uint8_t pattern[length];

void setup()
{
   pattern[0]=B00110011;
   pattern[1]=B10010010;
   pattern[2]=B00101001;
   pattern[3]=B11001110;
   pattern[4]=B01100111;
   pattern[5]=B01011100;
   
   pinMode(latchPin, OUTPUT);
   pinMode(dataPin, OUTPUT); // kimenetek beállítása
   pinMode(clockPin, OUTPUT);
}

void loop()
{
   leds = 0;// minden kimenet (led) kikapcsolása
   updateShiftRegister(); //függvény meghívása, leds értéke elküldve shift regiszternek
   delay(500); //1/2 sec várakozás
   for (int i = 0; i < length; i++) //i értékének növelése length-ig
   {
      leds = pattern[i];
      updateShiftRegister(); // függvény meghívása, leds értéke elküldve shift regiszternek
      delay(500); //várakozás 1/2sec-ig aztán vissza a for ciklusig
   }
}

void updateShiftRegister()
{
   digitalWrite(latchPin, LOW); //latch alacsony szinten
   shiftOut(dataPin, clockPin, LSBFIRST, leds);

   //shift regiszterbe kiíratás, első két paraméter adat és az idő pin, a harmadik paraméter a kiolvasás

   //iránya jobb szélső bittől kezdi (LSB), negyedik paraméter a tényleges bit adat a 'leds' változóban

   digitalWrite(latchPin, HIGH); //latch magas szinten(kiíratás a kimenetekre)
}


Vissza: “Arduino / C-nyelvű programozás (AVR-Duino, EthDuino, Arduino, Diecimila)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég