Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Bounce2.h>
- int latchPin = 8;
- int klokPin = 12;
- int dataPin = 11;
- int piezoBuz = 3;
- int Ledlinkerspeler = 10;
- int Ledrechterspeler = 9;
- const int knopPin = 7; // the number of the pushbutton pin
- const int knopPin2 = 4; // the number of the pushbutton pin
- // variables will change:
- int knopstatus = LOW; // variable for reading the pushbutton status
- int knopstatus2 = LOW; // variable for reading the pushbutton status
- int snelheid = 250; // elke 1/4 seconden LED1 wisselen
- unsigned long timer; // nodig om na een bepaalde tijd iets te doen
- uint16_t volgendeStap; // geeft aan welke stap verwerkt moet worden
- uint16_t teller; // zomaar een tellertje
- int first = 0;
- int second = 0;
- Bounce debounce1 = Bounce();
- Bounce debounce2 = Bounce();
- void(* resetFunc) (void) = 0;//declare reset function at address 0
- void setup() {
- // put your setup code here, to run once:
- pinMode (dataPin, OUTPUT);
- pinMode (klokPin, OUTPUT);
- pinMode (latchPin, OUTPUT);
- volgendeStap = 0; // we beginnen bij stap 0
- teller = 0; // tellertje voor de eerste keer opzetten
- timer = millis(); // timertje idem
- debounce1.attach(knopPin);
- debounce1.interval(20);
- debounce2.attach(knopPin2);
- debounce2.interval(20);
- }
- enum {
- initieerStap1 ,
- stap1 ,
- initieerStap2 ,
- stap2 ,
- initieerStap3 ,
- stap3 ,
- initieerStap4 ,
- stap4 ,
- initieerStap5 ,
- stap5 ,
- initieerStap6 ,
- stap6 ,
- initieerStap7 ,
- stap7 ,
- initieerStap8 ,
- stap8 ,
- initieerStap9 ,
- stap9 ,
- initieerStap10 ,
- stap10 ,
- initieerStap11 ,
- stap11 ,
- initieerStap12 ,
- stap12 ,
- initieerStap13 ,
- stap13 ,
- initieerStap14 ,
- stap14 ,
- initieerStap15 ,
- stap15 ,
- initieerStap16 ,
- stap16 ,
- initieerStap17 ,
- stap17 ,
- initieerStap18 ,
- stap18 ,
- initieerStap19 ,
- stap19 ,
- initieerStap20 ,
- stap20 ,
- initieerStap21 ,
- stap21 ,
- initieerStap22 ,
- stap22 ,
- initieerStap23 ,
- stap23 ,
- initieerStap24 ,
- stap24 ,
- initieerStap25 ,
- stap25 ,
- initieerStap26 ,
- stap26 ,
- initieerStap27 ,
- stap27 ,
- initieerStap28 ,
- stap28 ,
- initieerStap29 ,
- stap29 ,
- initieerStap30 ,
- stap30 ,
- initieerStap31 ,
- stap31 ,
- initieerStap32 ,
- stap32 ,
- initieerStap33 ,
- stap33 ,
- beginOpnieuw
- };
- void loop() {
- // Update the debouncer
- debounce1.update();
- debounce2.update();
- // Get the update value
- int value1 = debounce1.read();
- int value2 = debounce2.read();
- if (snelheid <10)
- {
- snelheid = 5;
- }
- // knopstatus = digitalRead(knopPin);
- // knopstatus2 = digitalRead(knopPin2);
- // put your main code here, to run repeatedly:
- //
- // verwerk de relevante stap
- //
- switch (volgendeStap) {
- case initieerStap1:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap1:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00000001);
- // digitalWrite(LED1, !digitalRead(LED1)); // Flip led 1
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap2:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap2:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00000010);
- // digitalWrite(LED2, !digitalRead(LED2)); // Flip led 2
- teller++; // verhoog teller tot 10
- if (teller > 1) { // alles gehad
- volgendeStap++;
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap3:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap3:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00000100);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap4:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap4:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00001000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap5:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap5:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00010000);
- // digitalWrite(LED1, !digitalRead(LED1)); // Flip led 1
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap6:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap6:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00100000);
- // digitalWrite(LED1, !digitalRead(LED1)); // Flip led 1
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap7:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap7:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b01000000);
- // digitalWrite(LED1, !digitalRead(LED1)); // Flip led 1
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap8:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap8:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b10000000);
- // digitalWrite(LED1, !digitalRead(LED1)); // Flip led 1
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap9:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap9:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000001, 0b00000000);
- // digitalWrite(LED1, !digitalRead(LED1)); // Flip led 1
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap10:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap10:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000010, 0b00000000);
- // digitalWrite(LED1, !digitalRead(LED1)); // Flip led 1
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap11:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap11:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000100, 0b00000000);
- // digitalWrite(LED1, !digitalRead(LED1)); // Flip led 1
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap12:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap12:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00001000, 0b00000000);
- // digitalWrite(LED2, !digitalRead(LED2)); // Flip led 2
- teller++; // verhoog teller tot 10
- if (teller > 1) { // alles gehad
- volgendeStap++;
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap13:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap13:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00010000, 0b00000000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap14:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap14:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00100000, 0b00000000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap15:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap15:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b01000000, 0b00000000);
- // digitalWrite(LED1, !digitalRead(LED1)); // Flip led 1
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap16:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap16:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (value2 == HIGH) {
- volgendeStap = volgendeStap +3;
- }
- if (millis() > timer) {
- lightLeds (0b10000000, 0b00000000);
- // digitalWrite(LED1, !digitalRead(LED1)); // Flip led 1
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- snelheid = snelheid*2;
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap17:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap17:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- //lightLeds (0b00000000, 0b00000000);
- analogWrite(Ledrechterspeler, 255); // rechterspeler is af, led rechterspeler aanzetten voor 3 sec
- tone(piezoBuz, 250, 100); // korte afkeurende toon
- delay(3000);
- analogWrite(Ledrechterspeler, 0); // led rechterspeler uit
- resetFunc(); // start de Arduino en dus het spel opnieuw op
- }
- break;
- case initieerStap18:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap18:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b01000000, 0b00000000);
- // digitalWrite(LED1, !digitalRead(LED1)); // Flip led 1
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- snelheid = snelheid /2;
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap19:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap19:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00100000, 0b00000000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap20:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap20:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00010000, 0b00000000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap21:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap21:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00001000, 0b00000000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap22:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap22:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000100, 0b00000000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap23:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap23:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000010, 0b00000000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap24:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap24:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000001, 0b00000000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap25:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap25:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b10000000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap26:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap26:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b01000000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap27:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap27:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00100000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap28:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap28:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00010000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap29:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap29:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00001000);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap30:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap30:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00000100);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap31:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap31:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00000010);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap32:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap32:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (value1 == HIGH) {
- snelheid = snelheid /4;
- volgendeStap = initieerStap2;
- }
- if (millis() > timer) {
- lightLeds (0b00000000, 0b00000001);
- teller++; // verhoog teller
- if (teller > 1) { // alles gehad?
- volgendeStap++; // we zijn hier klaar
- }
- else {
- snelheid = snelheid *2;
- timer = millis() + snelheid; // we zijn er nog niet dus de timer zetten
- }
- }
- break;
- case initieerStap33:
- teller = 0; // reset de teller
- lightLeds (0b00000000, 0b00000000); // zet de LED uit
- volgendeStap++;
- break;
- case stap33:
- //
- // alleen uitvoeren als de tijd is verstreken
- //
- if (millis() > timer) {
- //lightLeds (0b00000000, 0b00000000);
- analogWrite(Ledlinkerspeler, 255); //linkerspeler is af, led voor de linkerspeler aanzetten voor 3 sec
- tone(piezoBuz, 250, 100); // korte afkeurende toon
- delay(3000);
- analogWrite(Ledlinkerspeler, 0); // led linkerspeler uit
- resetFunc(); // start de Arduino en dus het spel opnieuw op
- }
- break;
- case beginOpnieuw:
- volgendeStap = 0; // begin bij de eerste stap
- break;
- default:
- break;
- }
- }
- void lightLeds (int second, int first) {
- digitalWrite (latchPin, LOW);
- shiftOut (dataPin, klokPin, LSBFIRST, first);
- shiftOut (dataPin, klokPin, LSBFIRST, second);
- digitalWrite (latchPin, HIGH);
- //delay (snelheid);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement