8. November 2011
Arduino Board
....Ampel
Eine Aufgabe bestand darin eine Ampel zu erstellen, welche mit 3 LEDs und 3 Tastern via Arduino-Board gesteuert werden. Es soll immer nur eine LED leuchten je nach gedrücktem Taster. Jede LED ist mit einem Digital-Output vom Arduino verbunden, die drei Taster jeweils mit einem Digital-Input. Die LEDs und die Taster benutzen jeweils gemeinsam einen Ground. Der PIN Nr. 13 braucht für die LED keinen Vorwiderstand, dieser ist bereits im Arduino verbaut. Die anderen LEDs, bei mir an PIN Nr. 12 und 11 brauchen aber einen separaten Vorwiderstand. Das Arduino wird via USB mit 5V versorgt, die Widerstände sind für die rote und gelbe LED 150 Ohm. Die grüne bräuchte einen Widerstand mit 65 Ohm ist bei mir aber an den PIN Nr. 13 angeschlossen.Processing-Code
// DOMINIK STUCKY // ZHdK, Zurich University of the Arts // Embodied Interaction Design // @created 2011-11-08 #define LED_PIN 13 #define LED_PIN2 12 #define LED_PIN3 11 #define BTN_PIN 6 #define BTN_PIN2 5 #define BTN_PIN3 4 boolean BTN_STATE = false; boolean BTN_STATE2 = false; boolean BTN_STATE3 = false; // HOW PINS ARE BEING USED void setup() { pinMode(LED_PIN, OUTPUT); pinMode(LED_PIN2, OUTPUT); pinMode(LED_PIN3, OUTPUT); pinMode(BTN_PIN, INPUT); digitalWrite(BTN_PIN, HIGH); // pull up widerstand aktivieren pinMode(BTN_PIN2, INPUT); digitalWrite(BTN_PIN2, HIGH); // pull up widerstand aktivieren pinMode(BTN_PIN3, INPUT); digitalWrite(BTN_PIN3, HIGH); // pull up widerstand aktivieren } void loop() { if (digitalRead(BTN_PIN)==LOW) { BTN_STATE==false ? setState(1) : setState(0); delay(500); } if (digitalRead(BTN_PIN2)==LOW) { BTN_STATE2==false ? setState(2) : setState(0); delay(500); } if (digitalRead(BTN_PIN3)==LOW) { BTN_STATE3==false ? setState(3) : setState(0); delay(500); } BTN_STATE==false ? digitalWrite(LED_PIN, LOW) : digitalWrite(LED_PIN, HIGH); BTN_STATE2==false ? digitalWrite(LED_PIN2, LOW) : digitalWrite(LED_PIN2, HIGH); BTN_STATE3==false ? digitalWrite(LED_PIN3, LOW) : digitalWrite(LED_PIN3, HIGH); } void setState(int btn_type) { switch(btn_type) { case 1: BTN_STATE=true; BTN_STATE2=BTN_STATE3=false; break; case 2: BTN_STATE=BTN_STATE3=false; BTN_STATE2=true; break; case 3: BTN_STATE=BTN_STATE2=false; BTN_STATE3=true; break; default: BTN_STATE=BTN_STATE2=BTN_STATE3=false; break; } }