Ein- und Ausgänge (I/O)
Digitale Ausgänge ein- und ausschalten
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.
- LED ein- und ausschalten
- Schalten eines Relais
- Schalten eines Transistors
- Schalten eines MOSFETs
- Aktiven Buzzer ansteuern
- Passiven Buzzer ansteuern
Ausgänge mit PWM-Signal verwenden
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.
- Helligkeit einer LED verändern
- Einsatz einer 3-farbigen LED
- LED Dimmer mit zwei Taster
- Gleichspannung regeln mit einem RC-Glied
Digitale Eingänge auswerten
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.
- Schalter (Button) mit externem PullDown Widerstand
- Schalter (Button) mit internem PullUp Widerstand
- Kippschalter (Ball Switch)
- Taster entprellen
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.