Zum Inhalt springen
Arduino Digital In Taster

Digital In

    Um ein digitales Signal zu erfassen (Schalter, Taster, usw.), erweitert man die Schaltung um einen Taster. Die eine Seite des Tasters wird mit dem GND des Arduino-Board verbunden, die andere Seite mit dem digitalen Pin 2.

    Im Code schalten wir am Pin 2 den so genannten Pull-Up Widerstand hinzu. Er wird benötigt, um Spannungsschwankungen und Störsignale herauszufiltern. Alle störenden Ströme werden somit über diesen internen Widerstand in den 5V+ geführt. Ist der Taster nicht gedrückt, liegt am Pin 2 jetzt ein 5V+-Signal an (HIGH), drückt man den Taster, so liegt ein GND Signal an (LOW).

    Code für den Digital In vom Arduino

    const int buttonPin = 2;
    const int ledPin =  13;
    int buttonState = 0;
    
    void setup() {
      pinMode(ledPin, OUTPUT);
      pinMode(buttonPin, INPUT_PULLUP);
    }
    
    void loop(){
      buttonState = digitalRead(buttonPin);
      if (buttonState == LOW) {
        digitalWrite(ledPin, HIGH);
      } else {
        digitalWrite(ledPin, LOW);
      }
    }

    Am Anfang werden drei ganzzahlige Variablen buttonPin, ledPin und buttonState erzeugt. Dabei sind die ersten beiden unveränderlich (Schlüsselwort const für Konstante). Die Variable buttonState wird verwendet, um den aktuellen Zustand des Tasters zu speichern.


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    const int buttonPin = 2;
    const int ledPin =  13;
    int buttonState = 0;

    Im Setup bekommt der ledPin die Funktion eines Outputs, der buttonPin die eines Inputs mit zugeschaltetem Pull-Up-Widerstand.

    pinMode(ledPin, OUTPUT);
    pinMode(buttonPin, INPUT_PULLUP);

    Im Loop wird der Variable buttonState mit dem Befehl = digitalRead(buttonPin) der aktuelle Zustand des Buttons übergeben (entweder HIGH oder LOW).

    buttonState = digitalRead(buttonPin);

    Durch eine if-Abfrage (Alle Anweisungen innerhalb der if-Abfrage werden nur ausgeführt, wenn die in Klammern angegebene Bedingung zutrifft.) wird die LED am ledPin eingeschaltet, also wenn buttonState LOW ist, sonst (else) wird sie abgeschaltet.

    if (buttonState == LOW) {
        digitalWrite(ledPin, HIGH);
      } else {
        digitalWrite(ledPin, LOW);
      }
    }

    35 Gedanken zu „Digital In“

    1. Hallo Stefan,
      vielen Dank für die schnelle Info. Werde das natürlich bald testen und Bescheid geben ;)

      Andree

    2. Hi hätte da mal ne Frage:
      Angenommen ich habe eine Platine die mir zb. bei einem Ereignis eine Led anschaltet bzw ausschaltet. Nun hat diese Platine aber eben nur die 3 Volt Ausgang die die Led braucht. Ist es nun möglich mit dem Arduino den Schaltzustand der Led auszulesen und dann etwas anderes schaltet? Also Led externe Platine an- Arduino schaltet Motor an und umgekehrt?

      Vielen Dank in voraus
      Andree

    3. Hi Anja,

      sorry für die späte Antwort. Klar, das kannst Du machen. Das passiert in der Programmierung. Du zählst einfach die Millisekunden von dem Zeitpunkt, wenn der Taster gedrückt wird, bis zu dem Zeitpunkt, bis der Taster losgelassen wirst.

      Liebe Grüße

      Stefan”

    4. Kann man einen Servo auslösen, indem man den Taster mehrmals hintereinander drückt? Also eine Aktion soll erst ausgelöst werden, wenn man sozusagen die Taster entweder öfters hintereinander drückt und lange gedrückt hält.
      Bitte um Hilfe. Danke.

    5. @Reiner: Naja, wenn ich in Deutsch gut gewesen wäre, hättest Du jetzt meine Romane lesen müssen und keine Tutorials zu Elektronik ;-)
      Egal: Kritik angenommen, geschalten in geschaltet geändert – auf dieser Seite jedenfalls.

    6. @Sharky: Da brauchst Du noch eine Variable, die überprüft, ob der Schalter schon mal losgelassen wurde, bevor das erneute Drücken gezählt wird und eine zweite, die – klar – zählt.

    7. Hab mal ne frage und zwar, wie ich kann ich die das Drücken auf dem Taster zählen?
      Geht darum um Zahlen für einen Taster in das Programm zu bekommen… 2 mal Drücken auf dem Taster soll dann eine 2 der Variable x zugewiesen werden

    8. Da mein Arduino Nano fest verbaut ist, kann ich es momentan nicht einfach so Testen.
      Werde mir aber noch ein zum testen zulegen.

    Die Kommentarfunktion ist deaktiviert.