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

Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

klew pisze: pt lis 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:

Kod: Zaznacz cały

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.

Kod: Zaznacz cały

button = new Supla::Control::Button(pin);
button->setMulticlickTime(time);
button->addAction(Supla::TOGGLE, relay, Supla::ON_CLICK_1);
https://www.facebook.com/groups/supladiy/
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

lukfud pisze: wt gru 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 :!:
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

klew pisze: wt gru 29, 2020 11:34 am Jak masz fizycznie ustawiony ten przycisk?
Załączniki
shelly1_pinout.jpg
shelly1_pinout.jpg (280.94 KiB) Przejrzano 2207 razy
https://www.facebook.com/groups/supladiy/
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

lukfud pisze: wt gru 29, 2020 11:41 am
klew pisze: wt gru 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 :!:
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

klew pisze: wt gru 29, 2020 12:49 pm Co nie działa przy dodaniu wieloklików?
Poniżej info od Łukasza,
Lucas pisze: śr gru 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 pisze: wt gru 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:

Kod: Zaznacz cały

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/
Awatar użytkownika
Lucas
Posty: 833
Rejestracja: pn lip 31, 2017 7:11 am
Lokalizacja: Chrzanów

klew pisze: wt gru 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.
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

lukfud pisze: wt gru 29, 2020 1:09 pm
klew pisze: wt gru 29, 2020 12:49 pm Co nie działa przy dodaniu wieloklików?
Poniżej info od Łukasza,
Lucas pisze: śr gru 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 pisze: wt gru 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:

Kod: Zaznacz cały

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 :!:
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Lucas pisze: wt gru 29, 2020 1:20 pm
klew pisze: wt gru 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 :!:
Awatar użytkownika
lukfud
Posty: 2091
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

klew pisze: wt gru 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/
Awatar użytkownika
Lucas
Posty: 833
Rejestracja: pn lip 31, 2017 7:11 am
Lokalizacja: Chrzanów

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.
ODPOWIEDZ

Wróć do „Arduino IDE”