Arduino Polska Forum

Pełna wersja: Wykrywanie zbocza narastającego/opadającego
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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.
Ta biblioteka nazywa się Arduino i robi się jednym poleceniem "attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE)". Jak to robisz manualnie?
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ę.
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/lang...interrupt/ .
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.