Button debounce hardwarematig

Hardware geleverd door Arduino
Berichten: 167
Geregistreerd: 19 Apr 2014, 15:03

Re: Button debounce hardwarematig

Berichtdoor Hanneman » 15 Aug 2014, 14:59

Aangezien ik best wel, zeg maar gerust verslaafd ben aan Arduino heb ik waar ik eerder faalde nog maar eens de Bounce library een kans gegeven.

Volgens mij werkt het nu prima.

Heeft deze library nadelen ten opzichte van jouw code Nico?

Code: Alles selecteren
#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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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 (0b0000000, 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

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Button debounce hardwarematig

Berichtdoor nicoverduin » 15 Aug 2014, 17:09

Geen idee. Moet je zelf maar beoordelen...... Ik heb gewoon een functie die prima werkt. Er is een prima library waar meer functionaliteit in zit (OneButton). Dus waarom zou ik verder kijken?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 167
Geregistreerd: 19 Apr 2014, 15:03

Re: Button debounce hardwarematig

Berichtdoor Hanneman » 15 Aug 2014, 17:13

ja das waar. Die one button heeft idd debounce en verschillende functies.

Vorige

Terug naar Arduino hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 46 gasten