Obsługa przycisków w SuplaDevice

Patryk
Posts: 2704
Joined: Mon Jan 07, 2019 7:51 pm
Location: Rybnik

Post

lukfud wrote: Tue Feb 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ć.
User avatar
lukfud
Posts: 2101
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

Patryk wrote: Fri Mar 05, 2021 10:51 am
lukfud wrote: Tue Feb 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
Posts: 2704
Joined: Mon Jan 07, 2019 7:51 pm
Location: Rybnik

Post

Dzięki. :D
Wydawało mi się, że domyślnie jest 100ms, a tu widzę 50ms.
No chyba, że jest gdzieś jeszcze jeden parametr.
User avatar
lukfud
Posts: 2101
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

Patryk wrote: Fri 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/
User avatar
klew
Posts: 8357
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

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 :!:
User avatar
lukfud
Posts: 2101
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

klew wrote: Tue Feb 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 ):

Code: Select all

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
Posts: 19
Joined: Fri Jul 10, 2020 3:50 pm

Post

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:

Code: Select all

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
User avatar
klew
Posts: 8357
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

WinstonW wrote: Mon Apr 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
Posts: 2704
Joined: Mon Jan 07, 2019 7:51 pm
Location: Rybnik

Post

lukfud wrote: Fri Apr 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 ...
User avatar
lukfud
Posts: 2101
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

Patryk wrote: Mon Apr 12, 2021 9:03 pm
lukfud wrote: Fri Apr 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:

Code: Select all

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

Return to “Arduino IDE”