MTobjets: Exemple 5
Gestion par événements pour UNO, Nano, Mega
C-A-T-H
Problème posé
Vu sur un forum:
Programme complet recommandé
Ce programme se fait complètement sous interruption, et libère loop qui peut être utilisé pour faire autre chose.
// *********************** SlowBlink *********************** // Allumée 1s, éteinte 1s const uint8_t LED_SLOW_BLINK = 4; #include "MTobjects.h" // Voir http://arduino.dansetrad.fr/MTobjects MTsoftPWM SlowBlink(LED_SLOW_BLINK, impulsions_de 1000000L micro_secondes, periodes_de 2000000L micro_secondes); // *********************** FastBlink *********************** // Allumée 0,11s, éteinte 0,1s const uint8_t LED_FAST_BLINK = 5; #include "MTobjects.h" // Voir http://arduino.dansetrad.fr/MTobjects MTsoftPWM FastBlink(LED_FAST_BLINK, impulsions_de 110000L micro_secondes, periodes_de 210000L micro_secondes); // *********************** Assymetric *********************** // Allumée 50ms, période 1,11s const uint8_t LED_ASSYMETRIC = 6; #include "MTobjects.h" // Voir http://arduino.dansetrad.fr/MTobjects MTsoftPWM Assymetric(LED_ASSYMETRIC, impulsions_de 50000L micro_secondes, periodes_de 1110000L micro_secondes); // *********************** A ou B *********************** const uint8_t LED_A_OU_B = 7; const uint8_t BOUTON_A_OU = 2; const uint8_t BOUTON_B_OU = 3; #include "MTobjects.h" // Voir http://arduino.dansetrad.fr/MTobjects void ou(void); MTbutton BoutonAou(BOUTON_A_OU, ou, ou); MTbutton BoutonBou(BOUTON_B_OU, ou, ou); void ou(void) { pinMode(LED_A_OU_B, OUTPUT); digitalWrite(LED_A_OU_B, BoutonAou.getSelect() | BoutonBou.getSelect() ? HIGH : LOW); } // *********************** A ET B *********************** const uint8_t LED_A_ET_B = 8; const uint8_t BOUTON_A_ET = 2; const uint8_t BOUTON_B_ET = 3; #include "MTobjects.h" // Voir http://arduino.dansetrad.fr/MTobjects void et(void); MTbutton BoutonAet(BOUTON_A_ET, et, et); MTbutton BoutonBet(BOUTON_B_ET, et, et); void et(void) { pinMode(LED_A_ET_B, OUTPUT); digitalWrite(LED_A_ET_B, BoutonAet.getSelect() & BoutonBet.getSelect() ? HIGH : LOW); } // *********************** A ouexclusif B *********************** const uint8_t LED_A_OUEXCLUSIF_B = 9; const uint8_t BOUTON_A_OUEXCLUSIF = 2; const uint8_t BOUTON_B_OUEXCLUSIF = 3; #include "MTobjects.h" // Voir http://arduino.dansetrad.fr/MTobjects void ouexclusif(void); MTbutton BoutonAouexclusif(BOUTON_A_OUEXCLUSIF, ouexclusif, ouexclusif); MTbutton BoutonBouexclusif(BOUTON_B_OUEXCLUSIF, ouexclusif, ouexclusif); void ouexclusif(void) { pinMode(LED_A_OUEXCLUSIF_B, OUTPUT); digitalWrite(LED_A_OUEXCLUSIF_B, BoutonAouexclusif.getSelect() ^ BoutonBouexclusif.getSelect() ? HIGH : LOW); } // *********************** Pour faire autre chose *********************** void setup(){} void loop(){}