ภารกิจที่ 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) มีสัดส่วนไม่เท่ากัน เราจึงต้องใช้คำสั่ง 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);
}

พื้นที่ปฏิบัติการ (Virtual Lab)

ความคืบหน้าภารกิจ 0%
เปิดห้องแล็บเต็มรูปแบบ (Full Tinkercad Editor)

ศูนย์สนับสนุนและแบบทดสอบ

พบบั๊ก? แจ้งศูนย์แก้ปมปัญหาด่วน!
📝 ทดสอบความเข้าใจภารกิจที่ 2 ข้อ 1 / 3

โหลดคำถาม...

เยี่ยมมาก นวัตกร!

คุณทำแบบทดสอบภารกิจที่ 2 สำเร็จแล้ว

คะแนนของคุณ: 0 / 3

ลานสะท้อนคิด (Reflection)

สรุปองค์ความรู้เรื่อง Analog และ PWM ที่ได้จากภารกิจนี้ 1 ประโยค เพื่อแบ่งปันกับเพื่อนๆ

กติกาชาวนวัตกร: ข้อตกลงร่วมกัน

1

ระบุตัวตนให้ชัดเจน: โพสต์ทุกครั้งต้องพิมพ์ "ชื่อ-สกุล และเลขที่" หรือ "ชื่อกลุ่ม" ที่หัวข้อเสมอ

2

โพสต์ให้ถูกคอลัมน์: อ่านชื่อคอลัมน์ภารกิจให้ดีก่อนกดเครื่องหมาย (+) เพื่อความเป็นระเบียบ

3

สื่อสารอย่างสร้างสรรค์: ใช้ถ้อยคำสุภาพ เน้นการชื่นชมและให้ข้อเสนอแนะเพื่อการพัฒนา

4

กล้าที่จะแบ่งปันความผิดพลาด: การเจอ "บั๊ก" ไม่ใช่เรื่องน่าอาย ความผิดพลาดของเราอาจช่วยเพื่อนกลุ่มอื่นได้