/** * Ablaufdiagramm - Zeitdiagramm * * schalter _----------_____ Schalterstellung * absaugung _-------------__ Verzoegertes abschalten * kreissaege ____-------_____ Verzoegertes einschalten * Der Schalter arbeitet invers und ist entprellt * Alle Zeiten in ms * */ #include #include #include using namespace Combie::Millis; Combie::Pin::InvInputPin<2> schalter; // schalter zwischen Pin und GND(invertierend) Combie::Pin::OutputPin<3> absaugung; // Combie::Pin::OutputPin<4> kreissaege; // Combie::Timer::EntprellTimer entprell { 20_ms}; // Schalter entprellen Combie::Timer::RisingEdgeTimer ton {500_ms}; // steigende Flanke wird verzoegert Combie::Timer::FallingEdgeTimer toff {500_ms}; // abfallende Flanke wird verzoegert void setup() { schalter.initPullup(); absaugung.init(); kreissaege.init(); } void loop() { bool merker = entprell = schalter; absaugung = toff = merker; kreissaege = ton = merker; }