Abstract
โครงการนี้นำเสนอระบบวัดเวลาการตอบสนอง (Reaction Time) ที่ใช้งานง่ายและต้นทุนต่ำ ใช้บอร์ด Arduino UNO R4 ร่วมกับจอ TM1637 เพื่อแสดงผลรูปแบบ s.mmm และส่งผลลัพธ์ผ่าน Serial ให้หน้าเว็บที่พัฒนาโดย Bootstrap + Chart.js และ Web Serial API. ผู้ใช้สามารถบันทึกผลเป็น CSV ดูสถิติ Count/Avg/Best/Worst และกราฟแบบเส้น/ฮิสโตแกรมแบบเรียลไทม์ โดยไม่ต้องมีเซิร์ฟเวอร์ เหมาะสำหรับสาธิตเชิงการศึกษาและงานวิจัยพฤติกรรมการตอบสนอง
Overview
- บอร์ด: Arduino UNO R4 (WiFi/Minima)
- จอ: TM1637 (CLK=D3, DIO=D6, VCC=5V, GND=GND)
- ปุ่ม: D2 ↔ GND (INPUT_PULLUP)
- LED: D4 (แดง), D5 (เขียว) ผ่าน R 220–330Ω ลง GND
- พฤติกรรม: รอสุ่มเวลา → ไฟเขียว → กดปุ่มเพื่อจับเวลา (นับเฉพาะตอนกด)
How it works
- กดปุ่มเริ่ม → ไฟแดงติด, ระบบรอแบบสุ่ม 1–10 วินาที
- ครบเวลา → ไฟเขียวติด (READY)
- ผู้เล่นกดปุ่ม → หยุดเวลา, แสดงผล s.mmm บนจอ และส่งบรรทัด [RT] Reaction = <ms> ms ทาง Serial
- หน้าเว็บอ่าน Serial ผ่าน Web Serial แล้วบันทึก/คำนวณสถิติ + วาดกราฟ
ใช้เว็บเบราว์เซอร์: Chrome/Edge (Desktop) และเปิดผ่าน HTTPS (เช่น GitHub Pages) หรือ localhost
Test Procedure
1) เตรียมฮาร์ดแวร์
- TM1637 → VCC=5V, GND=GND, CLK=D3, DIO=D6
- ปุ่ม → D2 ↔ GND และตั้ง INPUT_PULLUP
- LED แดง D4 → R 220–330Ω → LED → GND
- LED เขียว D5 → R 220–330Ω → LED → GND
- เสียบ Arduino UNO R4 ด้วยสาย USB
2) อัปโหลดสเก็ตช์
- เลือกบอร์ด/พอร์ต UNO R4 ใน Arduino IDE
- ติดตั้งไลบรารี TM1637Display
- พิมพ์ผลลัพธ์รูปแบบ [RT] Reaction = <ms> ms ที่ 9600 bps
- หลังบูต จอควรแสดง 0 และไฟทดสอบติดดับสั้น ๆ
3) เปิดหน้าเว็บทดสอบ
- เปิด Reflex Test หรือไฟล์ reflex.html
- กด Connect เลือกพอร์ตของบอร์ด แล้วเชื่อมต่อ
- สถานะเป็น Connected และมี Live Log
- ใช้ Chrome/Edge (Desktop) และ HTTPS หรือ localhost
4) วิธีเล่น/ทดสอบ
- กดปุ่ม 1 ครั้งเพื่อเริ่มรอ (ไฟแดงติด)
- รอจนไฟเขียว (READY) ติด—ห้ามกดก่อนเวลา
- ไฟเขียวติดแล้วกดทันที เพื่อหยุดเวลาและบันทึกผล
- ระบบเพิ่มผลลงตาราง/กราฟอัตโนมัติ
- กดอีกครั้งเพื่อเริ่มรอบถัดไป
5) บันทึก/ดูสถิติ
- ปุ่ม Download CSV เพื่อบันทึกผลทั้งหมด
- KPI: Count / Average / Best / Worst แบบเรียลไทม์
- กราฟเส้น = ลำดับการกด, ฮิสโตแกรม = การกระจายค่า (ปรับ Bin ได้)
Troubleshooting
- “Failed to open serial port” → ปิด Serial Monitor ใน IDE แล้ว Connect ใหม่
- ไม่เห็นพอร์ต → ตรวจสาย/ไดรเวอร์ และเสียบใหม่
- ไม่มี Live Log → ตรวจบรรทัด [RT] Reaction = <ms> ms
- ยัง Connect ไม่ได้ → เปิดผ่าน HTTPS หรือ localhost
Wiring (Quick Ref)
TM1637
- VCC → 5V
- GND → GND
- CLK → D3
- DIO → D6
ปุ่ม & LED
- ปุ่ม D2 ↔ GND (ใช้ INPUT_PULLUP)
- LED แดง D4 → R → LED → GND
- LED เขียว D5 → R → LED → GND
All Details & Source Code
หน้าทดสอบ (เว็บ)
เปิดหน้าเว็บเพื่อเชื่อมต่อบอร์ดและดูตาราง/กราฟแบบเรียลไทม์
Open Reflex Testต้องใช้ Chrome/Edge (Desktop) และ HTTPS
โค้ดและไฟล์ที่เกี่ยวข้อง
- Repository บน GitHub
reflex.html
– หน้าเว็บ (Bootstrap + Chart.js + Web Serial)index.html
– หน้ารายละเอียดโปรเจกต์ (หน้านี้)reaction-speed-test-arduino/
– สเก็ตช์ Arduino (ใช้ไลบรารี TM1637Display)