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.
Proměnné
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: Proměnné
Príklad pre zapojenie tlačidla v režime INPUT_PULLUP.
Teda spínanie tlačidla ide proti zemi.
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é...
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;
}
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é
printScreen výsledku kodu od martinius96 na seriovém monitoru vypadá takto https://ctrlv.cz/60Yq
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: Proměnné
A jo, to ma nenapadlo
Ak chceš, aby to začínalo od 0 (po prvom stisku), nastav hodnotu -1 pre cislo1.
Ak chceš, aby to začínalo od 0 (po prvom stisku), nastav hodnotu -1 pre cislo1.
Re: Proměnné
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;
}
}
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů