Stránka 2 z 2
Re: Ovládání arduino jedním tlačítkem.
Napsal: 05 kvě 2021, 18:28
od pavel1tu
Ale to je to samé - já jen ukázal jak rozlišit dlouhý/krátký
dlouhým stiskem budeš přepínat SADU akcí A/B/C ...
krátkým pak pomocí toho CASE jak bylo přepínat v dané sadě požadovanou akci (bude to tam pro A/B... několikrát)
Re: Ovládání arduino jedním tlačítkem.
Napsal: 06 kvě 2021, 23:10
od bokuba
pavel1tu ještě jednou díky, celé mi to došlo a už mi funguje, co jsem potřeboval. Až se rozhoupu, tak sem přihodím celé dílko. Tedy s vynecháním těch samotných "akcí" to jsou věci, které asi nemůžu pustit ven a hlavně nejsou nijak zajímavé

Re: Ovládání arduino jedním tlačítkem.
Napsal: 09 kvě 2021, 15:42
od bokuba
Tak jak jsem psal hodím sem celé dílko, třeba to někdy bude k užitku někomu ještě nešikovnějšímu, než jsem já. A nebo si sem pro to zase někdy sám sáhnu

Ještě jednou díky všem, ochotným, kteří pomohli a poradili neznalému.
Kód: Vybrat vše
//Ovládanie jedným tlačidlom
//Zapojenie INPUT_PULLUP
//jedním tlačítkem se cykluje pět úkonů po sobě - pomocí krátkého stisku, dlouhým stiskem se přepínají dvě jiné akce
const int buttonPin1 = 6;
int buttonState1 = HIGH;
int lastButtonState1 = HIGH;
unsigned long lastDebounceTime = 0;
unsigned long debounceInterval1 = 30; //interval na krátký stisk
unsigned long debounceInterval2 = 2200; //interval na dlougý stisk
int pocitadlo = 0;
int pocitadlo2 = 0;
void setup() {
Serial.begin(115200,);
pinMode(buttonPin1, INPUT_PULLUP);
}
void loop() {
int reading1 = digitalRead(buttonPin1);
if (reading1 != lastButtonState1 && reading1 == LOW) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceInterval1 && (millis() - lastDebounceTime) < debounceInterval2) {
if (reading1 != buttonState1) {
buttonState1 = reading1;
if (buttonState1 == HIGH) {
pocitadlo++;
if (pocitadlo > 5) {
pocitadlo = 1;
}
switch (pocitadlo) {
case 1:
//akce1
break;
case 2:
//akce2
break;
case 3:
//akce3
break;
case 4:
//akce4
break;
case 5:
//akce5
break;
default:
// toto sa nevykona
break;
}
}
}
}
if ((millis() - lastDebounceTime) > debounceInterval2) {
if (reading1 != buttonState1) {
buttonState1 = reading1;
if (buttonState1 == HIGH) {
pocitadlo2++;
if (pocitadlo2 > 2) {
pocitadlo2 = 1;
}
switch (pocitadlo2) {
case 1:
transmit ("set_env -back_light=100");
pocitadlo = 7;
break;
case 2:
transmit ("set_env -back_light=10");
pocitadlo = 7;
break;
default:
// toto sa nevykona
break;
}
}
}
}
lastButtonState1 = reading1;
}