Was ist Digitaler Output?
...
Hier eine beispielhafte Schaltung für ein grünes LED. Das Datenblatt der LED gibt den Durchlassstrom mit 2V und die Durchlassspannung mit 25mA an. Dadurch ergibt sich folgende Rechnung:
RV = (Uges - UD) / I
RV = (5V - 2V) / 0.025A
RV = 3V / 0.025A
RV = 120 Ω
Für die Programmierung müssen wir den Digitalen PIN 13 immer wieder ein- und ausschalten, wenn wir das LED zum Blinken bringen möchten. Der folgende Code tut genau das.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
void setup() { // initialize digital pin 13 as an output. pinMode(13, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(13, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } |
Aufgaben
1. Nutz das Blink Beispiel (Exampels/Basic/Blink) und erweitere es um eine zweite LED.
2. Öffne das BlinkWithout Delay Beispiel (Exampels/Digital/BlinkWithoutDelay) und verstehe das Konzept.
3. Programmiere ein Lauflicht mit 3 LEDs, welches sich von einer zur anderen Seite bewegt.
4. Definiert eine eigene Funktion void blinkLED(int _Pin, int _duration) welche es ermöglicht unterschiedliche LEDs mit unterschiedlichen Geschwindigkeiten blinken zu lassen.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
int ledPins[3] = {8,9,10}; // Alle LED Pins in einem Array initialisieren boolean ledStates[3] = {false, false, false}; // Alle LED Status speichern long previousMillis[3] = {0,0,0}; // Die Zeiten speichern void setup() { for(int i=0; i<3; i++) { pinMode(ledPins[i], OUTPUT); // Alle LED Pins sind Output } } void loop() { blinkLED(1, 100); // Aufrufen unserer Funktion blinkLED(2, 1000); blinkLED(3, 500); } void blinkLED(int _Pin, int _duration) // Eigene Funktion { if(millis() - previousMillis[_Pin-1] > _duration) // Ist genug Zeit vergangen? { previousMillis[_Pin-1] = millis(); // Zeit speichern ledStates[_Pin-1] != ledStates[_Pin-1]; // Den LED State umdrehen (wenn AUS dann AN) digitalWrite(ledPins[_Pin-1], ledStates[_Pin-1]); // State setzen } } |
Weitere Informationen:
Arduino: DigitalPins - Referenz auf Arduino.cc
Tom Igoe: Digital Input & Output - Tom Igoe