Hau den Lukas

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten

Hau den Lukas

Beitrag von Dylan Baumann am Do März 17, 2016 10:15 am

Einfaches Hau den Lukas Spiel mit einem Arduino Mega. Der Code funktioniert einwandfrei uns ist je nach Größe des Spiels anzupassen. Im Moment funktioniert der Code nur für 3 Lichtschranken, ist aber beinahe beliebig erweiterbar.

Schaltung


Code
Code:
int lichtschranke1 = 7; //pin for photocell 1
int lichtschranke2 = 6; //pin for photocell 1
int lichtschranke3 = 5; //pin for photocell 1
int LED1 = 12; //pin for LED 1
int LED2 = 11; //pin for LED 2
int LED3 = 10; //pin for LED 3
int a = 0;
int b = 0;
int c = 0;
int detectiontime = 300; //True value is detectiontime * 10 ms






void setup() {
  pinMode(lichtschranke1, INPUT);
  pinMode(lichtschranke2, INPUT);
  pinMode(lichtschranke3, INPUT);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  
  Serial.begin(9600);
}

void loop() {
  a= 0;
  b= 0;
  c= 0;
  
if(digitalRead(lichtschranke1)== HIGH){
      
      digitalWrite(LED1, HIGH);
      a = 1;

      for(int dly = 0; dly <= detectiontime; dly++){
        
        if(digitalRead(lichtschranke2) == HIGH){

          digitalWrite(LED2, HIGH);
          b = 1;

          for(dly = 0; dly <= detectiontime; dly++){
            if(digitalRead(lichtschranke3) == HIGH){
              
            digitalWrite(LED3, HIGH);
            c = 1;
            
            }

            delay(10);
          }
        }

        delay(10);
        
      }
    }
if(a == 1 || b == 1 || c == 1){
  finish(a, b, c);
}

}

void finish(int a, int b, int c){
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
if(c == 1){
  for(int fin = 0; fin <= 5; fin++){

      digitalWrite(LED3, HIGH);

    delay(150);

      digitalWrite(LED3, LOW);

    delay(150);

  }
  a = 0;
  b = 0;
  c = 0;
}

if(b == 1){
  for(int fin = 0; fin <= 5; fin++){

      digitalWrite(LED2, HIGH);

    delay(150);

      digitalWrite(LED2, LOW);

    delay(150);

  }
  a = 0;
  b = 0;
  c = 0;
}

if(a == 1){
  for(int fin = 0; fin <= 5; fin++){

      digitalWrite(LED1, HIGH);

    delay(150);

      digitalWrite(LED1, LOW);

    delay(150);

  }
  a = 0;
  b = 0;
  c = 0;
}

}


Anmerkung
Im momentanen Code sind die Lichtschranken als Schließer programmiert, sie können aber ohne Probleme als Öffner einprogrammiert werden. Je nach Anzahl der LED/Lampen sind Transisitoren oder Relais zu empfehlen.

Dylan Baumann
Admin

Anzahl der Beiträge : 4
Anmeldedatum : 23.02.16
Alter : 18
Ort : 3AHET

Nach oben Nach unten

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben


 
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten