variables globales : t0 (utilisé pout le 'top chrono' appui court/long) etat (l'état de l'automate) oldEtatBP (état mémorisé du Bouton Poussoir 'BP') constantes : WAIT <- 1 (constante désignant l'état 'wait') START <- 2 (constante désignant l'état 'start') STOP <- 3 (constante désignant l'état 'stop') pinLEDR <- 5 (la broche de la LED Rouge ) pinLEDV <- 6 (la broche de la LED Verte ) pinBP <- 7 (la broche du bouton poussoir) configurer : pinBP en entrée, pinLEDR et pinLEDV en sortie // Initialisation des variables globales qui le nécessitent : oldEtatBP <- LOW // Définition de l'état initial : état <- WAIT éteindre LEDR allumer LEDV loop: // pour ARDUINO, la boucle est assurée par la fonction loop // 1 - lecture des périphériques qui fournissent une entrée // correspondant à un événement de l'automate.... // (exploitation du diagramme des états) etatBP <- lecture de l'état du Bouton Poussoir // // 2 - Traitement des événements entrainnant une transition d'état // (cf Tableau des transitions d'état) si oldEtatBP est LOW ET etatBP est HIGH : // Appui sur BP => Front montant | t0 <- temps initial sinon si oldEtatBP est HIGH ET etatBP est LOW : // BP relâché => Front descendant | t1 <- temps courant | si t1 - t0 < 1 secondes: // événement AC (Appui Court) détecté | |si etat est WAIT : | | etat <- START | |sinon si etat est START : | | etat <- STOP | | allumer la LEDR et éteindre la LEDV | |sinon si etat est STOP : | | etat <- START | | éteindre la LEDR sinon si oldEtatBP est HIGH ET etatBP est HIGH : // BP appui maintenu ... | t1 <- temps courant | si t1 - t0 >= 1 secondes: // événement AL (appui long) détecté | | si état est STOP | | | état <- WAIT | | | éteindre LEDR et allumer LEDV | | si état est START | | | état <- WAIT | | | allumer LEDV // 3 - Traiter les actions (permanentes) à faire pour les états possibles : // (Exploitation du Tableau des états) si etat est WAIT : | RAF (Rien A Faire) sinon si etat est START: | faire clignoter la LEDV : | mettre la LEDV dans l'état opposé à son état actuel | (allumée -> éteinte ou éteinte-> allumée) sinon etat est STOP: | RAF mémoriser etatBP dans oldEtatBP attendre "un peu" fin loop