const int LED = LED_BUILTIN;
const int BUTTON = PA0;
void setup()
{
Serial.begin(115200);
pinMode(LED, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
randomSeed(micros());
digitalWrite(LED, LOW);
Serial.println("Reaction test started");
}
void loop()
{
// Random LED-off period: 1 to 5 seconds
int offTime = random(1000, 5001);
digitalWrite(LED, LOW);
delay(offTime);
// Turn LED on
digitalWrite(LED, HIGH);
// Measure the first 100 ms
unsigned long startTime = millis();
bool fastReaction = false;
while (millis() - startTime < 400)
{
if (digitalRead(BUTTON) == LOW)
{
fastReaction = true;
break;
}
}
if (fastReaction)
{
// Fast reaction: LED remains on for 5 seconds
Serial.println("FAST REACTION!");
delay(5000);
}
else
{
// Normal reaction: LED remains on for 1 second total
unsigned long elapsed = millis() - startTime;
if (elapsed < 1000)
{
delay(1000 - elapsed);
}
}
// Turn LED off
digitalWrite(LED, LOW);
}