8. November 2011
Erste Schritte mit dem Arduino. Aufgabe 3 Die LED soll, wenn man den Taster drückt leuchten und bei erneutem drücken wieder ausgehen.// Pins deklarieren #define LED_PIN 13 #define BUTTON_PIN 6 // Variablen deklarieren boolean buttonState = false; void setup() // einmal zu beginn { // Nutzung der Pins deklarieren pinMode(LED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT); digitalWrite(BUTTON_PIN, HIGH); } void loop() // in einer schleife { if(digitalRead(BUTTON_PIN) == LOW) // Button gedrückt { if(buttonState == false){ buttonState = true; //delay(400); }else{ buttonState = false; //delay(400); } } if(buttonState) // Button gedrückt { digitalWrite(LED_PIN, HIGH); } else{ digitalWrite(LED_PIN, LOW); } delay(400); // }Aufgabe 4 Wir sollen eine Ampel mit drei LEDs und drei Tastern basteln. Dabei ist es wichtig, dass die Taster und die LEDs in separaten Kreisen geschaltet sind. Mein Aufbau sieht ungefähr so aus: Zum Code Zuerst müssen die Pins definiert, und ihnen ein Name zugewiesen werden. Als nächstes werden die Booleans angelegt. Sie beschreiben ob die LED an (true) oder aus (false) ist. Zu Beginn sollen alle aus sein. Als nächstes wird definiert, ob die Pins als INPUTs oder OUTPUTs verwendet werden. (pinMode()) Und als letztes im "void setup()" richten wir noch einen "pull-up" für die Taster ein. Nun müssen wir die einzelnen zustände definieren, und zwar so, dass wenn eine LED an ist, die anderen nicht leuchten. Die Funktionen erkläre ich im letzten Block vom Code. Der Code:
#define LED_RED 13 #define LED_YELLOW 11 #define LED_GREEN 9 #define T_RED 2 #define T_YELLOW 4 #define T_GREEN 6 boolean GREEN = false; boolean YELLOW = false; boolean RED = false; void setup(){ pinMode(LED_RED, OUTPUT); pinMode(LED_YELLOW, OUTPUT); pinMode(LED_GREEN, OUTPUT); pinMode(T_RED, INPUT); pinMode(T_YELLOW, INPUT); pinMode(T_GREEN, INPUT); digitalWrite(T_RED, HIGH); digitalWrite(T_YELLOW, HIGH); digitalWrite(T_GREEN, HIGH); } void loop(){ if(digitalRead(T_RED) == LOW){ if(RED == false){ RED = true; YELLOW = false; GREEN = false; digitalWrite(LED_RED, HIGH); digitalWrite(LED_YELLOW, LOW); digitalWrite(LED_GREEN, LOW); }else{ RED = false; YELLOW = false; GREEN = false; digitalWrite(LED_RED, LOW); digitalWrite(LED_YELLOW, LOW); digitalWrite(LED_GREEN, LOW); } delay(400); } if(digitalRead(T_YELLOW) == LOW){ if(YELLOW == false){ RED = false; YELLOW = true; GREEN = false; digitalWrite(LED_RED, LOW); digitalWrite(LED_YELLOW, HIGH); digitalWrite(LED_GREEN, LOW); }else{ RED = false; YELLOW = false; GREEN = false; digitalWrite(LED_RED, LOW); digitalWrite(LED_YELLOW, LOW); digitalWrite(LED_GREEN, LOW); } delay(400); } if(digitalRead(T_GREEN) == LOW){ // falls der grüne Taster gedrückt wird... if(GREEN == false){ // und GREEN false ist... RED = false; // setze RED auf false YELLOW = false; // YELLOW auf false GREEN = true; // und GREEN auf true digitalWrite(LED_RED, LOW); // LED aus digitalWrite(LED_YELLOW, LOW); // LED aus digitalWrite(LED_GREEN, HIGH); // LED an }else{ // falls GREEN true ist RED = false; // alles false setzen YELLOW = false; GREEN = false; digitalWrite(LED_RED, LOW); // alles aus! digitalWrite(LED_YELLOW, LOW); digitalWrite(LED_GREEN, LOW); } delay(400); // noch eine Verzögerung, damit es nicht zufälligerweise "nochmals" drückt } }