Code: Alles auswählen
// Baudrate fuer Serial Schnittstelle
const int baudSerial = 9600;
// ------Zeitmerker Deklaration ----
unsigned long aktuellezeit = 0;
// ------millis Deklaration 01 -----
unsigned long pausestartzeit01 = 0; // Tastenabfrage von Taster02 300ms aussetzen
const unsigned long pausezeit01 = 1000;
// ------millis Deklaration 02 -----
unsigned long pausestartzeit02 = 0; // Tastenabfrage von Taster02 300ms aussetzen
const unsigned long pausezeit02 = 2000;
// ------millis Deklaration 03 -----
unsigned long pausestartzeit03 = 0; // Tastenabfrage von Taster02 300ms aussetzen
const unsigned long pausezeit03 = 3000;
//-----------------------------------------------------------------------------------
void setup()
{
// Serial Schnittstelle starten
Serial.begin(baudSerial);
}
//----------------------------------------------------------------------------------
void loop() {
// -------aktuelle millis in jedem Loop - Durchgang aktualisieren-----
aktuellezeit = millis(); // Aktuelle Zeit für alle Millis Aktionen übergeben
//------------------Erste Aktion-------------------------------------------------
if (aktuellezeit - pausestartzeit01 >= pausezeit01) // Eine Sekunde abgelaufen??
{
//Hier die aktuelle Aktion oder mehr Aktionen einsetzen
Serial.println(F("1 Sekundentakt"));
Serial.println(aktuellezeit);
pausestartzeit01 = aktuellezeit; // Neue Pausestartzeit übergeben
}
//------------------Zweite Aktion-------------------------------------------------
if (aktuellezeit - pausestartzeit02 >= pausezeit02) // Zwei Sekunden abgelaufen??
{
//Hier die aktuelle Aktion oder mehr Aktionen einsetzen
Serial.println(F("2 Sekundentakt"));
Serial.println(aktuellezeit);
pausestartzeit02 = aktuellezeit; // Neue Pausestartzeit übergeben
}
//------------------Dritte Aktion-------------------------------------------------
if (aktuellezeit - pausestartzeit03 >= pausezeit03) // Drei Sekunden abgelaufen??
{
//Hier die aktuelle Aktion oder mehr Aktionen einsetzen
Serial.println(F("3 Sekundentakt"));
Serial.println(aktuellezeit);
pausestartzeit03 = aktuellezeit; // Neue Pausestartzeit übergeben
}
}
Die Serial.println() kann man natürlich verschwinden lassen, ausser man will kontrollieren ob alles korrekt abläuft. Die Zeit für die jeweilige Zelle läuft immer wieder neu los, wenn man die "pausestartzeit" an die "aktuellezeit" angleicht. Man kann also z.B. die Zeile "pausestartzeit02 = aktuellezeit;" auch aus der Zelle herausnehmen und wo anders im Loop diese Startzeit aktivieren. Egal wo diese Zeile ausgeführt wird, ab da läuft die Zeit für diese Zelle neu ab, und wird nach Ablauf der zugehörigen "pausezeit" wieder EINMAL ausgeführt.