mercredi 10 mai 2017

Bouton reset

Le montage suivant, permet de réaliser un bouton de reset. Il faut rester appuyer 3 secondes sur le bouton, la LED interne de la carte s'allume quelque secondes, puis une action se réalise, ici message sur le port série. Ce type d'installation peut être utiliser pour réinitialiser des paramètres par exemple.

Schema :

Le bouton est branché sur le port GPIO 14 (D5 sur la carte).

Sketch :

unsigned long lastResetPressTime;
int lastResetPressState = HIGH;
const int RESET_PRESS_TIME = 3000;
const int RESET_BUTTON =  14; 
const int LED_PIN =  LED_BUILTIN;  

void setup() {
  Serial.begin(115200);
  pinMode(RESET_BUTTON, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, HIGH);

}

void loop() {
  if (digitalRead(RESET_BUTTON) == LOW)
  {
    if(lastResetPressState == HIGH) {
        lastResetPressState = LOW;
        lastResetPressTime = millis();
    } else if ((millis() - lastResetPressTime) > RESET_PRESS_TIME) {
      digitalWrite(LED_PIN, LOW);
      delay(1500);
      digitalWrite(LED_PIN, HIGH);
      delay(1500);
      lastResetPressState = HIGH;
      Serial.println("reset");
    }

  } else {
    lastResetPressState = HIGH;
    digitalWrite(LED_PIN, HIGH);
  }

}