Hi, i very don't know why my program is doing the right thing for 2 loop and then it add 65 seconds to "dt". It make no sense.
int bottone1 = 3;
int bottoneStart = 4;
int ledV = 7;
int ledR5 = 13;
int ledR4 = 12;
int ledR3 = 11;
int ledR2 = 10;
int ledR1 = 9;
unsigned int casuale;
int t1 = 0;
float dt = 0;
int i = 0;
void setup() {
pinMode(bottone1, INPUT);
pinMode(bottoneStart, INPUT);
pinMode(ledV, OUTPUT);
pinMode(ledR1, OUTPUT);
pinMode(ledR2, OUTPUT);
pinMode(ledR3, OUTPUT);
pinMode(ledR4, OUTPUT);
pinMode(ledR5, OUTPUT);
Serial.begin(9600);
}
void loop() {
spegni();
digitalWrite(ledV,LOW);
bool START = true;
bool RUN = true;
i = 0;
t1 = 0;
dt = 0;
delay(100);
while(START){
if(digitalRead(bottoneStart) == HIGH){
START = false;
Serial.println("Si comincia!");
for (i = 0; i < 5; i++){
digitalWrite(ledV, HIGH);
delay(100);
digitalWrite(ledV,LOW);
delay(100);
}
delay(10);
accendi();
casuale = random(500, 5000);
delay(casuale);
spegni();
t1 = millis();
while(RUN){
if(digitalRead(bottone1) == HIGH){
RUN = false;
dt = (millis()-t1) * 0.001;
}
}
Serial.print("Tempo di reazione: ");
Serial.print(dt, 3);
Serial.println(" Secondi");
digitalWrite(ledV, HIGH);
delay(500);
digitalWrite(ledV, LOW);
}
}
}
void accendi(){
delay(1000);
digitalWrite(ledR1, HIGH);
delay(1000);
digitalWrite(ledR2, HIGH);
delay(1000);
digitalWrite(ledR3, HIGH);
delay(1000);
digitalWrite(ledR4, HIGH);
delay(1000);
digitalWrite(ledR5, HIGH);
}
void spegni(){
digitalWrite(ledR1, LOW);
digitalWrite(ledR2, LOW);
digitalWrite(ledR3, LOW);
digitalWrite(ledR4, LOW);
digitalWrite(ledR5, LOW);
}
