ElEspanol:
Kann aber dann nicht stimmen.Das würde ja puls==!millis()%1000 entsprechen, müsste also genau treffen. Tatsächlich funktioniert es aber wie ich gedacht habe.
#include "CombieTimer.h"
Combie::Pulsator puls(1);
void setup()
{
pinMode(LED_BUILTIN,OUTPUT);
}
void loop()
{
if(puls)
{
digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));
puls.setInterval(digitalRead(LED_BUILTIN) ? 1000 : 500);
}
delay(157); //soll den Rest des Programmablaufs simulieren. 100 bzw. 500 werden nie genau getroffen
}
Testprogram:
#include "CombieTimer.h"
using Combie::Pulsator;
Pulsator puls(1000);
void setup(void)
{
Serial.begin(9600);
Serial.println();Serial.println("Start");Serial.println();
}
void loop(void)
{
if(puls) Serial.println(millis());
}
Resultat:
Start
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
11000
12000
13000
14000
15000
16000
17000
Kommt also exakt auf dem Punkt.