Stránka 1 z 1
Proměnné
Napsal: 13 led 2021, 23:35
od zdrnd
Ahoj mám takovou prosbu,
jak mám napsat proměnnou, aby byla hodnota x = 0 ,a pak např. při stlačení tlačítka 1, při dalším 2, a 3 a pak zase 0,1,2,3,0,1,2,3... atd donekonecna
už delší dobu zkouším napsat funkční kód, všude možně hladám a nějak se mi to pořát nedaří. Dík moc.
Re: Proměnné
Napsal: 13 led 2021, 23:55
od martinius96
Príklad pre zapojenie tlačidla v režime INPUT_PULLUP.
Teda spínanie tlačidla ide proti zemi.
Kód: Vybrat vše
const int buttonPin1 = 2; // TU PRIPOJIM TLACIDLO
int cislo1 = 0; //toto je hodnota, ktorú budem meniť, globalna premenna, aby bol k nej pristup v celom programe
int buttonState1 = HIGH; //aktualny stav vstupu
int lastButtonState1 = HIGH; //posledny ulozeny stav vstupu
unsigned long lastDebounceTime1 = 0; //premenna pre casovanie cez millis()
unsigned long debounceInterval = 50; //interval debouncingu (eliminacia zakmitov)
void setup() {
pinMode(buttonPin1, INPUT_PULLUP); //nastavenie vstupu buttonPin1 na pullup, hodnota +5V, stisk tlačidla je proti zemi (active LOW)
Serial.begin(115200); //baudrate pre Serial monitor
Serial.println("UART bezi");
}
void loop() {
int reading1 = digitalRead(buttonPin1);
if (reading1 != lastButtonState1) { //pri zmene stavu (stlačenie je LOW signal
lastDebounceTime1 = millis();
}
if ((millis() - lastDebounceTime1) > debounceInterval) { //ak je millis - ulozeny cas viac ako interval debouncingu
if (reading1 != buttonState1) { //skuma sa zmena stavu (či bolo tlačidlo po stlačení pustené)
buttonState1 = reading1;
if (buttonState1 == HIGH) {
cislo1++; //pripocitaj +1 k premennej cislo1
if (cislo1 > 3) { //cislo1 tak nadobuda hodnoty: 0, 1, 2, 3, 0, 1, 2, 3, 0, 1... dookola
cislo1 = 0;
}
Serial.print("Hodnota cisla je: "); //Vykonava sa iba po stlačeni tlačidla
Serial.println(cislo1);
}
}
}
lastButtonState1 = reading1;
}
Schéma zapojenia z Arduino.cc:

Jednotlivé hodnoty čísla môžu byť vypísané aj cez vetvenie - switch(), kedy sa urobia cases pre 0, 1, 2, 3...
Taktiež môžeš v jednotlivých cases urobiť aj nejaký podmienený výpis, alebo akciu... Ak je case 3, zopni tranzistor, rozsvieť LED a iné...
Re: Proměnné
Napsal: 14 led 2021, 09:09
od Hanz
printScreen výsledku kodu od martinius96 na seriovém monitoru vypadá takto
https://ctrlv.cz/60Yq 
Re: Proměnné
Napsal: 14 led 2021, 11:51
od martinius96
A jo, to ma nenapadlo

Ak chceš, aby to začínalo od 0 (po prvom stisku), nastav hodnotu -1 pre cislo1.
Re: Proměnné
Napsal: 15 led 2021, 09:03
od KamilV
Nebo prohodit inkrementaci s výpisem...
Kód: Vybrat vše
if (buttonState1 == HIGH) {
Serial.print("Hodnota cisla je: "); //Vykonava sa iba po stlačeni tlačidla
Serial.println(cislo1);
cislo1++; //pripocitaj +1 k premennej cislo1
if (cislo1 > 3) { //cislo1 tak nadobuda hodnoty: 0, 1, 2, 3, 0, 1, 2, 3, 0, 1... dookola
cislo1 = 0;
}
}