Stap 14: De code
int led1 = 2; Dit stelt getallen naar namen. Dit wordt later gebruikt voor geleid [i]
int led2 = 3;
int led3 = 4;
int led4 = 5;
int i = -1; Ik ingesteld op -1, alleen de code Randomize gebruikt wanneer Setup; heet.
int j = 0; Opnieuw ingesteld op 0 voor een nieuwe ronde, j j wordt als een index wanneer de juiste code wordt aangeroepen.
#include / / bevat de servo-bibliotheek
Servo servo1; Naam servo
dubbele code [4] = {1, 1, 1, 1}; Maakt een array genaamd code, er bestaat uit 4 cijfers.
dubbele corrigeren [5] = {0, 0, 0, 0, 0}; Hiermee maakt u een array genaamd juist, het is bestaat uit 5 cijfers en wordt gebruikt om te zien als alle getallen juist hebben al geraden.
dubbele geleid [4] = {2, 3, 4, 5}; Maakt een array led genoemd en bestaat uit bestaat uit 4 cijfers en wordt gebruikt voor het activeren van de LED's, wanneer de index wordt aangeroepen.
VOID Setup {}
Setup wordt ook gebruikt om het programma te herstellen wanneer de juiste code is ingevoerd.
seriële communicatie 9600 bps te initialiseren:
Serial.begin(9600);
dubbele corrigeren [5] = {0, 0, 0, 0, 0}; Hiermee stelt u de juiste matrix
Hiermee stelt u de knoppen (9 tot en met 12) erkend te worden als input en de LED's (2 tot en met 5) als output.
pinMode (9, INPUT);
pinMode (10, INPUT);
pinMode (11, INPUT);
pinMode (12, INPUT);
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
servo1.attach(1); hecht de servo op pin 1
servo1.write(90); Stel de Servo op deze positie
delay(2000); Houd deze positie voor 2000ms te resetten van het deksel
servo1.write(170); sluiten van het deksel
Ik = -1; willekeurige volgorde van de code als ik = -1
digitalWrite (led1, laag); Hiermee stelt u alle LED's
digitalWrite (led2, laag);
digitalWrite (led3, laag);
digitalWrite (led4, laag);
analogWrite (8, random(0,255)); De RGB ingesteld op een willekeurige kleur
analogWrite (7, random(0,255));
analogWrite (6, random(0,255));
}
VOID generateCode()
{
de code randomize als ik = -1
randomSeed(random());
for (int i = 0; ik < 4; i ++)
{
corrigeren van [0] = 0;
corrigeren [1] = 0;
corrigeren van [2] = 0;
corrigeren [3] = 0;
corrigeren [4] = 0;
code [i] = random(1,5);
}
debug code zodat u niet hoeft te achterhalen van de code.
Serial.println("code");
Serial.println(code[0]);
Serial.println(code[1]);
Serial.println(code[2]);
Serial.println(code[3]);
}
ongeldig retry() {}
Als code onjuist is wordt deze functie aangeroepen
Serial.begin(9600);
dubbele corrigeren [5] = {0, 0, 0, 0, 0};
Ik = 0; Ik ingesteld op 0, zodat code wordt niet opnieuw ingesteld.
digitalWrite (led1, laag);
digitalWrite (led2, laag);
digitalWrite (led3, laag);
digitalWrite (led4, laag);
}
void loop {}
Als (ik == -1) {}
generateCode(); Genereer een nieuwe code als ik = -1
i ++;
}
// code 1 ////////////////////////
De volgende code zal voorlezen als de input gelijk aan het getal in de huidige positie is.
Als het aantal en de plaats klopt de led zal oplichten en de "juiste" array zal worden ingesteld op 1 voor de betreffende positie
Als het nummer correct is, maar de positie is verkeerd het lampje zal langzaam knipperen en verder naar de volgende positie, is juist niet ingesteld op 1
Als het nummer niet helemaal klopt zal de led snel knipperen en verder naar de volgende positie, juist niet is ingesteld op 1
Als alles correct is = 1. De LED's knipperen en de servo zal het veranderen van positie om het vak te openen. de functie setup wordt genoemd voor het spel opnieuw beginnen.
Als een van de getallen in de matrix "correct" 0 de rode led knippert één keer en de functie opnieuw wordt genoemd.
Als (digitalRead(9) == HIGH) / / als de knop is ingedrukt >
{
Als (code [i] == 1) {/ / als code aan knop ingedrukt klopt
digitalWrite((led[i]), hoge); Schakel ledon
i ++; voorschot index
corrigeren [i] = 1; juiste index ingesteld op 1
delay(250);
}
anders als (code [1] == 1 of code [2] 1 of code [3] == == 1 of code [4] == 1) {}
Serial.println ("rechts, maar verkeerde locatie");
digitalWrite((led[i]), hoge);
delay(500); vertragen zodat knop zal niet worden ingevoerd om te vaak tijdens 1 pers.
digitalWrite((led[i]), laag); Leidde langzaam knipperen code.
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
i ++;
delay(250);
}
anders als (code [i]! = 1) {}
Serial.println("Wrong");
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
i ++;
delay(250);
}
}
Als (digitalRead(10) == HIGH)
{
Als (code [i] == 2) {}
digitalWrite((led[i]), hoge);
i ++;
corrigeren [i] = 1;
delay(250);
}
anders als (code [1] 2 of code [2] == == 2 of code [3] 2 of code [4] == == 2) {}
Serial.println ("rechts, maar verkeerde locatie");
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
i ++;
delay(250);
}
anders als (code [i]! = 2) {}
Serial.println("Wrong");
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
digitalWrite((led[i]), hoge);
delay(200);
i ++;
delay(250);
}
}
Als (digitalRead(11) == HIGH)
{
Als (code [i] == 3) {}
digitalWrite((led[i]), hoge);
i ++;
corrigeren [i] = 1;
delay(250);
}
anders als (code [1] 3 of code [2] == == 3 of code [3] 3 of code [4] == == 3) {}
Serial.println ("rechts, maar verkeerde locatie");
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
i ++;
delay(250);
}
anders als (code [i]! = 3) {}
Serial.println("Wrong");
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
i ++;
delay(250);
}
}
Als (digitalRead(12) == HIGH)
{
Als (code [i] == 4) {}
digitalWrite((led[i]), hoge);
i ++;
corrigeren [i] = 1;
delay(250);
}
anders als (code [1] 4 of code [2] == == 4 of code [3] 4 of code [4] == == 4) {}
Serial.println ("rechts, maar verkeerde locatie");
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
delay(500);
digitalWrite((led[i]), laag);
delay(500);
digitalWrite((led[i]), hoge);
i ++;
delay(250);
}
anders als (code [i]! = 4) {}
Serial.println("Wrong");
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
delay(200);
digitalWrite((led[i]), laag);
delay(200);
digitalWrite((led[i]), hoge);
i ++;
delay(250);
}
}
controleert als de gehele code juist is ingevoerd.
Als (digitalRead(led4) == HIGH en corrigeren [1] == 1 en corrigeren [2] == 1 en corrigeren [3] == 1 en corrigeren [4] == 1) {}
Als (j < = 20) {}
digitalWrite (led2, laag);
digitalWrite (led1, laag);
digitalWrite (led3, laag);
digitalWrite (led4, laag);
delay(100);
digitalWrite (led2, hoge);
digitalWrite (led1, hoge);
digitalWrite (led3, hoge);
digitalWrite (led4, hoge);
delay(100);
j ++;
Ik = 0;
int i = 0;
servo1.write(90);
}
anders als (j > 20)
{
j = 0;
Setup;
}}
Als dit niet correct, probeer opnieuw
anders als (digitalRead(led4) == HIGH en corrigeren [1] == 0 of digitalRead(led4) == HIGH en corrigeren [2] == 0 of digitalRead(led4) == HIGH en corrigeren [3] == 0 of digitalRead(led4) == HIGH en corrigeren [4] == 0) {}
delay(2000);
digitalWrite (led4, laag);
digitalWrite (led2, laag);
digitalWrite (led1, laag);
digitalWrite (led3, laag);
delay(600);
digitalWrite (led4, hoge);
delay(600);
Ik = 0;
int i = 0;
Retry() ;}}