Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

Digital Input/Output

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
  }

}