Wie kontrolliert man einen digitalen Stift? Wie kann ich eine Komponente mit digitalWrite und digitalRead kontrollieren?

Das Schreiben oder Lesen von digitalen Pins wird es Ihnen ermöglichen, Ihre Komponenten zu steuern und ihren Zustand abzulesen.

In diesem Kurs werden wir Folgendes sehen:

  • Den Pin als Ein- oder Ausgang konfigurieren (pinMode).
  • Ihre Komponente kontrollieren (digitalWrite).
  • Die Spannung an den Anschlüssen eines Sensors auslesen (digitalRead).

Dies sind die digitalen Pins :

Worauf beziehen sich die „~“?

Wie Sie sehen können, gibt es einige Pins, die eine Welle („~“) aufweisen. Die Welle zeigt an, dass die Pins mit pwm (Pulse width modulation) steuerbar sind. Diese Pins können auf zwei Arten gesteuert werden: mit digitalWrite oder analogWrite.

Mit digitalWrite wird der Pin auf hoch oder niedrig gesteuert, während mit analogWrite die Spannung variiert werden kann, um z. B. eine LED mit halber Leistung einzuschalten.

Pins ohne Welle („~“) können nur mit digitalWrite gesteuert werden.

Was ist der Unterschied zwischen analog und digital?

Ein digitales Signal ist eine Spannung, die zwei Werte annehmen kann: den hohen Zustand (HIGH) oder den niedrigen Zustand (LOW). HIGH entspricht 5 V und LOW 0 V. Dieses Signal ist sehr nützlich, um den Zustand eines Tasters zu erkennen oder um eine LED einzuschalten.

Wenn du deine LED jedoch nur mit der halben Leistung einschalten willst, brauchst du ein analoges Signal.


Dieses kann unendlich viele Werte zwischen 0V und 5V annehmen. Dieses Signal ist nützlich, um genauere Werte zu messen und zu senden, z. B. 0,45 V statt 0 V und 5 V wie bei einem digitalen Signal.

Es gibt einen Analog-Digital-Wandler, der das Signal umwandelt.

pinMode ()

Der PinMode ist eine Funktion, die dem Arduino-Board mitteilt, ob der Pin ein Eingang oder ein Ausgang sein wird. Mit anderen Worten, ob das Arduino-Board auf Werte von einem Sensor warten oder eine Komponente steuern soll.

Der PinMode hat also zwei Parameter, den Namen des Pins und den Modus, ob INPUT oder OUTPUT:

pinMode(pin, mode);

Die Pins auf dem Arduino-Board können von 0 bis 13 reichen (wie in der Abbildung zu sehen). Die Pins 0 und 1 werden jedoch für die UART-Verbindung (TX und RX) verwendet.

Der Modus ist entweder INPUT für einen Eingang oder OUPUT für einen Ausgang.

Hier ein Beispiel, bei dem Pin 10 als Ausgang initialisiert wird:

pinMode(10, OUTPUT);

Hier ein Beispiel, bei dem Pin 5 als Eingang initialisiert wurde :

pinMode(5, INPUT);

digitalWrite ()

Wenn der PinMode auf Ausgang (OUTPUT) eingestellt wurde, dann benötigen Sie digitalWrite, um Ihre Komponente zu steuern. Mit der digitalWrite-Funktion können Sie Ihrer Komponente eine Spannung (3,3 V oder 5 V) zuführen oder sie mit 0 V ausschalten.

Die digitalWrite-Funktion berücksichtigt zwei Parameter: den Pin und den Wert zwischen HIGH (hoch) und LOW (niedrig):

digitalWrite(Pin, Wert);

Hier können wir sehen, dass die Funktion zwei Parameter hat:

  • Pin: 2 bis 13
  • Wert: HIGH (hoher Zustand) oder LOW (niedriger Zustand).

Ein Beispiel für eine Komponente, die auf Pin 7 leuchtet :

digitalWrite(7, HIGH);

Ein weiteres Beispiel für eine ausgeschaltete Komponente auf Pin 10 :

digitalWrite(10, LOW);

Wenn Sie Ihre LED mit dem digitalWrite einschalten, wird sie entweder mit dem Modus HIGH leuchten oder ansonsten ausgeschaltet sein. Wenn Sie Zwischenwerte wünschen, wie sie nur halb leuchten zu lassen, empfehlen wir Ihnen den analogWrite.

digitalRead ()

Mit digitalRead kann man Informationen von einer externen Komponente hören bzw. lesen. Ein Beispiel für die Verwendung wäre die Information, ob ein Druckknopf gedrückt wurde.

Der digitalRead funktioniert nur, wenn Ihr Pin mit dem PinMode als Eingang konfiguriert wurde.

Der digitalRead nimmt als Parameter den Pin, an den die Komponente angeschlossen ist, die Sie auslesen möchten:

digitalRead(pin);

Der digitalRead kann nur zwei mögliche Werte zurückgeben: HIGH oder LOW.

Hier ein Beispiel, bei dem auf Pin 8 gehört wird:

digitalRead(8);

Wenn Sie genauere Werte als HIGH oder LOW wünschen, dann müssen Sie AnalogRead verwenden.