Proměnné

Odpovědět
zdrnd
Příspěvky: 4
Registrován: 10 led 2021, 22:34
Reputation: 0

Proměnné

Příspěvek od zdrnd » 13 led 2021, 23:35

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.

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Proměnné

Příspěvek od martinius96 » 13 led 2021, 23:55

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:
Obrázek
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é...

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: Proměnné

Příspěvek od Hanz » 14 led 2021, 09:09

printScreen výsledku kodu od martinius96 na seriovém monitoru vypadá takto https://ctrlv.cz/60Yq ;)

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Proměnné

Příspěvek od martinius96 » 14 led 2021, 11:51

A jo, to ma nenapadlo :D
Ak chceš, aby to začínalo od 0 (po prvom stisku), nastav hodnotu -1 pre cislo1.

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Proměnné

Příspěvek od KamilV » 15 led 2021, 09:03

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;
        }
      }

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 12 hostů