====== Digitaler Adventskranz ====== In diesem Experiment wird es recht eng auf unserem Steckbrett! Wir wollen mit vier LEDs einen kleinen Adventskranz bauen. Dazu schliessen wir die LEDs über Vorwiderstände (je 220 Ohm) an die digitalen Ausgänge an. Ausserdem schliessen wir einen Taster über einen Pull-Down-Widerstand als digitalen Eingang an. ===== Bauteile ===== Für dieses Experiment benötigst Du die folgenden Bauteile * [[paperduino:experimente:grundschaltung|Grundschaltung mit Spannungswandler]] * 4 LEDs, z.B. zwei rote und zwei gelbe * 4 Widerstände je 220 Ohm * 1 Widerstand 10 kOhm * 1 Taster * Steckbrett * Jumper Kabel ===== Aufbau ===== {{ :paperduino:experimente:img_20141215_232822_1_.jpg?300 |Adventskranz}} {{ :paperduino:experimente:e_adventskranz_steckplatine.png?400 |Steckbrett Schaltung}} ===== Programm ===== /* * Adventskranz * * 4 leds an PINS 5, 7, 2, 3 (DIG0, 2, 3, 4) über 220 Ohm * Button (DIG1) an PIN 6 über Pull-Down 10kOhm (1,5kOhm?) * * TEIL DIG PIN * LED1 0 5 * LED2 2 7 * LED3 3 2 * LED4 4 3 * BTN 1 6 */ const int LED1 = 0; const int LED2 = 2; const int LED3 = 3; const int LED4 = 4; const int buttonPin = 1; // Variablen können sich ändern: int buttonState = 0; // Anzahl der momentan eingeschalteten LEDs int numLeds = 0; // Die setup-Routine läuft genau einmal nach dem Start: void setup() { // Den Taster als Eingang belegen: pinMode(buttonPin, INPUT); // Die LED-Pins als Ausgänge belegen: pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); // Erstmal eine LED 4x blinken lassen (Advent!) for(int i=0; i<4; i++) { digitalWrite(LED2, HIGH); // Die LED anschalten indem die Spannung HIGH geschaltet wird delay(300); // 300 msec warten digitalWrite(LED2, LOW); // Die LED ausschalten indem die Spannung LOW geschaltet wird delay(200); } // Alle LEDs ausschalten digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); } // Die loop-Routine läuft für immer: void loop() { // Les den Zustand des Taster-Wertes: buttonState = digitalRead(buttonPin); // Prüfe ob der Taster gedrückt ist. // Wenn ja, ist buttonState HIGH: if (buttonState == HIGH) { // Erhöhe die Zahl der anzuschaltenden LEDs numLeds = numLeds + 1; // Wenn Zahl größer als 4, setze auf 0 (alle aus) if(numLeds>4) numLeds = 0; // Je nach Anzahl der LEDs switch(numLeds) { // alle aus case 0: digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); break; // Nr. 1 an case 1: digitalWrite(LED1, HIGH); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); break; // Nr.1+2 an case 2: digitalWrite(LED1, HIGH); digitalWrite(LED2, HIGH); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); break; // Nrn. 1-3 an case 3: digitalWrite(LED1, HIGH); digitalWrite(LED2, HIGH); digitalWrite(LED3, HIGH); digitalWrite(LED4, LOW); break; // Nrn. 1-4 an case 4: digitalWrite(LED1, HIGH); digitalWrite(LED2, HIGH); digitalWrite(LED3, HIGH); digitalWrite(LED4, HIGH); break; } } delay(1000); // Warte eine Sekunde } ===== Funktion ===== Wenn alles klappt, blinkt eine LED nach dem einschalten viermal schnell, dann sind erstmal alle LEDs aus. Drückt man nun den Taster (etwas länger, eine knappe Sekunde), werden nacheinander alle vier LEDs eingeschaltet - Advent Advent ein LEDchen brennt! Ein weiterer Tastendruck schaltet die LEDs wieder aus.