Pročetl jsem hodně, ale nikde jsem nenašel inspiraci. Všichni pracují s čítačem pro periodickou generaci přerušení ale příklad pro jednorázové spuštění jsem nenalezl.
Kód: Vybrat vše
#include <TimerOne.h>
#define vstup 2 //impuls preruseni
unsigned long zpozdeni = 900000;
unsigned long delkaPulsu = 100000;
void zpozdeniSpouste(){
digitalWrite(LED_BUILTIN,HIGH);
Timer1.stop();
Timer1.initialize(delkaPulsu);
Timer1.attachInterrupt(delkaSpouste);
Serial.println("start spouste");
}
void delkaSpouste(){
digitalWrite(LED_BUILTIN,LOW);
Timer1.detachInterrupt(); //zruseni preruseni od casovace
attachInterrupt(digitalPinToInterrupt(vstup), vnejsiPreruseni, LOW); //vazba na preruseni
Serial.println("konec spouste");
}
void vnejsiPreruseni(){
detachInterrupt(digitalPinToInterrupt(vstup));
Timer1.initialize(zpozdeni);
Timer1.attachInterrupt(zpozdeniSpouste);
Timer1.start();
Serial.println("preruseni a start zpozdeni");
}
void setup() {
interrupts();
attachInterrupt(digitalPinToInterrupt(vstup), vnejsiPreruseni, LOW); //vazba na preruseni
Timer1.stop();
Serial.begin(57600);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN,LOW);
pinMode(vstup, INPUT_PULLUP);
}
void loop() {
Serial.println("cyklus");
delay(5000);
}