Преглед изворни кода

Dateien hochladen nach ''

Nur zum Wechsel auf Hauptrechner.
janekfranz пре 3 година
родитељ
комит
ad2f982d1c
1 измењених фајлова са 602 додато и 0 уклоњено
  1. 602 0
      vscode_arduino.ino

+ 602 - 0
vscode_arduino.ino

@@ -0,0 +1,602 @@
+
+/*
+ Arduino Spiel
+ Autor: Johannes Tümler, Janek Franz, Marvin Richter
+ Letzte Änderung: 14.07.2020
+ Zweck: Beleg 3 Hilfscode für den Start
+*/
+
+unsigned char gesamtpunktzahl;
+byte x;
+byte y;
+byte lauf;
+byte xsetz;
+byte ysetz;
+byte bew;
+const int red = 13, blue = 11, green = 12;
+
+void setup()
+{
+    Serial.begin(9600);
+    gesamtpunktzahl = 0;
+    randomSeed(analogRead(0));
+    pinMode(red, OUTPUT);
+    pinMode(green, OUTPUT);
+    pinMode(blue, OUTPUT);
+    pinMode(10, INPUT_PULLUP);  
+    pinMode(9, INPUT_PULLUP);
+    pinMode(8, INPUT_PULLUP);
+    pinMode(7, INPUT_PULLUP);
+    pinMode(6, INPUT_PULLUP);
+    pinMode(5, INPUT_PULLUP);
+    pinMode(4, INPUT_PULLUP);
+    pinMode(3, INPUT_PULLUP);
+    pinMode(2, INPUT_PULLUP);
+    pinMode(1, INPUT_PULLUP);
+    pinMode(0, INPUT_PULLUP);
+    resetAllPins();
+}
+
+void resetAllPins()
+{
+    // alle Pins auf definierte Werte setzen (sonst wissen wir nicht, welchen Wert sie gerade haben.)
+    digitalWrite(red, LOW);
+    digitalWrite(green, LOW);
+    digitalWrite(blue, LOW);
+  // Alle nachfolgenden Pins werden auf HIGH gesetzt, sodass sie auf ein GND/Masse-Signal reagieren können.
+    digitalWrite(0, HIGH);
+    digitalWrite(1, HIGH);  
+    digitalWrite(2, HIGH);
+    digitalWrite(3, HIGH);
+    digitalWrite(4, HIGH);
+    digitalWrite(5, HIGH);
+    digitalWrite(6, HIGH);
+    digitalWrite(7, HIGH);
+    digitalWrite(8, HIGH);
+    digitalWrite(9, HIGH);
+    digitalWrite(10, HIGH);
+}
+
+void blink(const int *pin)
+{
+    digitalWrite(*pin, HIGH);
+    delay(500);
+    digitalWrite(*pin, LOW);
+    delay(500);
+}
+
+void loop()
+{
+    
+   
+      blink(&green);
+      blink(&green);
+      blink(&red);
+      blink(&red);
+      blink(&red);
+
+      x = 0;
+      y = 0;
+
+      digitalWrite(2,HIGH);
+
+      
+    
+
+    
+      if (digitalRead(2) == LOW)
+      {
+        digitalWrite(2,HIGH);
+        level1();
+        
+      }
+
+      if (digitalRead(3) == LOW)
+      {
+       digitalWrite(3,HIGH);
+        level2();
+       
+        
+      }
+      
+    if (digitalRead(5) == LOW) // Hier im Beispiel: Wenn ein Masse-Signal / GND an Pin 5 liegt, dann blinkt es.
+    {
+        blink(&red);
+        digitalWrite(5, HIGH);
+    }
+    resetAllPins();
+}
+
+void level1()
+{
+  Serial.println("Level 1");
+  if(x == 0 && y == 0){
+  x = random(1,6);
+  y = random(1,6);
+  Serial.println(String(x));
+  Serial.println(String(y));
+  }
+  coordsx1();
+  
+  
+}
+
+void level2()
+{
+  Serial.print("Level 2");
+  if(x == 0 && y == 0){
+    x = random(1,6);
+    y = random(1,6);
+  }
+  digitalWrite(3,HIGH);
+  Serial.println("Anfangs Koords");
+  Serial.println(String(x));
+  Serial.println(String(y));
+  coordsx2();
+}
+
+void coordsx1()
+{
+  
+  while (xsetz == 0){
+    digitalWrite(green, HIGH);
+    if (digitalRead(6) == LOW)
+    {
+          digitalWrite(green, LOW);
+          xsetz = 1;
+          delay(500);
+          coordsy1();
+    }
+    
+    if (digitalRead(7) == LOW)
+    {
+          digitalWrite(green, LOW);
+          xsetz = 2;
+          delay(500);
+          coordsy1();
+    }
+    
+    
+    if (digitalRead(8) == LOW)          
+    {
+          digitalWrite(green, LOW);
+          xsetz = 3;
+          delay(500);
+          coordsy1();
+    }
+    
+    if (digitalRead(9) == LOW)
+    {
+          digitalWrite(green, LOW);
+          xsetz = 4;
+          delay(500);
+          coordsy1();
+    }
+    
+    if (digitalRead(10) == LOW)
+    {
+          digitalWrite(green, LOW);
+          xsetz = 5;
+          delay(500);
+          coordsy1();
+    }
+    
+}
+}
+
+void coordsy1()
+{
+  digitalWrite(blue, HIGH);
+  while (ysetz == 0){
+    if (digitalRead(6) == LOW)
+    {
+          digitalWrite(blue, LOW);
+          ysetz = 1;
+          
+    }
+    
+    if (digitalRead(7) == LOW)
+    {
+          digitalWrite(blue, LOW);
+          ysetz = 2;
+          
+    }
+    
+    
+    if (digitalRead(8) == LOW)
+    {
+          digitalWrite(blue, LOW);
+          ysetz = 3;
+          
+    }
+    
+    if (digitalRead(9) == LOW)
+    {
+          digitalWrite(blue, LOW);
+          ysetz = 4;
+          
+    }
+    
+    if (digitalRead(10) == LOW)
+    {
+          digitalWrite(blue, LOW);
+          ysetz = 5;
+          
+    }
+    Serial.println(String(xsetz));
+    Serial.println(String(ysetz));
+  }
+  delay(1000);
+  digitalWrite(blue,HIGH);
+  digitalWrite(green,HIGH);
+  delay(200);
+  digitalWrite(blue,LOW);
+  digitalWrite(green,LOW);
+  delay(500);
+  posi1();
+
+}
+
+void posi1()
+{
+  gesamtpunktzahl ++;
+  if(x == xsetz && y == ysetz)
+  {
+    Serial.print("Treffer");
+    xsetz = 0;
+    ysetz = 0;
+    //digitalWrite(2, HIGH);
+    digitalWrite(6, HIGH);
+    digitalWrite(7, HIGH);
+    digitalWrite(8, HIGH);
+    digitalWrite(9, HIGH);
+    digitalWrite(10, HIGH);
+    gewonnen();
+  }
+  else if((x + 1 == xsetz or x - 1 == xsetz or x == xsetz)&& (y == ysetz or y + 1 == ysetz or y - 1 == ysetz))
+  {
+    digitalWrite(red, HIGH);
+    Serial.print("1");
+    delay(2000);
+    xsetz = 0;
+    ysetz = 0;
+    //digitalWrite(2,HIGH);
+    digitalWrite(6, HIGH);
+    digitalWrite(7, HIGH);
+    digitalWrite(8, HIGH);
+    digitalWrite(9, HIGH);
+    digitalWrite(10, HIGH);
+    digitalWrite(red, LOW);
+    coordsx1();
+  }
+  else if((x + 2 == xsetz or x - 2 == xsetz or x == xsetz)&& (y == ysetz or y + 2 == ysetz or y - 2 == ysetz))
+  {
+    digitalWrite(blue, HIGH);
+    Serial.print("2");
+    delay(2000);
+    xsetz = 0;
+    ysetz = 0;
+    //digitalWrite(2, HIGH);
+    digitalWrite(6, HIGH);
+    digitalWrite(7, HIGH);
+    digitalWrite(8, HIGH); 
+    digitalWrite(9, HIGH);
+    digitalWrite(10, HIGH);
+    digitalWrite(blue, LOW);
+    coordsx1();
+  }
+  else if ((x + 2 >= xsetz or x - 2 <= xsetz or x == xsetz)&& (y == ysetz or y + 2 >= ysetz or y - 2 <= ysetz)) 
+  {
+    xsetz = 0;
+    ysetz = 0;
+    //digitalWrite(2, HIGH);
+    digitalWrite(6, HIGH);
+    digitalWrite(7, HIGH);
+    digitalWrite(8, HIGH);
+    digitalWrite(9, HIGH);
+    digitalWrite(10, HIGH);
+    coordsx1();
+  }
+}
+
+void gewonnen()
+{
+  
+  for(byte lauf = 3; lauf >= 1;lauf--)
+    {
+    digitalWrite(red,HIGH);
+    delay(100);
+    digitalWrite(red,LOW);
+    digitalWrite(green, HIGH);
+    delay(100);
+    digitalWrite(green,LOW);
+    digitalWrite(blue,HIGH);
+    delay(100);
+    digitalWrite(blue, LOW);
+    }
+  for(gesamtpunktzahl; gesamtpunktzahl >= 1;gesamtpunktzahl --)
+  {
+   
+    digitalWrite(red,HIGH);
+    digitalWrite(green,HIGH);
+    digitalWrite(blue,HIGH);
+    delay(300);
+    digitalWrite(red,LOW);
+    digitalWrite(green,LOW);
+    digitalWrite(blue, LOW); 
+    delay(300);
+    
+  }
+  software_Reset();
+}
+
+void coordsx2()
+{
+  
+  while (xsetz == 0){
+    digitalWrite(green, HIGH);
+    if (digitalRead(6) == LOW)
+    {
+          digitalWrite(green, LOW);
+          xsetz = 1;
+          delay(500);
+          coordsy2();
+    }
+    
+    if (digitalRead(7) == LOW)
+    {
+          digitalWrite(green, LOW);
+          xsetz = 2;
+          delay(500);
+          coordsy2();
+    }
+    
+    
+    if (digitalRead(8) == LOW)          
+    {
+          digitalWrite(green, LOW);
+          xsetz = 3;
+          delay(500);
+          coordsy2();
+    }
+    
+    if (digitalRead(9) == LOW)
+    {
+          digitalWrite(green, LOW);
+          xsetz = 4;
+          delay(500);
+          coordsy2();
+    }
+    
+    if (digitalRead(10) == LOW)
+    {
+          digitalWrite(green, LOW);
+          xsetz = 5;
+          delay(500);
+          coordsy2();
+    }
+    
+}
+}
+
+void coordsy2()
+{
+  digitalWrite(blue, HIGH);
+  while (ysetz == 0){
+    if (digitalRead(6) == LOW)
+    {
+          digitalWrite(blue, LOW);
+          ysetz = 1;
+          
+    }
+    
+    if (digitalRead(7) == LOW)
+    {
+          digitalWrite(blue, LOW);
+          ysetz = 2;
+          
+    }
+    
+    
+    if (digitalRead(8) == LOW)
+    {
+          digitalWrite(blue, LOW);
+          ysetz = 3;
+          
+    }
+    
+    if (digitalRead(9) == LOW)
+    {
+          digitalWrite(blue, LOW);
+          ysetz = 4;
+          
+    }
+    
+    if (digitalRead(10) == LOW)
+    {
+          digitalWrite(blue, LOW);
+          ysetz = 5;
+          
+    }
+    Serial.println(String(xsetz));
+    Serial.println(String(ysetz));
+  }
+  delay(1000);
+  digitalWrite(blue,HIGH);
+  digitalWrite(green,HIGH);
+  delay(200);
+  digitalWrite(blue,LOW);
+  digitalWrite(green,LOW);
+  delay(500);
+  posi2();
+
+}
+
+void posi2()
+{
+  gesamtpunktzahl ++;
+  if(x == xsetz && y == ysetz)
+  {
+    Serial.print("Treffer");
+    xsetz = 0;
+    ysetz = 0;
+    //digitalWrite(2, HIGH);
+    digitalWrite(6, HIGH);
+    digitalWrite(7, HIGH);
+    digitalWrite(8, HIGH);
+    digitalWrite(9, HIGH);
+    digitalWrite(10, HIGH);
+    gewonnen();
+  }
+  else if((x + 1 == xsetz or x - 1 == xsetz or x == xsetz)&& (y == ysetz or y + 1 == ysetz or y - 1 == ysetz))
+  {
+    digitalWrite(red, HIGH);
+    Serial.print("1");
+    delay(2000);
+    xsetz = 0;
+    ysetz = 0;
+    //digitalWrite(2,HIGH);
+    digitalWrite(6, HIGH);
+    digitalWrite(7, HIGH);
+    digitalWrite(8, HIGH);
+    digitalWrite(9, HIGH);
+    digitalWrite(10, HIGH);
+    digitalWrite(red, LOW);
+    bewegung();
+  }
+  else if((x + 2 == xsetz or x - 2 == xsetz or x == xsetz)&& (y == ysetz or y + 2 == ysetz or y - 2 == ysetz))
+  {
+    digitalWrite(blue, HIGH);
+    Serial.print("2");
+    delay(2000);
+    xsetz = 0;
+    ysetz = 0;
+    //digitalWrite(2, HIGH);
+    digitalWrite(6, HIGH);
+    digitalWrite(7, HIGH);
+    digitalWrite(8, HIGH); 
+    digitalWrite(9, HIGH);
+    digitalWrite(10, HIGH);
+    digitalWrite(blue, LOW);
+    bewegung();
+  }
+  else if ((x + 2 >= xsetz or x - 2 <= xsetz or x == xsetz)&& (y == ysetz or y + 2 >= ysetz or y - 2 <= ysetz)) 
+  {
+    xsetz = 0;
+    ysetz = 0;
+    //digitalWrite(2, HIGH);
+    digitalWrite(6, HIGH);
+    digitalWrite(7, HIGH);
+    digitalWrite(8, HIGH);
+    digitalWrite(9, HIGH);
+    digitalWrite(10, HIGH);
+    bewegung();
+  }
+  
+  
+}
+
+void bewegung()
+{
+  bew = random(1,9);
+
+  if (bew == 1)
+  {
+    x++;
+    y++;
+    if ((x > 5 or x < 1) or (y > 5 or y < 1))
+    {
+      x--;
+      y--;
+      bewegung();
+    }
+  }
+
+  else if (bew == 2)
+  {
+    x++;
+    y--;
+    if ((x > 5 or x < 1) or (y > 5 or y < 1))
+    {
+      x--;
+      y++;
+      bewegung();
+    }
+  }
+
+  else if (bew == 3)
+  {
+    x--;
+    y++;
+    if ((x > 5 or x < 1) or (y > 5 or y < 1))
+    {
+      x++;
+      y--;
+      bewegung();
+    }
+  }
+
+  else if (bew == 4)
+  {
+    x--;
+    y--;
+    if ((x > 5 or x < 1) or (y > 5 or y < 1))
+    {
+      x++;
+      y++;
+      bewegung();
+    }
+  }
+
+  else if (bew == 5)
+  {
+    x++;
+    if ((x > 5 or x < 1) or (y > 5 or y < 1))
+    {
+      x--;
+      bewegung();
+    }
+  }
+
+  else if (bew == 6)
+  {
+    y++;
+    if ((x > 5 or x < 1) or (y > 5 or y < 1))
+    {
+      y--;
+      bewegung();
+    }
+  }
+
+  else if (bew == 7)
+  {
+    x--;
+    if ((x > 5 or x < 1) or (y > 5 or y < 1))
+    {
+      x++;
+      bewegung();
+    }
+  }
+
+  else if (bew == 8)
+  {
+    y--;
+    if ((x > 5 or x < 1) or (y > 5 or y < 1))
+    {
+      y++;
+      bewegung();
+    }
+  }
+  Serial.print("Neue Koords");
+  Serial.println(String(x));
+  Serial.println(String(y));
+  coordsx2();
+}
+
+void software_Reset() 
+{
+asm volatile ("  jmp 0");  
+}
+
+
+