Procházet zdrojové kódy

上传文件至 ''

miaoyufeng před 2 roky
rodič
revize
264535fdd8
1 změnil soubory, kde provedl 219 přidání a 219 odebrání
  1. 219 219
      Beleg_3.ino

+ 219 - 219
Beleg_3.ino

@@ -1,219 +1,219 @@
-/*
- Arduino Spiel
- Autor: Johannes Tümler
- Letzte Änderung: 20.05.2022
- Zweck: Beleg 3 Hilfscode für einen leichteren Einstieg
-*/
-enum Menu{
-  MENU0,
-  MENU1,
-  MENU2,
-  MENU3,
-  MENU4,
-  MENU5,
-  MENU6,
-  MENU7
-};
-const int red = 13, blue = 12, green = 11;
-int num=0;int num1=0;
-int currentOrder = 0;
-Menu menu = MENU0;
-const int startPin = 1; 
-const int endPin = 9;
-const int maxAmount = 20;
-int numList[maxAmount];
-
-void setup()
-{
-    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);
-    // Serial.begin(9600);
-    resetAllPins();
-   
-}
-
-void resetAllPins()
-{
-    digitalWrite(red, LOW);
-    digitalWrite(green, LOW);
-    digitalWrite(blue, LOW);
-    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()
-{
-  switch(menu){
-    case MENU0:
-      // Serial.print("Menu 0\n");
-      currentOrder = 0;
-      for (int i=0; i<maxAmount; i++) {
-        numList[i] = 0;
-      }
-      if (digitalRead(2) == LOW){
-        menu=MENU2;
-        digitalWrite(red, HIGH);
-        digitalWrite(green, HIGH);
-        digitalWrite(blue, HIGH);
-        delay(1000);
-        digitalWrite(red, LOW);
-        digitalWrite(green, LOW);
-        digitalWrite(blue, LOW);
-        delay(500);   
-      }
-      else if (digitalRead(3) == LOW){
-        menu=MENU3;
-        digitalWrite(red, HIGH);
-        digitalWrite(green, HIGH);
-        digitalWrite(blue, HIGH);
-        delay(1000);
-        digitalWrite(red, LOW);
-        digitalWrite(green, LOW);
-        digitalWrite(blue, LOW);
-        delay(500);   
-      }
-      else {
-        blink(&red);
-        blink(&red);
-        blink(&red);
-        blink(&green);
-        blink(&green);
-      }
-      break;
-    case MENU2:
-    // Serial.print("Menu 2\n");
-      digitalWrite(green, HIGH);
-      for(int i=startPin;i<=endPin;i++){  
-        if (digitalRead(i) == LOW){
-          numList[currentOrder]=i;
-          currentOrder++;
-          for(int k=0;k<maxAmount;k++){
-            // Serial.print(numList[k]);
-            // Serial.print(" ");
-          }
-          for (int a=0;a<i;a++)
-            {blink(&green);} 
-          menu=MENU4; 
-          break;            
-        } 
-      }
-      delay(1000); 
-      break;
-    case MENU3:
-      digitalWrite(green, HIGH);
-      for(int i=1;i<10;i++){  
-        if (digitalRead(i) == LOW){
-          num=i;menu=MENU5;
-          for(int a=0;a<i;a++){
-            blink(&green);
-          }
-        }
-      }
-      break;
-    case MENU4:
-      // Serial.print("Menu 4\n");
-      bool oneNumberCorrect = true;
-      bool allNumberCorrect = true;
-      digitalWrite(blue, HIGH);
-      for(int i=0;i<currentOrder;i++) {
-        bool pinInserted = false;
-        // Serial.print("Current position ");
-        // Serial.print(i);
-        // Serial.print("\n");
-        while(true){
-          for(int j=startPin;j<=endPin;j++){
-            if(digitalRead(j) == LOW ){
-              pinInserted = true;
-              if(j != numList[i]){
-                  // Serial.print("The number is wrong\n");
-                  oneNumberCorrect = false;
-                  break;
-              }
-              // Serial.print("The number is correct\n");
-              break;
-            }
-          }
-          if(pinInserted) {
-            break; 
-          } 
-          delay(1000);
-        }
-        allNumberCorrect = allNumberCorrect && oneNumberCorrect;
-        if(!oneNumberCorrect){
-          menu=MENU0;
-          break;
-        }
-        delay(1000);
-      }
-      if(allNumberCorrect){
-        menu=MENU2;
-      }
-      break; 
-    case MENU5:
-      num1=random(1,9);
-      for (int a=0;a<num1;a++){
-        blink(&red);
-      }
-      menu=MENU6;
-      break;
-    case MENU6:
-      digitalWrite(blue, HIGH);
-      for(int i=startPin;i<=endPin;i++){  
-        if (digitalRead(i) == LOW){
-          if (num==i){
-            menu=MENU7;
-            delay(1000);
-          } 
-        }
-        else {
-          menu=MENU0;
-          delay(1000);
-        }
-      }
-      break;
-    case MENU7:
-      for(int i=startPin;i<=endPin;i++){  
-        if (digitalRead(i) == LOW){
-          if (num1==i){
-            menu=MENU3;
-            delay(1000);
-          } 
-          else{
-            menu=MENU0;
-            delay(1000);
-          }
-         }
-      }
-      break;
-    default:
-      break;
-  } 
-    resetAllPins();    
-}
+/*
+ Arduino Spiel
+ Autor: Johannes Tümler
+ Letzte Änderung: 20.05.2022
+ Zweck: Beleg 3 Hilfscode für einen leichteren Einstieg
+*/
+enum Menu{
+  MENU0,
+  MENU1,
+  MENU2,
+  MENU3,
+  MENU4,
+  MENU5,
+  MENU6,
+  MENU7
+};
+const int red = 13, blue = 12, green = 11;
+int num=0;int num1=0;
+int currentOrder = 0;
+Menu menu = MENU0;
+const int startPin = 1; 
+const int endPin = 9;
+const int maxAmount = 20;
+int numList[maxAmount];
+
+void setup()
+{
+    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);
+    // Serial.begin(9600);
+    resetAllPins();
+   
+}
+
+void resetAllPins()
+{
+    digitalWrite(red, LOW);
+    digitalWrite(green, LOW);
+    digitalWrite(blue, LOW);
+    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()
+{
+  switch(menu){
+    case MENU0:
+      // Serial.print("Menu 0\n");
+      currentOrder = 0;
+      for (int i=0; i<maxAmount; i++) {
+        numList[i] = 0;
+      }
+      if (digitalRead(2) == LOW){
+        menu=MENU2;
+        digitalWrite(red, HIGH);
+        digitalWrite(green, HIGH);
+        digitalWrite(blue, HIGH);
+        delay(1000);
+        digitalWrite(red, LOW);
+        digitalWrite(green, LOW);
+        digitalWrite(blue, LOW);
+        delay(500);   
+      }
+      else if (digitalRead(3) == LOW){
+        menu=MENU3;
+        digitalWrite(red, HIGH);
+        digitalWrite(green, HIGH);
+        digitalWrite(blue, HIGH);
+        delay(1000);
+        digitalWrite(red, LOW);
+        digitalWrite(green, LOW);
+        digitalWrite(blue, LOW);
+        delay(500);   
+      }
+      else {
+        blink(&red);
+        blink(&red);
+        blink(&red);
+        blink(&green);
+        blink(&green);
+      }
+      break;
+    case MENU2:
+    // Serial.print("Menu 2\n");
+      digitalWrite(green, HIGH);
+      for(int i=startPin;i<=endPin;i++){  
+        if (digitalRead(i) == LOW){
+          numList[currentOrder]=i;
+          currentOrder++;
+          for(int k=0;k<maxAmount;k++){
+            // Serial.print(numList[k]);
+            // Serial.print(" ");
+          }
+          for (int a=0;a<i;a++)
+            {blink(&green);} 
+          menu=MENU4; 
+          break;            
+        } 
+      }
+      delay(1000); 
+      break;
+    case MENU3:
+      digitalWrite(green, HIGH);
+      for(int i=1;i<10;i++){  
+        if (digitalRead(i) == LOW){
+          num=i;menu=MENU5;
+          for(int a=0;a<i;a++){
+            blink(&green);
+          }
+        }
+      }
+      break;
+    case MENU4:
+      // Serial.print("Menu 4\n");
+      bool oneNumberCorrect = true;
+      bool allNumberCorrect = true;
+      digitalWrite(blue, HIGH);
+      for(int i=0;i<currentOrder;i++) {
+        bool pinInserted = false;
+        // Serial.print("Current position ");
+        // Serial.print(i);
+        // Serial.print("\n");
+        while(true){
+          for(int j=startPin;j<=endPin;j++){
+            if(digitalRead(j) == LOW ){
+              pinInserted = true;
+              if(j != numList[i]){
+                  // Serial.print("The number is wrong\n");
+                  oneNumberCorrect = false;
+                  break;
+              }
+              // Serial.print("The number is correct\n");
+              break;
+            }
+          }
+          if(pinInserted) {
+            break; 
+          } 
+          delay(1000);
+        }
+        allNumberCorrect = allNumberCorrect && oneNumberCorrect;
+        if(!oneNumberCorrect){
+          menu=MENU0;
+          break;
+        }
+        delay(1000);
+      }
+      if(allNumberCorrect){
+        menu=MENU2;
+      }
+      break; 
+    case MENU5:
+      num1=random(1,9);
+      for (int a=0;a<num1;a++){
+        blink(&red);
+      }
+      menu=MENU6;
+      break;
+    case MENU6:
+      digitalWrite(blue, HIGH);
+      for(int i=startPin;i<=endPin;i++){  
+        if (digitalRead(i) == LOW){
+          if (num==i){
+            menu=MENU7;
+            delay(1000);
+          } 
+        }
+        else {
+          menu=MENU0;
+          delay(1000);
+        }
+      }
+      break;
+    case MENU7:
+      for(int i=startPin;i<=endPin;i++){  
+        if (digitalRead(i) == LOW){
+          if (num1==i){
+            menu=MENU3;
+            delay(1000);
+          } 
+          else{
+            menu=MENU0;
+            delay(1000);
+          }
+         }
+      }
+      break;
+    default:
+      break;
+  } 
+    resetAllPins();    
+}