Hallo ich habe ein Problem
Ich möchte gerne ein Programm schreiben das einen Sensor (z.b. Taster)
abfragt und das genau eine Minute lang. Mein Problem ist ich weiß nicht
wie ich das machen soll wenn ich delay sage kann ich ja nebenbei nichts
machen.
unsigned long ziel_zeit;
ziel_zeit = millis() + 1000L*60L;
while( ziel_zeit >= millis() )
{
// frage sensor ab
}
das code Fragmet oben zu schreiben dauerte leider 1 1/2 Minuten. Somit habe ich leider etwas länger als eine Minute programmiert. Ich hoffe das macht nichts.
Also, es spricht nichts dagegen, dieses Code-Fragment irgendwo mitten im Code zu benutzen. Das mit dem "flushen" hab ich aber nicht verstanden.
Das "L" ist an sich in diesem Fall nicht notwendig. Es handelt sich hier um den Zahlen-Anhängsel, der aus der Zahl eine "long" Zahl macht. Aber genauer müsste es eigentlich "UL" für unsigned long heissen:
unsigned long ziel_zeit;
ziel_zeit = millis() + 1000UL*60UL;
while( ziel_zeit >= millis() )
{
// frage sensor ab
}
Mit anderen worten "1000" wäre eine vorzeichenbehaftete 16 Bit Zahl, jedoch "1000UL" ist eine vorzeichenlose 32 Bit Zahl. Es ist an sich sicherer alle Terme eines Ausdrucks vom selben Datentyp zu haben. Da "millis()" einen unsigned long zurückgibt, sollte man auch einen unsigned long dazuaddieren.
Das war ein Wortwitz mit dem Titel dieses Threads: Jemand sollte etwas genau eine Minute programmieren (mit kleinem p). Ich habe aber 90 Sekunden gebraucht um das Codefragment zu programmieren (hab' s gestoppt)
Tatsächlich hatte ich den Titel falsch verstanden. Ich hab mich nämlich gefragt, wieso hier jemand gesucht wird, der eine Minute lang programmiert.