Viele Schalter - 1 Pin

In einem Artikel habe ich eine interessante wie auch einfache Lösung gelesen, wie man viele Taster/Schalter über den Arduino einlesen kann, und dabei nur einen einzigen Pin belegt - ohne dafür zusätzlich Bauteile oder Hardware zu verwenden.

Verwendete Bauteile

Funktionsweise

Die "Magie" hinter diesem kleinen Trick ist die Verwendung eines Spannungsteilers und dem differenzierten Einlesen des analogen Pins, der verwendet wird (siehe Schaltplan). Man erhält beim Drücken jedes Mikrotasters einen anderen Wert am Pin, da jeweils ein anderer Widerstandswert zwischen VCC und dem Pin angelegt ist. Um den Taster zu erkennen, prüft man nun einfach im Bereich, der zu erwarten ist. (Diese Werte müssen experimentell ermittelt werden.)

Aufbau

Schaltplan für multiples Nutzen des Pins
Abb.: Schaltplan für multiples Nutzen des Pins

Sketch

#define PIN_INPUT A1

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

void loop()
{
    int pinValue = analogRead(PIN_INPUT);
    Serial.print("Button ");

    if (pinValue<1024 && pinValue>1015) {
        Serial.print("1");
    } else if (pinValue<550 && pinValue>500) {
        Serial.print("2");
    } else if (pinValue<350 && pinValue>320) {
        Serial.print("3");
    } else if (pinValue<270 && pinValue>240) {
        Serial.print("4");
    } else if (pinValue<220 && pinValue>190) {
        Serial.print("5");
    } else if (pinValue<180 && pinValue>160) {
        Serial.print("6");
    } else if (pinValue<155 && pinValue>130) {
        Serial.print("7");
    }

    Serial.println(": " + String(pinValue));

    delay(100);
}
Ausgabe auf der seriellen Konsole
Abb.: Ausgabe auf der seriellen Konsole: Man sieht, welcher Taster gedrückt wurde und den entsprechenden Eingabewert.
zurück