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

lukfud
Posty: 658
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

czw lis 19, 2020 8:02 am

klew pisze:
czw lis 19, 2020 7:53 am
lukfud pisze:
czw lis 19, 2020 7:32 am
Nieskromnie przypomnę się odnośnie wielokliku na bistabilnym ;)
Czy chodzi o "ON_CHANGE_AFTER_MULTICLICK" z priva?
Próbuję analizować nasza rozmowę i nie mogę sobie przypomnieć co to miałoby dać ;).
Tak,
Wykonanie akcji po X przełączeniach bez zmian stanu przekaźnika (migania światłem w moim przypadku) :)
Awatar użytkownika
klew
Posty: 1529
Rejestracja: czw cze 27, 2019 12:16 pm

czw lis 19, 2020 8:11 am

lukfud pisze:
czw lis 19, 2020 8:02 am
klew pisze:
czw lis 19, 2020 7:53 am
lukfud pisze:
czw lis 19, 2020 7:32 am
Nieskromnie przypomnę się odnośnie wielokliku na bistabilnym ;)
Czy chodzi o "ON_CHANGE_AFTER_MULTICLICK" z priva?
Próbuję analizować nasza rozmowę i nie mogę sobie przypomnieć co to miałoby dać ;).
Tak,
Wykonanie akcji po X przełączeniach bez zmian stanu przekaźnika (migania światłem w moim przypadku) :)
A czemu nie wystarczyłby ON_CLICK_1 ? Wtedy nie będzie mrugać, przy zliczaniu do ON_CLICK_x, a jak raz klikniesz, to przełączy światło
lukfud
Posty: 658
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

czw lis 19, 2020 8:25 am

klew pisze:
czw lis 19, 2020 8:11 am
A czemu nie wystarczyłby ON_CLICK_1 ? Wtedy nie będzie mrugać, przy zliczaniu do ON_CLICK_x, a jak raz klikniesz, to przełączy światło
Ok, czyli miało by to wyglądać tak ?

Kod: Zaznacz cały

button_[btn_relay_number]->setMulticlickTime(350, true);
button_[btn_relay_number]->addAction(Supla::TOGGLE, *relay_[btn_relay_number], Supla::ON_CLICK_1);
customActionsClass *custBtn = new customActionsClass;
button_[btn_relay_number]->addAction(ACTION_ON_7_CHANGES, *custBtn, Supla::ON_CLICK_7);
Awatar użytkownika
klew
Posty: 1529
Rejestracja: czw cze 27, 2019 12:16 pm

czw lis 19, 2020 8:41 am

lukfud pisze:
czw lis 19, 2020 8:25 am
klew pisze:
czw lis 19, 2020 8:11 am
A czemu nie wystarczyłby ON_CLICK_1 ? Wtedy nie będzie mrugać, przy zliczaniu do ON_CLICK_x, a jak raz klikniesz, to przełączy światło
Ok, czyli miało by to wyglądać tak ?

Kod: Zaznacz cały

button_[btn_relay_number]->setMulticlickTime(350, true);
button_[btn_relay_number]->addAction(Supla::TOGGLE, *relay_[btn_relay_number], Supla::ON_CLICK_1);
customActionsClass *custBtn = new customActionsClass;
button_[btn_relay_number]->addAction(ACTION_ON_7_CHANGES, *custBtn, Supla::ON_CLICK_7);
Tak.

PS: nie trzeba już dawać * przy środkowym parametrze w addAction. Teraz można podawać wskaźnik lub referencje na obiekt - oba sposoby będą działać
lukfud
Posty: 658
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

czw lis 19, 2020 8:47 am

klew pisze:
czw lis 19, 2020 8:41 am
Tak.

PS: nie trzeba już dawać * przy środkowym parametrze w addAction. Teraz można podawać wskaźnik lub referencje na obiekt - oba sposoby będą działać
Brnąc w innym kierunku nie załapałem, że można zamienić ON_CHANGE na ON_CLICK_1, dzięki :)

Ok, sprawdzę to.
Awatar użytkownika
klew
Posty: 1529
Rejestracja: czw cze 27, 2019 12:16 pm

pt lis 20, 2020 9:45 pm

elmaya pisze:
pn lis 16, 2020 10:11 am
Button should use IO to read the state of the Pin.
Button classes moved to Supla::Io. BTW. I also added "pinMode" to Supla::Io class.
lukfud pisze:
pn lis 16, 2020 9:56 am
ON_HOLD się nie wykonuje, tylko samo ON_RELEASE i podczas startu nie trzymam przycisku.
Może połączenie ON_CLICK i ON_RELEASE nie do końca pasuje, sprawdzę to jeszcze dokładnie.
ON_HOLD jest już poprawiony.

Wydzieliłem też SimpleButton z klasy Button.
SimpleButton jest odpowiednikiem starego Buttona. Powstał głównie z myślą o Arduino Mega, gdzie mamy do dyspozycji niewiele pamięci i przy większej ilości rolet, przyciski mogłby zjeść całą pamięć.
bigthomas
Posty: 112
Rejestracja: pn sie 12, 2019 3:35 pm

czw lis 26, 2020 9:50 pm

A czy jest możliwość aby po jednorazowym naciśnięciu przycisku przekaźnik uruchomił się X razy?
Czyli przycisk wysyłał by akcję włącz/wyłącz X razy do przekaźnika.

:)
Awatar użytkownika
klew
Posty: 1529
Rejestracja: czw cze 27, 2019 12:16 pm

czw lis 26, 2020 10:50 pm

bigthomas pisze:
czw lis 26, 2020 9:50 pm
A czy jest możliwość aby po jednorazowym naciśnięciu przycisku przekaźnik uruchomił się X razy?
Czyli przycisk wysyłał by akcję włącz/wyłącz X razy do przekaźnika.

:)
Raczej nie robiłbym tego w samym przycisku, bo to dość egzotyczne zachowanie. Co dokładnie chcesz osiągnąć?
bigthomas
Posty: 112
Rejestracja: pn sie 12, 2019 3:35 pm

czw lis 26, 2020 11:13 pm

klew pisze:
czw lis 26, 2020 10:50 pm
Żeby po naciśnięciu raz buttona przekaźnik uruchomił się dwa razy z przerwą powiedzmy 1 sekundową :)
Awatar użytkownika
klew
Posty: 1529
Rejestracja: czw cze 27, 2019 12:16 pm

pt lis 27, 2020 8:32 am

bigthomas pisze:
czw lis 26, 2020 11:13 pm
klew pisze:
czw lis 26, 2020 10:50 pm
Żeby po naciśnięciu raz buttona przekaźnik uruchomił się dwa razy z przerwą powiedzmy 1 sekundową :)
Możesz spróbować użyć klasy BistableButton i ustawić tam włącznik schodowy i czas 1 s
ODPOWIEDZ

Wróć do „Arduino IDE”