ich habe mir einen Arduino mega 2560 gekauft und probiere so das eine oder andere aus.
Um die "böse" delay() Funktion zu vermeiden habe ich mir das Beispiel von Blink without delay angeschaut. Zu der If-Bedingung habe ich eine Frage:
...schnipp...
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
...schnapp...
Wenn ich das richtig verstanden habe fängt millis() nach ca. 50 Tagen von vorne an zu zählen (unsigned long wäre "voll").
Dann müsste aber die Funktion ab diesem Zeitpunkt nicht mehr funktionieren, denn currentMillis wäre dann wieder deutlich kleiner als previousMillis und die Bedingung könnte nicht (nie) mehr erfüllt werden
(currentMillis - previousMills wäre dann für mindesten 49 Tage kleiner als 1000, falls es überhaupt je wieder über 1000 kommen würde).
Oder stehe ich da gedanklich auf dem Schlauch?
Eine kleine Zahl Minus einer sehr großen Zahl ergibt wieder eine sehr große Zahl (wenn die Datentypen unsigned sind). Und die ist größer als das Intervall
che2016:
Wenn ich das richtig verstanden habe fängt millis() nach ca. 50 Tagen von vorne an zu zählen (unsigned long wäre "voll").
Genau nach 232-1 Millisekunden.
che2016:
Dann müsste aber die Funktion ab diesem Zeitpunkt nicht mehr funktionieren, denn currentMillis wäre dann wieder deutlich kleiner als previousMillis und die Bedingung könnte nicht (nie) mehr erfüllt werden
(currentMillis - previousMills wäre dann für mindesten 49 Tage kleiner als 1000, falls es überhaupt je wieder über 1000 kommen würde).
int x = -1;
unsigned int x_a = abs(x); // +1 : aus 0xFFFF wird 0x0001 gemacht
unsigned int x_u = (unsigned int)x; // +65535 : 0xFFFF wird als positive Zahl interpretiert
Ein "Ja" erschien mir für den TO zielführender als ein "Nein". Darum habe ich mit "Ja" geantwortet, wohl wissend, daß der Begriff "ähnlich" schon einer gefährlichen Dehnung der Bedeutung bedarf. Ich hoffe, Du kannst mir diese Priorisierung der Verständlichkeit gegenüber der Genauigkeit nachsehen.
Das Gute an diesem Forum ist ja die jederzeit mögliche Präzisierung. Ich bin manchmal auch pingelig, wenn ich meine, es sein zu müssen
Ein "Ja" erschien mir für den TO zielführender als ein "Nein". Darum habe ich mit "Ja" geantwortet, wohl wissend, daß der Begriff "ähnlich" schon einer gefährlichen Dehnung der Bedeutung bedarf. Ich hoffe, Du kannst mir diese Priorisierung der Verständlichkeit gegenüber der Genauigkeit nachsehen.
Ich wollte auch nicht unbedingt dich, agmue, belehren oder korrigieren oder gar bekehren, sehe es eben nur anders rum: Auch der TO oder wer immer hier mitliest, sollte den Unterschied zwischen einem unsigned Datentyp und der Funktion abs() verstehen. Und gar nicht erst in Ideen "so ähnlich wie" bestärkt werden...
Meine Antwort wäre "Nein, schade dass du da was durcheinander wirfst" gewesen
( Auch leicht verständlich, finde ich, und mit meinem vorigen Beitrag zusammen evtl. gar überzeugend ? )
Ob das jetzt pingelig ist, will ich keinen Streit anfangen, danke che2016 jedenfalls, für den Anlass