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)
Ovládání arduino jedním tlačítkem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: Ovládání arduino jedním tlačítkem.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Ovládání arduino jedním tlačítkem.
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.
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.
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;
}
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 17 hostů