fbpx

Obsługa przycisku – IoT

Opublikowane przez Jerzy Wickowski w dniu

Podstawową rzeczą, w jakimkolwiek urządzeniu, jest przycisk. Jest to najprostszy interfejs do komunikacji z wszelkiej maści ustrojstwami. Czy można sobie wyobrazić działania którejkolwiek z maszyn, bez guzików? Można, tylko po co? Zatem poniżej przedstawię jak wygląda podpięcie i obsługa przycisku.

Podłączenie

Do aktualnego ćwiczenia będzie potrzebne:

  • Mikrokontoller
  • Dioda LED
  • Rezystor 220 omów
  • Przycisk
  • Kabelki/zworki
  • Płytka stykowa

W moim przykładzie chcę podpiąć przycisk podpiąć pod PIN D3(0), a diodę pod D2(4). Przykład na zdjęciach:

Kod

Poniższy fragment aplikacji dzieli się na dwa kluczowe segmenty: setup oraz loop. W setupie ustawiam w jakim trybie poszczególne piny powinny pracować, oraz upewniam się, że dioda na jest wyłączona.
Następnie czytam stan guzika sprawdzam, czy nastąpiła zmiana ze stanu LOW na HIGH. Jeżeli tak to znaczy, że przycisk został zwolniony i chcę zminić stan diody.

#include 

#define LED 04
#define BUTTON_TOP 0

bool previousButtonState;
bool ledState = LOW;

void setup()
{
  pinMode(LED, OUTPUT);
  pinMode(BUTTON_TOP, INPUT);
  digitalWrite(LED, ledState);
}

void loop()
{
  bool buttonState = digitalRead(BUTTON_TOP);
  if(previousButtonState == LOW && buttonState == HIGH)
  {
    ledState = !ledState;
    digitalWrite(LED, ledState);
  }

  previousButtonState = buttonState;
}

Bouncing

Na pierwszy rzut oka kod wydaje się być w porządku. Jednak ma on wadę, a mianowicie brakuje mu zabezpieczenia przed bouncingiem. Co to jest bouncing i jak się go pozbyć. Już wkrótce.



Czy to był wartościowy artykuł? Zapisz się, a wyślę Ci dwa ebooki o czystym kodzie oraz będę informował Cię o nowych postach

0 Komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany.

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

[contact-form-7 404 "Nie znaleziono"]

Zapisz się

Wyślę Ci dwa dokumenty mówiące o jakości kodu. Dodatkowo będę Cię informował o nowych postach i nowościach.