Arduino Uno Zeit zwischen LED an und Taster drücken messen?


15.05.2024, 09:10

So sieht unser Programm bisher aus:

int t,r,l,i,v;

void setup(){

 pinMode(3,INPUT_PULLUP);

 pinMode(9,OUTPUT);

 pinMode(10,OUTPUT);

 pinMode(11,OUTPUT);

 Serial.begin(9600);

 randomSeed(analogRead(A0));

 t=random(1000,10000);

 l=random(9,12);

 r=millis();

 }

void loop(){

 delay(t);

 digitalWrite(l,HIGH);

 if(i==0){

  Serial.println(r);}

  delay(1000);

}

2 Antworten

Die Funktion "millis()" gibt ein unsigned long zurück. ALso müssen die Variablen auch unsigned long sein.

Du setzt also eine solche Variable (z.B. t1) auf die Ausgabe von millis(), und dann wertest Du die Taste aus, wird sie gedrückt, so weist Du den Wert von millis() einer anderen Variable (z.B. t2) zu.

Die Differenz aus t2 und t1 ergibt die verstrichenen tausendstel Sekunden.

Naja, Du musst zu dem Zeitpunkt, wo die LED angeht eine globale Variable auf den aktuellen Zeitstempel setzen und beim Signal, dass der Taster gedrückt wurde, einen zweiten Zeitstempel auf eben diesen Zeitstempel. Die Differenz der beiden ist die verstrichene Zeit.