การใช้งาน Analog I/O
ในบทเรียนที่แล้วเราเรียนรู้เรื่อง "ดิจิทัล" ที่มีแค่เปิดกับปิด แต่ในโลกความเป็นจริง ข้อมูลส่วนใหญ่มีความละเอียดมากกว่านั้น เช่น ความเข้มแสงที่ค่อยๆ มืดลง หรือ ระดับความดังของเสียง เราจึงต้องใช้พอร์ต Analog ในการจัดการข้อมูลที่มีความต่อเนื่องครับ
Digital
มี 2 ระดับ (0 หรือ 1)
เหมือนสวิตช์ไฟที่กด เปิด หรือ ปิด
Analog
มีหลายระดับต่อเนื่อง
เหมือน ลูกบิดปรับความสว่าง ไฟ
1. การอ่านค่า (Analog Input)
บอร์ด Arduino มีช่องรับสัญญาณอนาล็อก (ขา A0-A5) ทำหน้าที่แปลงแรงดันไฟฟ้าให้กลายเป็นตัวเลข 0 ถึง 1023 โดยใช้เซนเซอร์อนาล็อก เช่น LDR หรือ Potentiometer
แผนภาพแสดงการเชื่อมต่อ (Wiring Diagram)
👆 ทดลองหมุนลูกบิดในโปรแกรมจำลองเพื่อดูค่าที่เปลี่ยนแปลง
void setup() { Serial.begin(9600); } void loop() { int sensorValue = analogRead(A0); // อ่านค่าจากเซนเซอร์ LDR หรือ Potentiometer Serial.println(sensorValue); delay(100); }
2. การส่งค่า (Analog Output / PWM)
Arduino ใช้วิธี PWM (Pulse Width Modulation) เพื่อ "จำลอง" แรงดันไฟฟ้า 0-5V ผ่านขาที่มีเครื่องหมาย ~ โดยกำหนดค่าตั้งแต่ 0 ถึง 255 ตัวอย่างการใช้งานเช่น:
- ควบคุมระดับความสว่างของหลอด LED ให้ค่อยๆ สว่างขึ้นอย่างนุ่มนวล
- ควบคุมความเร็ว มอเตอร์ DC โดยต่อร่วมกับวงจรขับมอเตอร์ (เช่น บอร์ด L298N)
void setup() { pinMode(9, OUTPUT); // ขา 9 รองรับ PWM } void loop() { analogWrite(9, 128); // สั่งให้ LED สว่าง 50% หรือมอเตอร์หมุนความเร็วครึ่งเดียว }
ภารกิจที่ 2: ผู้ควบคุมแสงสว่าง (Smart Dimmer)
ต่อวงจรและเขียนโปรแกรมอ่านค่าจากตัวต้านทานปรับค่าได้ (Potentiometer) และใช้เทคนิค PWM เพื่อปรับระดับความสว่างของหลอด LED ได้อย่างนุ่มนวล พร้อมบันทึกข้อผิดพลาดในศูนย์แก้ปมปัญหา
ปฏิบัติภารกิจที่ 2