# ชุดฝึก UNO R3: กระพริบ LED พร้อมรายงานเวลา

ชุดนี้ใช้เรียนการทำงานสองงานร่วมกันด้วย `millis()` ก่อนต่อยอดอ่านเซนเซอร์ในระบบโดรน ใช้ LED บนบอร์ดและ serial เท่านั้น อ่านบทเรียนที่ https://drone.pk-research.work/knowledge/microcontrollers/basic/

## สิ่งที่ตรวจแล้ว

- โค้ด `led_serial/led_serial.ino` ตรงกับตัวอย่างในบทเรียน และคอมไพล์ผ่านสำหรับ Arduino UNO R3 (`arduino:avr:uno`) วันที่ 1 ตุลาคม 2026
- เครื่องมือ: Arduino CLI 1.5.1, Arduino AVR Boards 1.8.8 และ AVR GCC 7.3.0-atmel3.6.1-arduino7
- ใช้พื้นที่โปรแกรม 2,078/32,256 ไบต์ และ RAM 197/2,048 ไบต์
- เปิดคำเตือนทั้งหมด พบ 4 คำเตือน unused parameter ใน Arduino core `cores/arduino/new.cpp` ไม่มีคำเตือนจาก sketch ตามผล compiler
- ยังไม่ได้ upload หรือรันบนบอร์ดจริง ไม่ได้วัดช่วงเวลา ทดสอบปุ่ม ESP32 หรือผลบิน ดูรายละเอียดและ SHA-256 ใน `compile-result.json`

## ขั้นตอนบนคอมพิวเตอร์

1. แตก ZIP แล้วเปิด `led_serial/led_serial.ino` ใน Arduino IDE หรือใช้ Arduino CLI ที่ติดตั้งตามคู่มือทางการ
2. เลือก Arduino UNO และ Arduino AVR Boards 1.8.8 เพื่อเทียบกับผลนี้ จากนั้นกด Verify; ยังไม่ต้องต่อบอร์ด
3. ถ้าใช้ CLI ให้ติดตั้ง core และคอมไพล์จากโฟลเดอร์ชุดฝึก:

```sh
arduino-cli core update-index
arduino-cli core install arduino:avr@1.8.8
arduino-cli compile --fqbn arduino:avr:uno --warnings all --clean led_serial
```

บันทึกผลของเครื่องตนเองและรุ่นเครื่องมือ หากเปลี่ยน core หรือโค้ด ผลคอมไพล์อาจต่างจากใบผลที่แนบ ชุดดาวน์โหลดไม่มี Arduino CLI, core หรือไลบรารีภายนอก

## ขั้นตอนเมื่อมี UNO R3

1. ตรวจชื่อรุ่นบอร์ดและสาย USB ที่รับส่งข้อมูลได้ เลือกพอร์ตของบอร์ดนั้น แล้ว upload ตามคู่มือ Arduino
2. เปิด serial monitor ที่ 115200 baud สังเกต LED และค่าตัวนับเวลาที่ส่งออก
3. กรอก `observations.csv`: ชื่อบอร์ด core เวลา serial แต่ละบรรทัด และผลสังเกต LED คำนวณช่วงห่างจากเวลาสองบรรทัดติดกัน
4. โค้ดตั้งเป้าสลับ LED ทุก 500 ms และรายงานทุก 200 ms แต่ช่วงจริงขึ้นกับงานใน loop/serial จึงต้องวัดก่อนสรุป ห้ามกรอกค่าที่ตั้งไว้แทนค่าที่วัด
5. การอ่านปุ่มและ debounce เป็นแบบฝึกเพิ่มตามบทเรียน โค้ดนี้ยังไม่ได้อ่านปุ่ม หากใช้ ESP32 ให้ตรวจ LED, pinout และ core ของรุ่นนั้นและทดสอบใหม่

## เอกสารอ้างอิง

- UNO R3 และ pinout: https://docs.arduino.cc/hardware/uno-rev3/
- Blink Without Delay: https://docs.arduino.cc/built-in-examples/digital/BlinkWithoutDelay/
- Arduino CLI: https://github.com/arduino/arduino-cli/releases/tag/v1.5.1
- คู่มือคำสั่ง compile: https://arduino.github.io/arduino-cli/1.5/commands/arduino-cli_compile/

ใบงานเป็นตารางเปล่าสำหรับบันทึกผลของผู้เรียน การคอมไพล์ผ่านยืนยันเฉพาะการสร้างโปรแกรมสำหรับบอร์ดเป้าหมาย ไม่ยืนยันการทำงานของฮาร์ดแวร์หรือความพร้อมใช้ควบคุมโดรน
