smarthome-tricks.de

ESP8266 – 4×4 Tastatur an analogen Pin verwenden

In diesem Artikel zeige ich Dir, wie Du eine 4×4 Tastatur an einem analogen Port des ESP8266 verwenden kannst.

Für ein Hardware-Projekt suchte ich nach einer Lösung, wir eine Tastatur mit maximal 16 Tasten Port-sparend an einem Arduino Mikrocontroller angeschlossen werden kann. Im Artikel zeige ich Dir die dabei entstandene Platine, welche mit drei Pins (VIN, GND, A0) an einen Arduino Mikrocontroller angeschlossen werden kann.

Verwende Bauteile

Schaltbild und Platine

Im folgenden Schaltbild zeige ich Dir den Aufbau der Schaltung. Bei der Schaltung handelt es sich um ein Spannungsteilernetz. Mit 7 verschiedenen Widerständen (4,7K und 1K) können hier die Tasten identifiziert werden.

Die Platine kann hier im Shop erworben werden.

Der Aufbau der Schaltung ist hierbei mit der Platine denkbar einfach. Hierzu werden die Pins A0, VIN und GND mit dem Arduino Mikrocontroller verbunden. In meinem Fall verwende ich einen ESP8266 Mikrocontroller.

Sketch und Erklärung

Im Sketch wird mittels der analogRead() Funktion der Wert des analogen Pins A0 gelesen. Der Wert liegt zwischen 0 und 1024. Im nächsten Schritt wird der Wert abgefragt und dadurch die gedrückte Taste der Tastatur identifiziert. Die Werte im Sketch basieren auf einem Versuch mit 3V und können daher bei einer Spannung von 5V abweichen.

String lastKey;

void setup() {
    Serial.begin(9600);

    lastKey = "";
}

void loop() {
 int temp = analogRead(A0);

  if ( temp > 0 ) { 
    String statusNr = "";

    if ( temp > 900 ) {
      statusNr = "1";
    } else if (temp > 500 && temp < 520) {
      statusNr = "2";
    } else if (temp > 320 && temp < 355) {
      statusNr = "3";
    } else if (temp > 175 && temp < 195) {
      statusNr = "4";
    } else if (temp > 160 && temp < 170) {
      statusNr = "5";
    } else if (temp > 135 && temp < 150) {
      statusNr = "6";
    } else if (temp > 100 && temp < 110) {
      statusNr = "7";
    } else if (temp > 95 && temp < 100) {
      statusNr = "8";
    } else if (temp > 85 && temp < 94) {
      statusNr = "9";
    } else if (temp > 65 && temp < 70) {
      statusNr = "0";
    } else if (temp > 260 && temp < 270) {
      statusNr = "A";      
    } else if (temp > 110 && temp < 130) {
      statusNr = "B";  
    } else if (temp > 80 && temp < 90) {
      statusNr = "C";     
    } else if (temp > 60 && temp < 65) {
      statusNr = "D";     
    } else if (temp > 70 && temp < 80) {
      statusNr = "*";                          
    } else if (temp > 65 && temp < 70) {
      statusNr = "#";                          
    }

    if ( statusNr != "" ) {
      if ( lastKey != statusNr ) {
          Serial.print("A0:");      
          Serial.println(temp);
          
          Serial.print("Key pressed: ");      
          Serial.println(statusNr);
          lastKey = statusNr;
      }
    }
  }
}

Ich hoffe euch gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Die mobile Version verlassen