//วงจรทดสอบการตอบสนองของร่างกายต่อแสงสี แดง
const int redLedPin = 8; // ขาต่อ LED สีแดง
const int greenLedPin = 9; // ขาต่อ LED สีเขียว
const int blueLedPin = 10; // ขาต่อ LED สีน้ำเงิน
const int buttonPin = 2; // ขาต่อปุ่มกด
unsigned long startTime; // เวลาที่เริ่มจับ
unsigned long reactionTime; // เวลาตอบสนอง
int ledColor; // สีของ LED ที่ถูกสุ่มเลือก
void setup() {
pinMode(redLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(blueLedPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // ใช้ Pull-up ภายใน
Serial.begin(9600);
Serial.println("กดปุ่มเพื่อเริ่มต้น...");
}
void loop() {
while (digitalRead(buttonPin) == HIGH); // รอให้กดปุ่มก่อนเริ่ม
delay(random(1000, 5000)); // หน่วงเวลาแบบสุ่ม 1-5 วินาที
ledColor = random(3); // สุ่มเลือกสี (0=แดง, 1=เขียว, 2=น้ำเงิน)
if (ledColor == 0) {
digitalWrite(redLedPin, HIGH);
Serial.println("ทดสอบสีแดง...");
} else if (ledColor == 1) {
digitalWrite(greenLedPin, HIGH);
Serial.println("ทดสอบสีเขียว...");
} else {
digitalWrite(blueLedPin, HIGH);
Serial.println("ทดสอบสีน้ำเงิน...");
}
startTime = millis(); // บันทึกเวลาเริ่มต้น
while (digitalRead(buttonPin) == HIGH); // รอให้กดปุ่ม
reactionTime = millis() - startTime; // คำนวณเวลาตอบสนอง
// ปิด LED ทุกสี
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, LOW);
digitalWrite(blueLedPin, LOW);
Serial.print("เวลาตอบสนองของคุณ: ");
Serial.print(reactionTime / 1000.0, 3); // แสดงเป็นวินาที
Serial.println(" วินาที");
delay(2000); // หน่วงเวลาก่อนเริ่มรอบใหม่
Serial.println("กดปุ่มเพื่อเริ่มต้นรอบใหม่...");
}