Arduino programozás segítség
Re: Arduino programozás segítség
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.
Re: Arduino programozás segítség
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 :
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 :
Re: Arduino programozás segítség
Írd be, megnézzük.
Re: Arduino programozás segítség
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)
}
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)
}
Re: Arduino programozás segítség
Kérhetnénk egy kis odafigyelést? A program forrását kódként formázva illeszd be! Kösz.
Valahogy így:
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)
}
Re: Arduino programozás segítség
Például így:
https://www.tinkercad.com/things/lOV4is ... t-register
https://www.tinkercad.com/things/lOV4is ... t-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)
}
Re: Arduino programozás segítség
Köszönöm a segítséget.
Nem tudtam, hogy kell kódot beilleszteni. Biztos valamit nem olvastam el, vagy elkerülte a figyelmem
Nem tudtam, hogy kell kódot beilleszteni. Biztos valamit nem olvastam el, vagy elkerülte a figyelmem
Re: Arduino programozás segítség
Próbáltad már? Szimulátorban is megnézheted, linkeltem azt is.
Re: Arduino programozás segítség
Köszönöm,
Látom, működik. Nem nagyon értem sajnos a működését. Összeszedem a gondolataimat és a kérdéseimet, aztán kérdeznék párat
Látom, működik. Nem nagyon értem sajnos a működését. Összeszedem a gondolataimat és a kérdéseimet, aztán kérdeznék párat
Re: Arduino programozás segítség
Nem jegeltem a témát de sajnos nem értem. Próbáltam videókat keresni a témában és egyet találtam, az is olasz nyelvű.
Az uint8_t változó típussal sem találkoztam még.... és a program többi része is bonyolult nekem.
De azért köszi a fáradozást.
Az uint8_t változó típussal sem találkoztam még.... és a program többi része is bonyolult nekem.
De azért köszi a fáradozást.
Re: Arduino programozás segítség
Itt találsz bővebb infót:
This header was originally in the C standard library as <stdint.h>.
https://en.cppreference.com/w/cpp/header/cstdint
This header was originally in the C standard library as <stdint.h>.
https://en.cppreference.com/w/cpp/header/cstdint
Re: Arduino programozás segítség
Sziasztok,
az órához szeretném megcsinálni az ébresztőt, de már a serial is kifog rajtam. Annyit szeretnék egyelőre, hogy az ébresztés időpontját (csak az órát), amit a serial monitorba írok, csak visszaírja, de már ez sem megy :(
[code]
char h; //Ébresztő óra
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
Serial.print("Ébresztő beállítás, óra: ");
h = Serial.read();
if (h >= 0 && h <= 23) {
Serial.print(h);
Serial.println();
} else {
}
}
}
[/code]
az órához szeretném megcsinálni az ébresztőt, de már a serial is kifog rajtam. Annyit szeretnék egyelőre, hogy az ébresztés időpontját (csak az órát), amit a serial monitorba írok, csak visszaírja, de már ez sem megy :(
[code]
char h; //Ébresztő óra
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
Serial.print("Ébresztő beállítás, óra: ");
h = Serial.read();
if (h >= 0 && h <= 23) {
Serial.print(h);
Serial.println();
} else {
}
}
}
[/code]
Re: Arduino programozás segítség
Kód: Egész kijelölése
char h; //Ébresztő óra
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
Serial.print("Ébresztő beállítás, óra: ");
h = Serial.read();
if (h >= 0 && h <= 23) {
Serial.print(h);
Serial.println();
} else {
}
}
}
Re: Arduino programozás segítség
És így?
Kód: Egész kijelölése
void loop() {
Serial.print("Ébresztő beállítás, óra: ");
if (Serial.available()) {
h = Serial.read();
if (h >= 0 && h <= 23) {
Serial.println(h);
Serial.println();
} else {
Serial.println("Csak 0 - 23 óra lehet! ");
}
}
}
Re: Arduino programozás segítség
Bocsi az előző válaszom nem volt korrekt!
Mert a soros monitoron stringet kapsz, nem pedig szám értéket!
Ezt előbb átkel alakítani számmá, hogy vizsgálhasd az if feltétellel.
Példát itt találsz-rá: https://www.arduino.cc/en/Tutorial/Buil ... tringToInt
Mert a soros monitoron stringet kapsz, nem pedig szám értéket!
Ezt előbb átkel alakítani számmá, hogy vizsgálhasd az if feltétellel.
Példát itt találsz-rá: https://www.arduino.cc/en/Tutorial/Buil ... tringToInt