# ฝึกอ่านปุ่มและเวลา Arduino/ESP32 · 8 ข้อ

วัตถุประสงค์: อ่าน raw/candidate/stable/event และเวลา unsigned ก่อนย้ายบอร์ด พื้นฐาน: boolean, if, หน่วย ms และ C/C++ เบื้องต้น เวลาเสนอ 45–60 นาที ยังไม่วัดกับผู้เรียน ใช้ CSV/JSON หรือกระดาษได้โดยไม่ต้องมีอุปกรณ์

1. อ่าน source-records.json ลำดับกด/ปล่อย 12 calls กับ wrap 3 calls และ due 4 ตัวอย่างที่อ่านจาก test_input.cpp เดิม ทั้งหมดเป็นโจทย์ประกาศ ไม่มีการรันใหม่
2. กรอก trace-worksheet.csv แต่ละ sequence เริ่ม ButtonState ใหม่ candidate=false/stable=false/changedAt=0 คำนวณ elapsed หลัง candidate เปลี่ยน แล้วตรวจ candidate!=stable และ elapsed>=30
3. กรอก due-worksheet.csv จาก uint32 delta แล้วตอบ worksheet.csv ทั้งแปดข้อ เลือกช่วงหนึ่งกรอก report-template.md ก่อนเทียบ answers.md และตารางเฉลย
4. เสนอข้อละ 2 (คำตอบ 1 + เหตุผล/หน่วย/ขอบ 1) รวม 16 เพื่อเลือกทบทวน ไม่แทนใบงานเดิม ไม่ใช่ผลผู้เรียนหรือใบรับรอง

คำแนะนำ: event_return หมายถึง stable เปลี่ยน ไม่ได้หมายถึงกดอย่างเดียว candidate/stable/elapsed เป็นค่าที่คำนวณจาก calls ไม่ใช่การวัดสัญญาณปุ่มระหว่าง calls trace ทุก call ไม่ใช่ serial capture ของ sketch ซึ่งพิมพ์เมื่อ event หรือครบคาบ ไม่มีข้อมูลบอร์ดจริงใน observations.csv เดิมทั้งสองชุด

Manifest ตรวจ SHA-256 ของสอง ZIP และสมาชิกเดิม 12 รายการ รวมเก้าดาวน์โหลดใหม่ Header UNO/ESP32 มีไบต์เดียวกัน แต่ sketch/ขา/SDK ต่างกัน ต้องเลือกบอร์ดและ pinout ให้ตรง รอบนี้ไม่รัน host tests/compile/upload หรือเปลี่ยน source/config/SDK เดิม
