Lesson 3.2

การใช้งาน Analog I/O

ในบทเรียนที่แล้วเราเรียนรู้เรื่อง "ดิจิทัล" ที่มีแค่เปิดกับปิด แต่ในโลกความเป็นจริง ข้อมูลส่วนใหญ่มีความละเอียดมากกว่านั้น เช่น ความเข้มแสงที่ค่อยๆ มืดลง หรือ ระดับความดังของเสียง เราจึงต้องใช้พอร์ต Analog ในการจัดการข้อมูลที่มีความต่อเนื่องครับ

Digital

🔳

มี 2 ระดับ (0 หรือ 1)
เหมือนสวิตช์ไฟที่กด เปิด หรือ ปิด

Analog

📉

มีหลายระดับต่อเนื่อง
เหมือน ลูกบิดปรับความสว่าง ไฟ


1. การอ่านค่า (Analog Input)

บอร์ด Arduino มีช่องรับสัญญาณอนาล็อก (ขา A0-A5) ทำหน้าที่แปลงแรงดันไฟฟ้าให้กลายเป็นตัวเลข 0 ถึง 1023 โดยใช้เซนเซอร์อนาล็อก เช่น LDR หรือ Potentiometer

แผนภาพแสดงการเชื่อมต่อ (Wiring Diagram)

การต่อวงจรเซนเซอร์อนาล็อก

👆 ทดลองหมุนลูกบิดในโปรแกรมจำลองเพื่อดูค่าที่เปลี่ยนแปลง

Read_Analog.ino
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 ตัวอย่างการใช้งานเช่น:

PWM_Control.ino
void setup() {
  pinMode(9, OUTPUT); // ขา 9 รองรับ PWM
}

void loop() {
  analogWrite(9, 128); // สั่งให้ LED สว่าง 50% หรือมอเตอร์หมุนความเร็วครึ่งเดียว
}
🚀 MISSION 2

ภารกิจที่ 2: ผู้ควบคุมแสงสว่าง (Smart Dimmer)

ต่อวงจรและเขียนโปรแกรมอ่านค่าจากตัวต้านทานปรับค่าได้ (Potentiometer) และใช้เทคนิค PWM เพื่อปรับระดับความสว่างของหลอด LED ได้อย่างนุ่มนวล พร้อมบันทึกข้อผิดพลาดในศูนย์แก้ปมปัญหา

ปฏิบัติภารกิจที่ 2