#define CHAVE 12
#define LED 39
uint8_t statusChave;
uint8_t ultimoStatusChave = 0;
unsigned long tempoUltimoDebounce = 0;
unsigned long tempoDebounce = 50; //milisegundos

void setup() {
  Serial.begin(115200);  
  pinMode(CHAVE, INPUT_PULLUP);
  pinMode(LED, OUTPUT);  
}

void loop() { 
  int leitura = digitalRead(CHAVE);
  if (leitura != ultimoStatusChave){ //houve mudança.  
    tempoUltimoDebounce = millis();  //inicializa contador
  }
  if((millis()-tempoUltimoDebounce) > tempoDebounce){// estourou contador?
    if (leitura != statusChave) {  //houve mudança.
      statusChave = leitura;  //atualiza estado      
      Serial.printf("Chave em nível lógico %d\n", statusChave);
      acionaLed(statusChave);      
    }
  }
  ultimoStatusChave = leitura;
}

void acionaLed(uint8_t status){
  if(status){        
    digitalWrite(LED, HIGH);       
  }
  else{
    digitalWrite(LED, LOW);
  }
}
Loading
franzininho-wifi