Schupp icon

Taster entprellen

Schupp | PRO | 01/27/21 04:46:06 PM UTC (Edited) | 0 ⭐ | 1255 👁️ | Never ⏰ | []
Arduino |

1.98 KB

|

None

|

0 👍

/

0 👎

int test1 = 0;
boolean blocklast = false;
unsigned long MB[6] = {34, 39, 35, 0, 5, 6};
unsigned long MyPreviousMillis[6], tempstate[6], lastAtm, tm;
unsigned long laststate[6] = {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};
 
void setup() {
  // put your setup code here, to run once:
  for (int MyButton = 0; MyButton <= 1; MyButton++)
    pinMode(MB[MyButton], INPUT);
  Serial.begin(115200);
}
 
 
void loop() {
  tm = millis();
  if ((tm - lastAtm) >=  100UL )                        //Abtastrate //Entprellung
  {
    lastAtm = tm; //Letzte abtastung setzen
    if ((!tempstate[0] && !laststate[0] && !tempstate[1] && !laststate[1]))
    {
      test1 = 0;
      laststate[0] = HIGH;
      laststate[1] = HIGH;
      tempstate[0] = HIGH;
      tempstate[1] = HIGH;
 
    } else
      for (int MyButton = 0; MyButton <= 1; MyButton++) { //Buttons durchgehen
        tempstate[MyButton] = digitalRead(MB[MyButton]);  //Button einlesen
        if ( tempstate[MyButton] == LOW) {                //Gedrückt?
          if (!laststate[MyButton]) {                     //War der Button vorher schon gedrückt?
            if ( tm - MyPreviousMillis[MyButton] >= 200) {//wiederholzeit bei gedrückt
              MyPreviousMillis[MyButton] = tm;
              blocklast = true;                           //Blockiere beim loslassen einen weiteren Auslöser
              if (MyButton == 0)Serial.println(--test1); else if (MyButton == 1)Serial.println(++test1); //Mache hier was für den jeweiligen Button, bestenfalls switch-case
            }
          } //Ende:War der Button vorher schon gedrückt?
          laststate[MyButton] = tempstate[MyButton];
        } else {
          if (laststate[MyButton] == LOW) { //War der Button vorher gedrückt?
            if (MyButton == 0 && !blocklast)Serial.println(--test1);
            if (MyButton == 1 && !blocklast)Serial.println(++test1);
            blocklast = false;
            laststate[MyButton] = HIGH;
          }
        }
      }
  }
}
 

Comments