3. Dezember 2011
Digital Input und Output Bis jetzt verschafften wir uns einen Überblick über die Grundbausteine der Elektronik. Unsere LEDs blinkten auch ohne Computerunterstützung. Das wird sich jetzt ändern. Zum ersten mal nehmen wir unser kleines Arduino-Board hervor, das über zahlreiche Ein- und Ausgänge verfügt. Die erste Aufgabe, bei der wir unser Arduino brauchten, war, eine LED im Sekundentakt blinken zu lassen. Die anderen Aufgaben waren jeweils Abwandlungen um Schritt für Schritt wie Schwierigkeit zu erhöhen, indem man mit Buttons das Blinken startet oder gar Ampelschaltungen durchführt. Die Zeiten der reinen Mechanik waren nun vorbei denn wir brauchten nun zusätzlich die Hilfe unseres Computers, mit dem wir das Arduino mit selbst geschriebenen (oder kopierten) Code beluden. Der Ampelcode:<pre>#define LED_PIN 12 #define LED_PIN2 11 #define LED_PIN3 10 #define BUTTON_PIN 6 #define BUTTON_PIN2 5 #define BUTTON_PIN3 4 boolean buttonState = false; //boolsche variable boolean buttonState2 = false; boolean buttonState3 = false; void setup() { pinMode(LED_PIN, OUTPUT); // definition des LED pins als output pinMode(LED_PIN2, OUTPUT); pinMode(LED_PIN3, OUTPUT); pinMode(BUTTON_PIN, INPUT); // definition des buttons als input digitalWrite(BUTTON_PIN, HIGH); pinMode(BUTTON_PIN2, INPUT); digitalWrite(BUTTON_PIN2, HIGH); pinMode(BUTTON_PIN3, INPUT); digitalWrite(BUTTON_PIN3, HIGH); // aktivierung pull up wiederstand } void loop() { if(digitalRead(BUTTON_PIN) == LOW) // ist button gedrückt? { if(buttonState == false) // wenn der status AUS ist, dann... { buttonState = true; // ...setze auf EIN buttonState2 = false; buttonState3 = false; digitalWrite(LED_PIN, HIGH); digitalWrite(LED_PIN2, LOW); digitalWrite(LED_PIN3, LOW); delay(200); } else // wenn der status EIN ist, dann... { buttonState = false; // ...setze status auf AUS digitalWrite(LED_PIN, LOW); delay(200); } } if(digitalRead(BUTTON_PIN2) == LOW) // ist button gedrückt? { if(buttonState2 == false) // wenn der status AUS ist, dann... { buttonState2 = true; // ...setze auf EIN buttonState = false; buttonState3 = false; digitalWrite(LED_PIN, LOW); digitalWrite(LED_PIN2, HIGH); digitalWrite(LED_PIN3, LOW); delay(200); } else // wenn der status EIN ist, dann... { buttonState = false; // ...setze status auf AUS digitalWrite(LED_PIN2, LOW); delay(200); } } if(digitalRead(BUTTON_PIN3) == LOW) // ist button gedrückt? { if(buttonState3 == false) // wenn der status AUS ist, dann... { buttonState3 = true; // ...setze auf EIN buttonState = false; buttonState2 = false; digitalWrite(LED_PIN, LOW); digitalWrite(LED_PIN2, LOW); digitalWrite(LED_PIN3, HIGH); delay(200); } else // wenn der status EIN ist, dann... { buttonState = false; // ...setze status auf AUS digitalWrite(LED_PIN3, LOW); delay(200); } } }