Prośba o analizę kodu 2 klik w określonym czasie - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: Prośba o analizę kodu 2 klik w określonym czasie (/watek-pro%C5%9Bba-o-analiz%C4%99-kodu-2-klik-w-okre%C5%9Blonym-czasie) Strony:
1
2
|
Prośba o analizę kodu 2 klik w określonym czasie - brendy - 13-04-2021 Witam Możecie mi podpowiedzieć jak w tym programie zrobić żeby np 2 kliknięcia w ciagu 5s włączyły diodę, a jeśli nie będzie 2 klików w tym czasie to ignoruje. I jaki warunek użyć żeby diody zapały się na przemian ? Program działa tak że jak szybko kliknę 2 razy to reaguje, ale jak chciałbym kliknąć 2 razy w ciągu np 5s nie reaguje. Kod: #include "ClickButton.h" RE: Prośba o analizę kodu 2 klik w określonym czasie - Jarewa0606 - 13-04-2021 z ignorancją będzie źle bo trzeba bibliotekę przerabiać... Myśle że wystarczy ta linijka multiclickTime = 250; // Time limit for multi clicks na multiclickTime = 5000; // Time limit for multi clicks A to drugie to wystarczy to if(button1.clicks == 2) ledState2 = !ledState2; Na to if(button1.clicks == 2) ledState2 = !ledState; RE: Prośba o analizę kodu 2 klik w określonym czasie - brendy - 13-04-2021 Wcześniej tyle się z tym męczyłem. Bardzo dziękuje za podpowiedź. Działa super, czas i zapala na przemian. Ignoruje jak drugie wciśnięcie jest powyżej 5s tylko, kiedy wciskam 2 razy w ciągu tych 5s to muszę odczekać około 5s zanim dioda się zapali. Proszę jeszcze o wskazówkę jaki warunek wpisać, żeby diody wyłączały się po określonym czasie. Kod: #include "ClickButton.h" RE: Prośba o analizę kodu 2 klik w określonym czasie - Jarewa0606 - 13-04-2021 void loop() { button1.Update(); Static uint32_t Tims = millis(); if (button1.clicks != 0) LEDfunction = button1.clicks; if(button1.clicks == 2) ledState = !ledState; if(button1.clicks == 2) ledState2 = !ledState; Tims=millis(); digitalWrite(ledGreen,ledState); digitalWrite(ledRed,ledState2); if(millis()- Tims >= 5000){ // 5sekund do wyłączenia Tims =millis(); ledState = LOW; ledState2 = LOW; digitalWrite(ledGreen,ledState); digitalWrite(ledRed,ledState2); } } RE: Prośba o analizę kodu 2 klik w określonym czasie - brendy - 13-04-2021 Dziękuje za ogromną pomoc. Kombinuje od godz ale nie wiem jak na początku programu zadeklarować milisa RE: Prośba o analizę kodu 2 klik w określonym czasie - Jarewa0606 - 13-04-2021 a po co deklarować?? przecież to funkcja wewnętrzna ona już jest. Mi się tylko pomyliło bo powinno być static z małej litery nie z dużej... RE: Prośba o analizę kodu 2 klik w określonym czasie - brendy - 13-04-2021 Kod: #include "ClickButton.h" RE: Prośba o analizę kodu 2 klik w określonym czasie - Jarewa0606 - 14-04-2021 A może pokaż jak masz podłączone diody bo źle chyba przewidziałem że do masy lub funkcja bution się nie zeruje RE: Prośba o analizę kodu 2 klik w określonym czasie - brendy - 14-04-2021 Na płytce jedna nóżka diody jest na stałe podłączona do masy, a druga przez opornik do pinu Atmegi, stan wysoki z Atmegi włącza diodę. Próbowałem za nic nie mogę zmusić ich do zgaszenia po określonym czasie RE: Prośba o analizę kodu 2 klik w określonym czasie - Jarewa0606 - 14-04-2021 Zobacz teraz #include "ClickButton.h" const int ledGreen = 12; const int ledRed = 13; int ledState = 0; int ledState2 = 0; const int buttonPin1 = 8; // przycisk ClickButton button1(buttonPin1, LOW, CLICKBTN_PULLUP); int LEDfunction = 0; uint32_t Tims = millis(); void setup() { pinMode(ledGreen,OUTPUT); pinMode(ledRed,OUTPUT); button1.multiclickTime = 5000; // Limit czasu w ciagu ktorego podajemy dwa impulsy. } void loop() { button1.Update(); if (button1.clicks != 0) LEDfunction = button1.clicks; if(button1.clicks == 2) ledState = !ledState; if(button1.clicks == 2) ledState2 = !ledState; Tims=millis(); digitalWrite(ledGreen,ledState); digitalWrite(ledRed,ledState2); if(millis()- Tims >= 5000){ // 5sekund do wyłączenia Tims =millis(); ledState = LOW; ledState2 = LOW; digitalWrite(ledGreen,ledState); digitalWrite(ledRed,ledState2); } } |