Arduino Polska Forum
Wykrywanie zbocza narastającego/opadającego - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino)
+--- Wątek: Wykrywanie zbocza narastającego/opadającego (/watek-wykrywanie-zbocza-narastaj%C4%85cego-opadaj%C4%85cego)



Wykrywanie zbocza narastającego/opadającego - Scislov - 09-07-2018

Czy istnieje jakaś biblioteka, dzięki której w prosty sposób można wykryć zbocza narastające/opadające przy pomocy jednego polecenia? Wiem jak to zrobić "manualnie", lecz zależy mi na czytelności kodu.


RE: Wykrywanie zbocza narastającego/opadającego - kaczakat - 09-07-2018

Ta biblioteka nazywa się Arduino i robi się jednym poleceniem "attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE)". Jak to robisz manualnie?


RE: Wykrywanie zbocza narastającego/opadającego - Scislov - 09-07-2018

Można tę funkcję zastosować do dowolnego pinu w arduino uno? Bo gdzieś czytałem, że funkcja ta dotyczy tylko 2 i 3 pinu w uno. Jest mi to potrzebne do wykonania klawiatury, wcześniej realizowałem to przy pomocy funkcji if, lecz to wymaga zastosowania dodatkowej zmiennej dla każdego przycisku oraz dodawania else po każdym if-ie, co pogarszało czytelność i zajmowało więcej pamięci. Jeśli chcesz mogę wysłać tę funkcję.


RE: Wykrywanie zbocza narastającego/opadającego - kaczakat - 09-07-2018

Pytałeś o zbocza, jest to wykonywane w przerwaniu sprzętowym bo trwa nanosekundy. W UNO faktycznie są tylko dwa na wspomnianych pinach. To czego szukasz to obsługa klawiatury, wciśnięcie przycisku trwa milisekundy i przerwania nie są do tego niezbędne. Można to sobie zrobić funkcją millis() tworząc swoje funkcje/klasy, biblioteką debounce2 (jest takich dużo) lub biblioteką do klawiatury matrycowej - szukaj arduino matrix keypad. Chodzi Ci o moment wciśnięcia, długość trzymania i moment puszczenia? Są też procesory mające więcej przerwań (DUE ma pierdylion), jeśli się upierasz: https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/ .


RE: Wykrywanie zbocza narastającego/opadającego - es2 - 10-07-2018

Jeśli chcesz wykrywać sprzętowo oba zbocza to używasz przerwania PCIE. Jeśli jedno to INTx. PCIE może wywoływać funkcję gdy wystąpi jedno ze zboczy, trzeba tylko sprawdzić stan pinu wejściowego. Jeśli impuls będzie krótki to ta metoda może być zawodna.