Arduino Mikrocontroller Tutorials

Ein- und Ausgänge (I/O)

Digitale Ausgänge ein- und ausschalten

Digitaler Ausgang

Auf die digitalen Ausgangspins können wir per Software Masse (GND) oder +5V schalten. Der Ausgangsstrom sollte dabei 20mA (kurzfristig maximal 40mA) nicht überschreiten. Es ist auch möglich die analogen Eingänge (A0, A1, A2,...) als digitale Ausgänge zu konfigurieren. Mit pinMode(Ax, OUTPUT).

Im Programmablauf zum Schalten der µC-Pins muss man zunächst mit pinMode(Pin, OUTPUT) den Anschluss als Ausgang definieren. Mit digitalWrite(Pin, HIGH) oder digitalWrite(Pin, LOW) kann dann der Ausgang ein- und ausgeschaltet werden.


Ausgänge mit PWM-Signal verwenden

PWM Signal

Ausgänge die mit einem '~' Zeichen versehen sind werden hardwareseitig (ohne die Rechenleistung dafür zu verbrauchen) sehr schnell geschaltet.

Dieses ein- und ausschalten wird 490 mal (490Hz an Pin 3,9,10,11) bzw. 960 mal pro Sekunde durchgeführt (980Hz an Pin 5,6). Das Verhältnis des eingeschalteten Zustandes zum ausgeschalteten Zustand wird Tastverhältnis (Duty Cycle) genannt und kann zwischen 0 (immer aus) und 255 (immer an) vorgegeben werden. Diese Signalform wird PWM Signal (PulsWeitenModulation) genannt.

Im Programmablauf definiert man zunächst, dass es sich um einen Ausgangspin handelt pinMode(Pin, OUTPUT). Das PWM-Signal selbst wird dann mit analogWrite(Pin, 0-255) aktiviert.


Digitale Eingänge auswerten

Digitaler Eingang

Für die Aus- und Eingänge werden beim Arduino die gleichen Pins verwendet. Es ist daher notwendig die Pins vor der Verwendung entsprechend zu definieren. Die Nutzungsart der Ein- bzw. Ausgänge lässt sich auch während des Programmablaufs jederzeit ändern.
Die Eingange werden zwischen 3,0V...5,5V als HIGH (1) erkannt. Zwischen -0,5V...1,5V erkennt der µC LOW (0).
Der Eingang des Mikrocontrollers ist mit einem sehr großen Widerstand intern auf GND geschaltet. Es fließt daher fast kein Strom, so dass man den Eingang problemlos mit GND oder +5V ohne Kurzschlussgefahr verbinden kann.

Ein Problem des sehr geringen Eingangsstromes ist jedoch, dass kleinste Einflüsse oder Spannungspotentiale den Eingang ungewollt auf HIGH oder LOW schalten können. Diesem kann man entgegenwirken, in dem man den Eingang über einen Widerstand mit +5V oder GND verbindet (PullUp- o. PullDown-Widerstand). So liegt am Ausgang jederzeit ein eindeutiges Potential an. Einen PullUp Widerstand kann man beim Arduino auch per Software hinzuschalten.

Im Programmablauf wird der Anschluss mit pinMode(Pin, INPUT) oder pinMode(Pin, INPUT_PULLUP) als Eingang getauft. Mit digitalRead(Pin) kann der Eingang dann im Programmablauf abgefragt werden.


Analoge Eingänge auswerten

Der Arduino Uno hat 6 analoge Eingänge die eine Spannung zwischen 0V und 5V messen können. Wie die digitalen Eingänge sind auch die analogen mit einem sehr großen Innenwiderstand gegen Masse geschalten. Es fließt also fast kein Strom und der Eingang wird durch die angeschlossenen Sensoren kaum belastet. Durch einen integrierten ADC (Analog Digital Converter) wird die gemessene Spannung mit einer Auflösung von 210 Bit, also 1024 mögliche Werten, gespeichert. Die Genauigkeit ist damit etwa 5mV (5V/1024).

Einen analogen Eingang muss man im Setup nicht definieren. Man kann im Programmablauf mit analogRead(Pin) direkt auf den Eingang zugreifen. Speichern kann man den Messwert in einer 16 Bit int Variablen.