Konstanten

[Konstanten]

Beschreibung

Konstanten sind vordefinierte Ausdrücke der Arduinosprache. Sie werden benutzt, um Programmcode leichter lesbar zu machen. Die Konstanten könnein Gruppen unterteilt werden:

Logische Level: true und false (Booleankonstanten)

Um Wahr- und Falschwerte darzustellen, sind in der Arduinosprache 2 Konstanten definiert: true und false.

false

false ist die einfacher zu definierende Konstante. false ist 0 (Null).

true

Häufig wird behauptet, dass true als 1 definiert ist. Das ist zwar richtig, allerdings hat true eine weiterreichende Definition. Jeder Integer, der nicht 0 (Null) ist, ist true im Booleanzusammenhang. D.h. -1, -2 und -200 sind auch true.

true und false werden im Gegensatz zu HIGH, LOW, INPUT, und OUTPUT klein geschrieben.

Pinlevel: HIGH und LOW

Wenn von einem Digitalpin gelesen oder auf einen Digitalpin geschrieben wird, gibt es nur 2 Möglichkeiten: HIGH und LOW.

HIGH

Die Bedeutung von HIGH (In Bezug auf den Pin) ist unterschiedlich, je nachdem, ob der Pin als INPUT oder OUTPUT definiert ist. Wenn ein Pin als INPUT mit pinMode() definiert wird und mit digitalRead() gelesen wird, gibt der Arduino (ATmega) HIGH zurück, wenn:

  • eine Spannung größer als 3,0V an dem Pin anliegt (5V-Boards)

  • eine Spannung größer als 2,0V an dem Pin anliegt (3,3V-Boards)

Ein Pin kann mit pinMode() auch als INPUT definiert werden und mit digitalWrite() auf HIGH gesetzt werden. Das aktiviert den internen 20K-Pullup-Widerstand, welcher den Inputpin auf HIGH zieht, bis dieser von extern wieder auf LOW gesetzt wird. So funktioniert auch INPUT_PULLUP. Die genaue Definition davon findest du weiter unten.

Wenn ein Pin mit pinMode() als OUTPUT definiert wird und mit digitalWrite() auf HIGH gesetzt wird, liegen an dem Pin:

  • 5V an (5V-Boards)

  • 3,3V an (3,3V-Boards)

In diesem Zustand kann z.B. eine LED angeschaltet werden, die über einen Vorschaltwiderstand auf Masse verbunden ist.

LOW

Die Bedeutung von LOW (In Bezug auf den Pin) ist ebenfalls unterschiedlich, je nachdem, ob der Pin als INPUT oder OUTPUT definiert ist. Wenn ein Pin als INPUT mit pinMode() definiert wird und mit digitalRead() gelesen wird, gibt der Arduino (ATmega) LOW zurück, wenn:

  • eine Spannung kleiner als 1,5V an dem Pin anliegt (5V-Boards)

  • eine Spannung kleiner als 1,0V (circa) an dem Pin anliegt (3,3V-Boards)

Wenn ein Pin mit pinMode() als OUTPUT definiert wird und mit digitalWrite() auf LOW gesetzt wird, liegen an ihm 0V an (Auf 5V- und 3,3V-Boards).

In diesem Zustand kann z.B. eine LED ausgeschaltet werden, die über einen Vorschaltwiderstand auf Masse verbunden ist.

Digitale Pinmodi: INPUT, INPUT_PULLUP, und OUTPUT

Digitalpins können als INPUT, INPUT_PULLUP, oder OUTPUT genutzt werden. Wenn ein Pin mit pinMode() auf einen anderen Modus umgeschalten wird, ändert sich dessen elektrisches Verhalten.

INPUT

Arduino (ATmega)-Pins, die mit pinMode() als INPUT definiert werden, sind in einem hochohmigen Zustand. Inputpins stellen sehr geringe Zusatzanforderungen an die Schaltung, die sie benutzen. Lediglich ein Vorschaltwiderstand von 100MOhm vor dem Pin ist nötig. Das macht sie sehr nützlich, um Sensoren auszulesen.

Wenn ein Pin als INPUT definiert ist und einen Schalter einliest, wird der Inputpin unvorhersehbare Ergebnisse liefern, wenn der Schalter offen ist. Um ein korrektes Einlesen zu garantieren, wenn der Schalter offen ist, muss ein Pullup- oder Pulldown-Widerstand benutzt werden. Der Sinn davon ist es, den Schalter auf einen validen Zustand zu ziehen, wenn er offen ist. Üblicherweise wird dazu ein 10KOhm-Widerstand verwendet, da dieser klein genug ist, um die schwankenden Messwerte zu verhindern und zusätzlich groß genug, um nicht zu viel Spannung auf die Schaltung zu schicken, wenn der Schalter geschlossen wird. Siehe auch das Digital Read Serial-Tutorial für weitere Informationen.

Wenn ein Pulldown-Widerstand benutzt wird, ist der Zustand des Schalters LOW, wenn der Schalter offen ist und HIGH, wenn der Schalter geschlossen ist.

Wenn ein Pulldown-Widerstand benutzt wird, ist der Zustand des Schalters HIGH, wenn der Schalter offen ist und LOW, wenn der Schalter geschlossen ist.

INPUT_PULLUP

Der ATmega-Mikrocontroller auf dem Arduino hat interne Pullup-Widerstände, auf die zugegriffen werden kann. Wenn du diese statt externen Pullup-Widerstände verwenden möchtest, kannst du pinMode() mit der Konstante INPUT_PULLUP als Argument verwenden.

Siehe auch das Digital Read Serial-Tutorial für weitere Informationen.

Pins, die als INPUT oder INPUT_PULLUP definiert sind, können beschädigt oder zerstört werden, wenn diese Spannungen ausgesetzt werden, die negativ sind oder über der maximalen Spannungsversorgung des Mikrocontrollers liegen (5V oder 3,3V).

OUTPUT

Pins, die mit pinMode() als OUTPUT definiert werden, sind in einem niederohmigen Zustand. Das bedeutet, dass sie einen wesentlichen Teil an Spannung an andere Schaltkreise weitergeben können. ATmega-Pins können Strom bis 40 mA aufnehmen oder abgeben. Das macht sie nützlich, um z.B. LEDs zu versorgen, da diese üblicherweise 40 mA nutzen. Motoren z.B. (Alles, das mehr als 40mA benötigt), brauchen dagegen einen Transistor.

Outputpins können beschädigt oder zerstört werden, wenn sie auf Masse oder auf positive Stromschienen verbunden werden.

Defining built-ins: LED_BUILTIN

Die meisten Arduinos haben einen Pin, der eine on-board LED über einen Vorschaltwiderstand ansteuert. Die on-board LED ist über die Konstante LED_BUILTIN ansteuerbar. Die meisten Boards haben die LED auf Digitalpin 13 verbunden.

Siehe auch