MTbutton: Exemple 4
Gestion par événements pour UNO, Nano, Mega

Minuterie

Ce programme allume une led si on appuie sur un bouton et l'éteint si on appuie une deuxième fois ou si 5 secondes se sont écoulées

Programme complet recommandé

Ce programme se fait complètement sous interruption, et libère loop qui peut être utilisé pour faire autre chose.

// Ce programme allume une led si on appuie sur un bouton et l'éteint si on
// appuie une deuxième fois ou si 5 secondes se sont écoulées

#include <MTobjects.h> // V1.0.4 Voir http://arduino.dansetrad.fr/MTobjects

const uint8_t PIN_BUTTON = A0; // Bouton câblé entre GND et A0


void eteint(void) // Appelée 5s après un allumage
{
  digitalWrite(LED_BUILTIN, LOW); // On éteint
}

// Temporisation de 5s qui va éteindre
MTclock Temporisateur(5000 milli_secondes, eteint, 1 action_et_arret, MT_OFF);

void change(void)
{
  if (digitalRead(LED_BUILTIN)) // Si c'est allumé
    digitalWrite(LED_BUILTIN, LOW); // On éteint
  else 
  {
    digitalWrite(LED_BUILTIN, HIGH); // Sinon on allume
    Temporisateur.start();
  }
}

MTbutton Bouton(PIN_BUTTON, change); // Un clic on allume, un clic on éteint



void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {}