ภารกิจที่ 2: Analog I/O
🎛️ ผู้ควบคุมแสงสว่าง (Smart Dimmer)
🎯 จุดประสงค์การเรียนรู้: นักเรียนสามารถออกแบบวงจรและเขียนโปรแกรมอ่านค่าแอนะล็อกจากตัวต้านทานปรับค่าได้ (Potentiometer) และใช้เทคนิค PWM เพื่อควบคุมระดับความสว่างของหลอด LED ได้อย่างนุ่มนวล
คลังความรู้ (Knowledge Base)
📌 สรุปหลักการ Analog Read และเทคนิค PWM
1. Analog In (อ่านค่า): ขา A0-A5 จะอ่านค่าแรงดันไฟฟ้า 0-5V แปลงเป็นตัวเลข 0 ถึง 1023 (รวม 1,024 ระดับ)
2. PWM Out (สั่งงาน): ขาที่มีสัญลักษณ์ตัวหนอน (~) เช่น ขา 9, 10, 11 สามารถส่งสัญญาณหรี่ไฟได้ โดยสั่งงานด้วยตัวเลข 0 ถึง 255
3. ฟังก์ชัน map(): เนื่องจาก Input (0-1023) และ Output (0-255) มีสัดส่วนไม่เท่ากัน เราจึงต้องใช้คำสั่ง
2. PWM Out (สั่งงาน): ขาที่มีสัญลักษณ์ตัวหนอน (~) เช่น ขา 9, 10, 11 สามารถส่งสัญญาณหรี่ไฟได้ โดยสั่งงานด้วยตัวเลข 0 ถึง 255
3. ฟังก์ชัน map(): เนื่องจาก Input (0-1023) และ Output (0-255) มีสัดส่วนไม่เท่ากัน เราจึงต้องใช้คำสั่ง
map(ค่าที่อ่านได้, 0, 1023, 0, 255) เพื่อย่อสัดส่วนให้พอดีกัน
int potPin = A0; // ขากลางของ Potentiometer ต่อเข้า A0
int potValue = 0;
void setup() {
Serial.begin(9600); // เปิดหน้าจอเพื่อดูตัวเลข
}
void loop() {
potValue = analogRead(potPin); // อ่านค่า 0 - 1023
Serial.print("Sensor Value: ");
Serial.println(potValue);
delay(100);
}
int potPin = A0;
int ledPin = 9; // ⚠️ ต้องใช้ขาที่มีสัญลักษณ์ ~ (PWM) เท่านั้น
int potValue = 0;
int ledValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
potValue = analogRead(potPin);
// แปลงช่วงตัวเลข 0-1023 ให้กลายเป็น 0-255
ledValue = map(potValue, 0, 1023, 0, 255);
analogWrite(ledPin, ledValue); // สั่งหรี่ไฟ
Serial.print("Pot: ");
Serial.print(potValue);
Serial.print(" -> LED: ");
Serial.println(ledValue);
delay(50);
}
ศูนย์สนับสนุนและแบบทดสอบ
พบบั๊ก? แจ้งศูนย์แก้ปมปัญหาด่วน!
📝 ทดสอบความเข้าใจภารกิจที่ 2
ข้อ 1 / 3
โหลดคำถาม...
เยี่ยมมาก นวัตกร!
คุณทำแบบทดสอบภารกิจที่ 2 สำเร็จแล้ว
คะแนนของคุณ: 0 / 3
ลานสะท้อนคิด (Reflection)
สรุปองค์ความรู้เรื่อง Analog และ PWM ที่ได้จากภารกิจนี้ 1 ประโยค เพื่อแบ่งปันกับเพื่อนๆ
กติกาชาวนวัตกร: ข้อตกลงร่วมกัน
1
ระบุตัวตนให้ชัดเจน: โพสต์ทุกครั้งต้องพิมพ์ "ชื่อ-สกุล และเลขที่" หรือ "ชื่อกลุ่ม" ที่หัวข้อเสมอ
2
โพสต์ให้ถูกคอลัมน์: อ่านชื่อคอลัมน์ภารกิจให้ดีก่อนกดเครื่องหมาย (+) เพื่อความเป็นระเบียบ
3
สื่อสารอย่างสร้างสรรค์: ใช้ถ้อยคำสุภาพ เน้นการชื่นชมและให้ข้อเสนอแนะเพื่อการพัฒนา
4
กล้าที่จะแบ่งปันความผิดพลาด: การเจอ "บั๊ก" ไม่ใช่เรื่องน่าอาย ความผิดพลาดของเราอาจช่วยเพื่อนกลุ่มอื่นได้