Przycisk/Button z dodatkowymi zdarzeniami (wielokliki, przytrzymanie i inne)

User avatar
lukfud
Posts: 2117
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

klew wrote: Fri Nov 13, 2020 10:43 am
Mógłbyś sprawdzić, czy nie ma błędu w bibliotece (pullup i invert logic).
Poniższe konfiguracje działają prawidłowo, na naciśnięcie:

Code: Select all

button = new Supla::Control::Button(pin, true, true);
button->setMulticlickTime(time);
button->addAction(Supla::TOGGLE, relay, Supla::ON_CLICK_1);
----
button = new Supla::Control::Button(pin, true, true);
button->addAction(Supla::TOGGLE, relay, Supla::ON_PRESS);
----
button = new Supla::Control::Button(pin);
button->addAction(Supla::TOGGLE, relay, Supla::ON_PRESS);
ale ta już niestety nie (chyba, że należy coś jeszcze ustawić), reaguje na puszczenie, a nie na naciśnięcie.

Code: Select all

button = new Supla::Control::Button(pin);
button->setMulticlickTime(time);
button->addAction(Supla::TOGGLE, relay, Supla::ON_CLICK_1);
https://www.facebook.com/groups/supladiy/
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

lukfud wrote: Tue Dec 29, 2020 10:49 am Mógłbyś sprawdzić, czy nie ma błędu w bibliotece (pullup i invert logic).
Poniższe konfiguracje działają prawidłowo, na naciśnięcie:
Bez podania parametrów, używane jest domyślne pullup=false, invert=false.
Przy takim ustawieniu powinieneś mieć "sprzętowo" zrobiony pulldown (tak, aby był stan "LOW" normalnie, i po wciśnięciu powinno dawać stan HIGH (czyli zwierać do 3,3/5 V)

Jak masz fizycznie ustawiony ten przycisk?
Widzimy się na Supla Offline Party vol. 2 :!:
User avatar
lukfud
Posts: 2117
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

klew wrote: Tue Dec 29, 2020 11:34 am Jak masz fizycznie ustawiony ten przycisk?
You do not have the required permissions to view the files attached to this post.
https://www.facebook.com/groups/supladiy/
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

lukfud wrote: Tue Dec 29, 2020 11:41 am
klew wrote: Tue Dec 29, 2020 11:34 am Jak masz fizycznie ustawiony ten przycisk?
Ok, z tego co czytam, to nie powinno się tam dawać pullupa oraz przy zwarciu SW do L/N na GPIO5 dostajemy HIGH. Powinno więc działać z tymi ustawieniami (pullup=false, invert=false).

Co nie działa przy dodaniu wieloklików?
Widzimy się na Supla Offline Party vol. 2 :!:
User avatar
lukfud
Posts: 2117
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

klew wrote: Tue Dec 29, 2020 12:49 pm Co nie działa przy dodaniu wieloklików?
Poniżej info od Łukasza,
Lucas wrote: Wed Dec 23, 2020 1:01 pm Sprawdziłem. Reakcja zawsze następuje z chwilą puszczenia przycisku. Opóźnienie, o którym piszesz następuje, ale po zwolnieniu przycisku. Jeśli ustawię czas kliku 1s, to reakcja będzie sekundę po zwolnieniu przycisku.
Lucas wrote: Tue Dec 29, 2020 8:32 am Odnośnie Shelly1, sprawdziłem przed chwilą jak zachowuje się po wyłączeniu linków w konfiguracji. Teraz zachowuje się zgodnie z ustawieniami, czyli reaguje na naciśnięcie.
co jest wynikiem poniższego if'a:

Code: Select all

if (dl_on == 1) {
  button_[btn_relay_number]->setMulticlickTime(click_time);
  button_[btn_relay_number]->addAction(Supla::TOGGLE, *relay_[btn_relay_number], Supla::ON_CLICK_1);
} else {
  button_[btn_relay_number]->addAction(Supla::TOGGLE, *relay_[btn_relay_number], Supla::ON_PRESS);
}
https://www.facebook.com/groups/supladiy/
User avatar
Lucas
Posts: 835
Joined: Mon Jul 31, 2017 7:11 am
Location: Chrzanów

Post

klew wrote: Tue Dec 29, 2020 12:49 pm Co nie działa przy dodaniu wieloklików?
Krzysiek, po włączeniu obsługi linków przycisk zewnętrzny podłączony do Shelly1 zawsze reaguje na zwolnienie - niezależnie od tego, co jest ustawione w konfiguracji.
Po wyłączeniu linków w konfiguracji przycisk zachowuje się zgodnie z ustawienia, czyli np. reaguje na przyciśnięcie.
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

lukfud wrote: Tue Dec 29, 2020 1:09 pm
klew wrote: Tue Dec 29, 2020 12:49 pm Co nie działa przy dodaniu wieloklików?
Poniżej info od Łukasza,
Lucas wrote: Wed Dec 23, 2020 1:01 pm Sprawdziłem. Reakcja zawsze następuje z chwilą puszczenia przycisku. Opóźnienie, o którym piszesz następuje, ale po zwolnieniu przycisku. Jeśli ustawię czas kliku 1s, to reakcja będzie sekundę po zwolnieniu przycisku.
Lucas wrote: Tue Dec 29, 2020 8:32 am Odnośnie Shelly1, sprawdziłem przed chwilą jak zachowuje się po wyłączeniu linków w konfiguracji. Teraz zachowuje się zgodnie z ustawieniami, czyli reaguje na naciśnięcie.
co jest wynikiem poniższego if'a:

Code: Select all

if (dl_on == 1) {
  button_[btn_relay_number]->setMulticlickTime(click_time);
  button_[btn_relay_number]->addAction(Supla::TOGGLE, *relay_[btn_relay_number], Supla::ON_CLICK_1);
} else {
  button_[btn_relay_number]->addAction(Supla::TOGGLE, *relay_[btn_relay_number], Supla::ON_PRESS);
}
Czas liczony na wieloklik jest dopiero po zwolnieniu przycisku. Tzn. jeśli czas wielokliku to 0,5 s, to ON_CLICK_1 pojawi się 0,5 s po zwolnieniu przycisku po pierwszym jego wciśnięciu.
Nie można wcześniej wysłać "ON_CLICK_1", bo nie wiemy czy nie będzie drugiego kliknięcia dopóki te 0,5 s nie minie.
Widzimy się na Supla Offline Party vol. 2 :!:
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Lucas wrote: Tue Dec 29, 2020 1:20 pm
klew wrote: Tue Dec 29, 2020 12:49 pm Co nie działa przy dodaniu wieloklików?
Krzysiek, po włączeniu obsługi linków przycisk zewnętrzny podłączony do Shelly1 zawsze reaguje na zwolnienie - niezależnie od tego, co jest ustawione w konfiguracji.
Po wyłączeniu linków w konfiguracji przycisk zachowuje się zgodnie z ustawienia, czyli np. reaguje na przyciśnięcie.
Jeśli włączenie "linków" powoduje włączenie wieloklików na przycisku, to jest to prawidłowe zachowanie samego przycisku. Reakcja na "ON_PRESS" przy włączonych wieloklikach jest bez sensu, bo wyzwolenie ON_CLICK_4 będzie po drodze generowało 4x ON_PRESS.
Widzimy się na Supla Offline Party vol. 2 :!:
User avatar
lukfud
Posts: 2117
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

klew wrote: Tue Dec 29, 2020 1:25 pm Czas liczony na wieloklik jest dopiero po zwolnieniu przycisku. Tzn. jeśli czas wielokliku to 0,5 s, to ON_CLICK_1 pojawi się 0,5 s po zwolnieniu przycisku po pierwszym jego wciśnięciu.
Nie można wcześniej wysłać "ON_CLICK_1", bo nie wiemy czy nie będzie drugiego kliknięcia dopóki te 0,5 s nie minie.
Ok, już wszystko jasne, wybacz za zamieszanie.
Wydawało mi się, że jak w przypadku ON_HOLD timer rusza w momencie wciśnięcia.

Reasumując, wieloklik to ON_RELEASE w odczuciu i wszytko działa prawidłowo.
https://www.facebook.com/groups/supladiy/
User avatar
Lucas
Posts: 835
Joined: Mon Jul 31, 2017 7:11 am
Location: Chrzanów

Post

I wszystko jasne. Mnie to tak nie przeszkadza, bo mam jeszcze kilka modułów, które działają na puszczenie przycisku. Domownicy przyzwyczajeni. Bardziej ważne są dla mnie wielokliki.

Return to “Arduino IDE”