Obsługa przycisków w SuplaDevice

Patryk
Posty: 2677
Rejestracja: pn sty 07, 2019 7:51 pm
Lokalizacja: Rybnik

lukfud pisze: wt lut 09, 2021 1:18 pm Jako, że włączał się sam jeden kanał, zwiększyłem filtr do 150ms (pomogło).
Podpowiedz proszę, którą linijkę ( linijki ) kodu zmodyfikowałeś.
Chciałbym to również u siebie w GUI-Generic zwiększyć.
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

Patryk pisze: pt mar 05, 2021 10:51 am
lukfud pisze: wt lut 09, 2021 1:18 pm Jako, że włączał się sam jeden kanał, zwiększyłem filtr do 150ms (pomogło).
Podpowiedz proszę, którą linijkę ( linijki ) kodu zmodyfikowałeś.
Chciałbym to również u siebie w GUI-Generic zwiększyć.
https://github.com/krycha88/GUI-Generic ... UI.cpp#L99
https://www.facebook.com/groups/supladiy/
Patryk
Posty: 2677
Rejestracja: pn sty 07, 2019 7:51 pm
Lokalizacja: Rybnik

Dzięki. :D
Wydawało mi się, że domyślnie jest 100ms, a tu widzę 50ms.
No chyba, że jest gdzieś jeszcze jeden parametr.
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

Patryk pisze: pt mar 05, 2021 12:23 pm Dzięki. :D
Wydawało mi się, że domyślnie jest 100ms, a tu widzę 50ms.
No chyba, że jest gdzieś jeszcze jeden parametr.
Może dlatego, że w kilku moich postach pisałem, że zwiększyłem na 100 ;)
https://www.facebook.com/groups/supladiy/
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Do przycisków dodałem opcję "ON_LONG_CLICK_x".

Aby to działało, przycisk musi mieć skonfigurowany czas "on hold" oraz "multiclick". Aby wyzwolić akcję, należy przytrzymać przycisk powyżej czasu "on hold", a następnie w odstępie nie dłuższym niż czas "multiclick" należy kliknąć odpowiednią ilość razy.
Button wyśle zdarzenia ON_LONG_CLICK_0, gdy po ON_HOLD nie nastąpiło kliknięcie.
Pozostałe ON_LONG_CLICK_1 do 10 są wyzwalane po odpowiedniej ilości kliknięć.

Przykład użycia:
Ja u siebie planuję tego użyć do przycisków otwierających bramę - w garażu mam przycisk do bramy umiejscowiony zaraz obok włącznika światła i nie chcę aby przypadkiem ktoś otworzył bramę, gdy chce zapalić światło. Planuję ustawić sobie ON_LONG_CLICK_1 lub 2 na otwieranie bramy.
@lukfud planuje to użyć w jeszcze inny sposób
Widzimy się na Supla Offline Party vol. 2 :!:
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

klew pisze: wt lut 09, 2021 11:55 am Samo ON_HOLD dostało też niedawno opcję powtarzania (zapomniałem się tym podzielić, poszło tylko na priv do jednego wybrańca ;P ):

Kod: Zaznacz cały

auto b1 = new Supla::Control::Button(...);
b1.setMulticlickTime(200);
b1.setHoldTime(400);
b1.repeatOnHoldEvery(200);

auto rgb = new MyRgb();
b1.addAction(Supla::ITERATE_DIM_RGB, rgb, Supla::ON_HOLD);
b1.addAction(Supla::TOGGLE_RGB, rgb, Supla::ON_CLICK_1);
Da to taki efekt, że kliknięcie przycisku będzie przełączało włączony/wyłączony. Natomiast przytrzymanie będzie wysyłalo ON_HOLD co 200 ms (ustawiane repeatOnHoldEvery). Akcja ITERATE_DIM_RGB będzie zmieniała colorBrightness (czyli jasność dla kanału RGB) o 5 (w zakresie 10-100) z lekką pauzą na 10 i 100. Poza ITERATE_DIM_RGB mamy też dostępny wariant ITERATE_DIM_W (jasność kanału białego oraz dimmer) oraz ITERATE_DIM_ALL (jasność kanałów RGB oraz W)
Dodatkowo gdy rgb jest wyłączone, to przytrzymanie przycisku uruchomi go z jasnością 10.
Jakie Waszym zdaniem są najlepiej dobrane wartości dla "repeatOnHoldEvery" i "setStep" przy ściemnianiu / rozjaśnianiu ?.
Ustawiłem "repeatOnHoldEvery(35)" i "setStep(1)", co wydaje mi się optymalną szybkością bez "klatkowania" przy niskim natężeniu.
https://www.facebook.com/groups/supladiy/
WinstonW
Posty: 19
Rejestracja: pt lip 10, 2020 3:50 pm

Mam pytanie ,chciałbym zastosować obsługę wieloklików ,dokładnie chodzi o przycisk dzwonkowy działający na zasadzie włączy-wyłącz , oraz przycisk przytrzymania ,obecnie posiadam starą wersję supli gdzie na Arduino Mega jest obsługiwane 10 przekaźników wraz z przyciskami.
Kod jaki udało mi sie stworzyć wygląda następująco:

Kod: Zaznacz cały

auto b1 = new Supla::Control::Button (8, true, true);
b1->setHoldTime(2000);// po 2 s od przytrzymania przycisku zostanie wywołane zdarzenie ON_HOLD
b1->setMulticlickTime(400 );// program zlicza kliknięcia i po upływie 400 ms od puszczenia przycisku, wywoła odpowiednią akcję
          //przerzuca relay1 włacz-wyłacz , po przytrzymaniu przerzuca realy2
b1->addAction(Supla::TOGGLE, relay_0, Supla::ON_CLICK_1);
b1->addAction(Supla::TOGGLE, relay_1, Supla::ON_HOLD);

auto b2 = new Supla::Control::Button (9, true, true);
b2->setHoldTime(2000);// po 2 s od przytrzymania przycisku zostanie wywołane zdarzenie ON_HOLD
b2->setMulticlickTime(400 );// program zlicza kliknięcia i po upływie 400 ms od puszczenia przycisku, wywoła odpowiednią akcję 
          //przezuca relay1 włacz-wyłacz , po dwóch kliknieciach przerzuca realay2
b2->addAction(Supla::TOGGLE, relay_2, Supla::ON_CLICK_2);  
b2->addAction(Supla::TOGGLE, relay_3, Supla::ON_HOLD);

przy samym auto b1 wszystko działa poprawnie , jednak przy b1 i b2 , przekaźniki wszystkie przekaźniki włączają się .Proszę o przykładowy kod dla kilku wyłączników
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

WinstonW pisze: pn kwie 12, 2021 3:05 pm Mam pytanie ,chciałbym zastosować obsługę wieloklików ,dokładnie chodzi o przycisk dzwonkowy działający na zasadzie włączy-wyłącz , oraz przycisk przytrzymania ,obecnie posiadam starą wersję supli gdzie na Arduino Mega jest obsługiwane 10 przekaźników wraz z przyciskami.
Kod jaki udało mi sie stworzyć wygląda następująco:
Ten fragment kodu wygląda poprawnie.
Sprawdź ile jest wolnej pamięci na końcu funkcji setup. Te przyciski Button zjadają trochę bajtów, a na Arduino mega pamięci jest niewiele.
Powinno być przynajmniej 2 kB wolnej pamięci
Widzimy się na Supla Offline Party vol. 2 :!:
Patryk
Posty: 2677
Rejestracja: pn sty 07, 2019 7:51 pm
Lokalizacja: Rybnik

lukfud pisze: pt kwie 09, 2021 6:46 pm Jakie Waszym zdaniem są najlepiej dobrane wartości dla "repeatOnHoldEvery" i "setStep" przy ściemnianiu / rozjaśnianiu ?.
Ustawiłem "repeatOnHoldEvery(35)" i "setStep(1)", co wydaje mi się optymalną szybkością bez "klatkowania" przy niskim natężeniu.
Gdzie to jest.
Bo chciałbym sobie przetestować.
Szukam ...
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

Patryk pisze: pn kwie 12, 2021 9:03 pm
lukfud pisze: pt kwie 09, 2021 6:46 pm Jakie Waszym zdaniem są najlepiej dobrane wartości dla "repeatOnHoldEvery" i "setStep" przy ściemnianiu / rozjaśnianiu ?.
Ustawiłem "repeatOnHoldEvery(35)" i "setStep(1)", co wydaje mi się optymalną szybkością bez "klatkowania" przy niskim natężeniu.
Gdzie to jest.
Bo chciałbym sobie przetestować.
Szukam ...
https://github.com/krycha88/GUI-Generic ... I.cpp#L286
dodaj jeszcze:

Kod: Zaznacz cały

button->setStep(1);
https://www.facebook.com/groups/supladiy/
ODPOWIEDZ

Wróć do „Arduino IDE”