การควบคุมเสียงด้วย Encoder
ไดอัลหมุนไม่สิ้นสุด: การตั้งค่า Rotary Encoder
potentiometer จะหยุดหมุนที่ 270 องศา แต่ปุ่มปรับเสียงบนวิทยุรถยนต์ของคุณสามารถหมุนได้ไม่สิ้นสุด นั่นคือ Rotary Encoder ซึ่งเป็น digital sensor ที่วัด "คลิก" ของการหมุน แทนที่จะเป็นความต้านทานแบบ analog

Logic การส่งออก Quadrature
Encoder จะส่งออก digital signal สองสัญญาณ (Pin A และ Pin B) ในรูปแบบที่ทับซ้อนกันเฉพาะ ซึ่งเรียกว่า "Gray Code" หรือ "Quadrature"
- เมื่อคุณหมุนตามเข็มนาฬิกา Pin A จะทำงานก่อน Pin B เล็กน้อย
- เมื่อคุณหมุนทวนเข็มนาฬิกา Pin B จะทำงานก่อน Pin A เล็กน้อย
- Arduino อาศัย Hardware Interrupts เพื่ออ่านว่า Pin ใดทำงานก่อนกันอย่างแม่นยำ เพื่ออัปเดต global variable (เช่น
volumeLevel++หรือvolumeLevel--)
Hardware หลัก
- Arduino Uno/Nano
- KY-040 Rotary Encoder Module: มาพร้อมกับ push-button ในตัวที่แกน
- An Output: piezo buzzer เพื่อทดสอบการเปลี่ยน frequency หรือ I2C LCD เพื่อแสดงหมายเลข volume ปัจจุบันตั้งแต่ 0 ถึง 100
การ Debouncing ที่ยุ่งยาก
Rotary encoder มีชื่อเสียงในด้าน "noise" (สัญญาณรบกวน) ที่สูง เนื่องจากใช้หน้าสัมผัสโลหะทางกายภาพที่เสียดสีกันภายในไดอัล การ "คลิก" เพียงครั้งเดียวอาจถูกบันทึกเป็นสิบ rapid clicks สำหรับ Arduino คุณต้องใช้ hardware debouncing (capacitors) หรือ software libraries เพื่อให้แน่ใจว่าคุณอ่านค่าการเปลี่ยนแปลงตัวเลขที่ชัดเจนเพียงครั้งเดียวต่อการหมุน นี่คือทักษะการประมวลผลสัญญาณขั้นสูง!