Sketch stoppt nach 30 s

Ich steh mal wieder voll aufm Schlauch…

Immer nach 32700 ms hält es einfach an.
Hab den Sketch schon von vorne nach hinten über Kopf gedreht.

Es geht immer.
Und es stoppt immer nach 32 s…

int rpm;
int vel;
int t;
int onTime =2;
int offTime = 200;

#define rpmIn   A0
#define rpmOut  13
#define velIn   A1
#define velOut  11

void setup() {
  // put your setup code here, to run once:
pinMode(rpmIn,INPUT);
pinMode(rpmOut,OUTPUT);
pinMode(velIn,INPUT);
pinMode(velOut,OUTPUT);
Serial.begin(9600);



}

void loop() {
  // put your main code here, to run repeatedly:

  if (t + offTime < millis()){
      digitalWrite(rpmOut,HIGH);
      t=millis();
      Serial.println(t);      
    }
  
  if (t + onTime < millis()){
      digitalWrite(rpmOut,LOW);      
     // t=millis();
      Serial.println(t);
      
    }
    
   
}

Vielleicht seh ich ja grad den Wald vor lauter Bäumen nicht…
Werde mal 5 min. das gute Wetter genießen :wink:

Gruß

schUk0

schUk0:
Werde mal 5 min. das gute Wetter genießen :wink:

Das ist eine gute Idee! Ich gehe zum Rauchen auch immer an die frische Luft (was sonst soll ich dort?!)

Mir ist aufgefallen, dass t nicht initialisiert wird.

Ich habe zwar mal gelesen, dass lokale Variablen automatisch initialisiert werden und globale nicht (oder umgekehrt) - weil ich aber keine Lust habe mir das zu merken, initialisiere ich einfach immer.

Gruß

Gregor

int t;

Was ist der Wertebereich von int?

Außerdem ist die Abfrage generell falsch. Man macht millis() -vorherige Zeit < Intervall

Und ich würde überlegen, statt Precompilerdefinitionen Konstanten zu nehmen. Das erzeugt üblicherweise erheblich einfacher zu verstehende Fehlermeldungen. Precompiler benutze ich eigentlich nur, wenn ich String zusammensetzen will (z.B. die Basis für einen MQTT-Channel), weil der Precompiler direkt benachbarte String literals zusammenfasst und man dementsprechend im code nicht konkatenieren muss. ("fu""bar" -> "fubar")

Serenifly:

int t;

Was ist der Wertebereich von int?

On the Arduino Uno (and other ATMega based boards) an int stores a 16-bit (2-byte) value. This yields a range of -32,768 to 32,767 (minimum value of -2^15 and a maximum value of (2^15) - 1).

Danke für den Denkanstoß !! :grin:

Die Reihenfolge der Abfrage hatte ich zu dem Zeitpunkt schon 5 mal hin und her gewendet.

Kann dann geschlossen werden würde ich sagen.

Gruß

schUk0