Jak wykryć przycisk Długo naciśnij Arduino

Jak wykryć przycisk Długo naciśnij Arduino
Gdy interfejs ludzki jest wymagany, aby podać wejście do programu Arduino ręcznie różne urządzenia, takie jak klawiatura lub przyciski. Ponadto możemy skonfigurować funkcjonalność takich urządzeń, programując mikrokontroler. Na przykład, kiedy musimy wyłączyć jakieś urządzenie, możemy skonfigurować przycisk, który będzie działał tylko wtedy, gdy zostanie naciśnięty przez dłuższy czas. Ta funkcjonalność jest również używana w smartfonach. Aby wykryć, czy przycisk jest długo naciśnięty, wyjaśniliśmy proces za pomocą małego obwodu i kodu Arduino, który wykrywa, czy przycisk jest naciśnięty przez długi czas.

Wykrywanie długiego stanu naciśnięcia przycisku

Aby dodać funkcjonalność przycisku do funkcjonowania po naciśnięciu przez długi czas, wykonaliśmy prosty obwód, którego schemat obwodu podano poniżej, a następnie komponenty, których użyliśmy do wykonania obwodu.

  • Arduino Uno
  • Łączenie przewodów
  • 1 przycisk
  • Tablica chleba

Zespół sprzętu do wykrywania długiego stanu naciśnięcia przycisku

Aby zobaczyć, jak obwód będzie wyglądał na rzeczywistym sprzęcie, stworzyliśmy zespół sprzętu, który podano poniżej na obrazie.

Jak widać na powyższym obrazku, użyliśmy pinu 8 Arduino do podłączenia go z przyciskiem za pomocą zielonego drutu i za pomocą czarnego przewodu do podłączenia przycisku za pomocą blearu Arduino.

Kod Arduino do wykrywania długiego stanu naciśnięcia przycisku

Aby wykryć długie naciśnięcie przycisku, zaprogramowaliśmy mikrokontroler za pomocą funkcji MILLIS (). Wykryliśmy stan długiego prasy, otrzymując czas, dla którego stan przycisku pozostał wysoki i niski. Następnie obliczyliśmy czas, dla którego przycisk został naciśnięty, a następnie porównaliśmy go ze stałą wartością czasu w oparciu o to, że przycisk został naciśnięty przez długi czas.

W takim przypadku podaliśmy stałą wartość czasu na jedną sekundę, jaką jest 1000 milisekund, ponieważ krótka naciśnij przycisk. Jeśli czas trwania prasy to więcej niż czas na krótki czas prasy, zostanie uznany za długą prasę i będzie wyświetlany na monitor szeregowych. Below we have given the Arduino sketch used to program the controller for detecting the long press state of the push button.

Int Button = 8; /* Pin arduino dla przycisku*/
int Short_Time = 1000; / * Czas, który będzie uważany za krótki czas prasy */
długa on_duration;/ * zmienna, która będzie przechowywać wartość czasu, dla którego przycisk jest naciśnięty */
int poprzedniState = niski; / * Ustawienie początkowego stanu przycisku wysoko, ponieważ używamy trybu input_pullup */
int PresentState; /* Zmienna, która będzie przechowywać obecny stan, jeśli przycisk*/
niepodpisany długi press_time = 0; / * Czas, w którym przycisk został naciśnięty */
niepodpisane długie release_time = 0;/ *czas, w którym przycisk jest wydany */
void setup ()
Seryjny.Rozpocznij (9600);/* dając stawkę transmisji dla seryjnej komunikacji*/
pinmode (przycisk, input_pullup);/* Podanie trybu roboczego do przycisku, który jest input_pullup (przewraca wejścia przycisku)*/

void Loop ()
// Odczytaj stan przełącznika/przycisku:
PresentState = DigitalRead (przycisk);/ * Uzyskanie obecnego stanu przycisku */
if (poprzedniState == High && terentState == Low) / * Jeśli przycisk jest naciśnięty * /
press_time = millis ();/ * Zapisz czas w milisekundach za pomocą funkcji Millis */
else if (poprzedniState == Low && prezentState == High) /* Jeśli przycisk zostanie wydany* /
Release_time = millis ();/ * Zapisz czas, w którym przycisk został wydany */
Long On_Time = Release_time - Press_Time;/* Obliczanie czasu, dla którego przycisk pozostał w niskim stanie*/
if (on_time> short_time) /* Porównując wartość czasu, dla którego przycisk jest naciśnięty do wartości dla krótkiego czasu naciśnięcia* /
Seryjny.println („przycisk jest naciśnięty przez długi czas”);/ * Drukowanie danych na monitorze szeregowym */

poprzedniState = obecny state;/ * Zapisanie wartości bieżącej w poprzedniej wartości */

Demonstracja sprzętowa

Zrobiliśmy obwód na sprzęcie w odpowiednim czasie, który jest omawiany wcześniej, a poniższy obraz pokazuje implementację sprzętową obwodu przycisku, aby wykryć stan naciśnięcia przycisku.

Po naciśnięciu przycisku przez więcej niż jedną sekundę, kod Arduino wyświetla się na monitorze szeregowym, że przycisk jest naciśnięty przez długi czas, jak pokazano na poniższym obrazku:

Wniosek

Znaczenie używania stanu długiego naciśnięcia przycisku jest to, że możesz użyć jednego przycisku, aby wykonać więcej niż jedno zadanie. Aby wyjaśnić, w jaki sposób wykryć długi stan prasowy przycisku, który zaprojektowaliśmy obwód i zaimplementowaliśmy go na rzeczywisty sposób.