MTobjets: Example 5
Event management for Uno, Nano, Mega
C-A-T-H
Problem posed
Complete program recommended
This program is completely under interruption, and releases loop which can be used to do something else.
// *********************** SlowBlink ***********************
// On 1s, off 1s
const uint8_t LED_SLOW_BLINK = 4;
#include "MTobjects.h" // See http://arduino.dansetrad.fr/en/MTobjects
MTsoftPWM SlowBlink(LED_SLOW_BLINK, inpulses_width 1000000L micro_seconds, periods_width 2000000L micro_seconds);
// *********************** FastBlink ***********************
// On 0,11s, off 0,1s
const uint8_t LED_FAST_BLINK = 5;
#include "MTobjects.h" // See http://arduino.dansetrad.fr/en/MTobjects
MTsoftPWM FastBlink(LED_FAST_BLINK, inpulses_width 110000L micro_seconds, periods_width 210000L micro_seconds);
// *********************** Assymetric ***********************
// On 50ms, Off 1,11s
const uint8_t LED_ASSYMANDRIC = 6;
#include "MTobjects.h" // See http://arduino.dansetrad.fr/en/MTobjects
MTsoftPWM Assymetric(LED_ASSYMANDRIC, inpulses_width 50000L micro_seconds, periods_width 1110000L micro_seconds);
// *********************** A OR B ***********************
const uint8_t LED_A_OR_B = 7;
const uint8_t BUTTON_A_OU = 2;
const uint8_t BUTTON_B_OU = 3;
#include "MTobjects.h" // See http://arduino.dansetrad.fr/en/MTobjects
void OR(void);
MTbutton ButtonAor(BUTTON_A_OU, OR, OR);
MTbutton ButtonBor(BUTTON_B_OU, OR, OR);
void OR(void)
{
pinMode(LED_A_OR_B, OUTPUT);
digitalWrite(LED_A_OR_B, ButtonAor.getSelect() | ButtonBor.getSelect() ? HIGH : LOW);
}
// *********************** A AND B **********************
const uint8_t LED_A_AND_B = 8;
const uint8_t BUTTON_A_AND = 2;
const uint8_t BUTTON_B_AND = 3;
#include "MTobjects.h" // See http://arduino.dansetrad.fr/en/MTobjects
void AND(void);
MTbutton ButtonAand(BUTTON_A_AND, AND, AND);
MTbutton ButtonBand(BUTTON_B_AND, AND, AND);
void AND(void)
{
pinMode(LED_A_AND_B, OUTPUT);
digitalWrite(LED_A_AND_B, ButtonAand.getSelect() & ButtonBand.getSelect() ? HIGH : LOW);
}
// *********************** A XOR B ***********************
const uint8_t LED_A_XOR_B = 9;
const uint8_t BUTTON_A_XOR = 2;
const uint8_t BUTTON_B_XOR = 3;
#include "MTobjects.h" // See http://arduino.dansetrad.fr/en/MTobjects
void XOR(void);
MTbutton ButtonAxor(BUTTON_A_XOR, XOR, XOR);
MTbutton ButtonBxor(BUTTON_B_XOR, XOR, XOR);
void XOR(void)
{
pinMode(LED_A_XOR_B, OUTPUT);
digitalWrite(LED_A_XOR_B, ButtonAxor.getSelect() ^ ButtonBxor.getSelect() ? HIGH : LOW);
}
// *********************** To do something else *************************
void setup(){}
void loop(){}