กลับไปหน้ารวมไฟล์
encoder-volume-control-13b702.md

การควบคุมเสียงด้วย Encoder

ไดอัลหมุนไม่สิ้นสุด: การตั้งค่า Rotary Encoder

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

button_led_basic_interaction_1772681969235.png

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 เพื่อให้แน่ใจว่าคุณอ่านค่าการเปลี่ยนแปลงตัวเลขที่ชัดเจนเพียงครั้งเดียวต่อการหมุน นี่คือทักษะการประมวลผลสัญญาณขั้นสูง!

ข้อมูล Frontmatter ดั้งเดิม

title: "Encoder Volume Control"
description: "Infinite scrolling! Learn why rotary encoders are better than potentiometers by building an infinite-turn digital volume knob."
category: "Basic Electronics"
difficulty: "Intermediate"