ปรึกษา IoT
Internet of Things 4123412 • Chapter 03

บทที่ 3 Arduino และการทำงานกับหลอด LED

เรียนรู้การประยุกต์ใช้ Arduino ควบคุมหลอด LED ด้วยสวิตช์ ตั้งแต่อุปกรณ์พื้นฐาน การต่อวงจร การอ่านค่าสวิตช์ Digital/Analog ไปจนถึงการเขียนโปรแกรม digitalRead, digitalWrite และ INPUT_PULLUP

LED Arduino UNO R3 Switch Resistor Breadboard digitalRead / digitalWrite

สาระสำคัญจากสไลด์

  • อุปกรณ์พื้นฐานในการควบคุมหลอด LED
  • สัญญาณ Digital และ Analog
  • การรับค่าจากปุ่ม / สวิตช์
  • ตัวอย่างโปรแกรมควบคุม LED
อ้างอิงสไลด์บทที่ 3
เน้นควบคุม LED
มีตัวอย่างโค้ด
ใช้ Arduino UNO R3

ภาพรวมบทเรียน

บทที่ 3 Arduino และการทำงานกับหลอด LED เป็นบทเรียนปฏิบัติพื้นฐานที่ช่วยให้ผู้เรียนเข้าใจการต่อวงจร การอ่านค่าสวิตช์ และการสั่งงานหลอด LED ด้วย Arduino ซึ่งเป็นพื้นฐานสำคัญก่อนต่อยอดไปยัง Sensor, Relay, Motor และระบบ IoT ที่ซับซ้อนขึ้น

สไลด์บทนี้กำหนดเนื้อหาไว้ 4 ส่วนหลัก ได้แก่ อุปกรณ์พื้นฐานในการควบคุมหลอด LED, สัญญาณ Digital และ Analog, การรับค่าจากปุ่ม/สวิตช์ และตัวอย่างโปรแกรม

Learning Objectives

หลังเรียนบทนี้ ผู้เรียนควรสามารถต่อวงจร LED และเขียนโปรแกรม Arduino เพื่ออ่านค่าสวิตช์และควบคุม LED ได้

ระบุหน้าที่ของ Arduino Uno R3, LED, Resistor, Breadboard, Switch และ Jumper Wire ได้
อธิบายความแตกต่างระหว่างสัญญาณ Digital และ Analog ได้
เขียนโปรแกรมอ่านค่าสวิตช์ด้วย digitalRead() และ Serial Monitor ได้
เขียนโปรแกรมควบคุม LED ด้วย digitalWrite(), INPUT_PULLUP และ if else ได้

Flow การควบคุม LED ด้วยสวิตช์

Switchกด / ไม่กด ArduinodigitalRead() if elseตัดสินใจ LEDON / OFF อ่านค่าสวิตช์ → ตรวจเงื่อนไข → สั่งเปิดหรือปิดหลอด LED

3.1 อุปกรณ์พื้นฐานในการควบคุมหลอด LED

การควบคุมหลอด LED ด้วย Arduino ต้องใช้อุปกรณ์พื้นฐานหลายส่วน ได้แก่ Arduino Uno R3, Breadboard, Resistor, Jumper Wire, Switch และหลอด LED โดยแต่ละส่วนมีหน้าที่แตกต่างกันในการสร้างวงจรทดลอง

Arduino Uno R3

บอร์ดควบคุมหลัก อ่านค่าสวิตช์และสั่งงาน LED ผ่านขา Digital I/O

LED

หลอดไดโอดเปล่งแสง ใช้แสดงสถานะ ON/OFF ของวงจรหรือระบบ

Resistor

จำกัดกระแสไฟฟ้าเพื่อป้องกัน LED เสียหาย

Breadboard

ใช้ทดลองวงจรโดยไม่ต้องบัดกรี เหมาะกับงานต้นแบบ

Switch

อุปกรณ์เปิด-ปิดวงจร ใช้เป็น Input ให้ Arduino อ่านค่า

Jumper Wire

สายไฟสำหรับเชื่อมต่อ Arduino กับ Breadboard และอุปกรณ์ต่าง ๆ

3.1.1 Arduino Uno R3

Arduino Uno R3 เป็นบอร์ดหลักที่ใช้พัฒนาและทดลองงาน IoT มีแหล่งจ่ายไฟและขาสัญญาณพื้นฐาน เช่น GND, VIN และ VCC ซึ่งสไลด์อธิบายว่า GND คือจุดกราวด์หรือแรงดันอ้างอิง 0V, VIN คือขั้วรับแหล่งจ่ายภายนอก และ VCC คือแรงดันเลี้ยงที่เหมาะสมกับวงจร เช่น 5V หรือ 3.3V

ข้อควรระวัง: ก่อนต่อวงจรควรตรวจสอบแรงดันไฟและขั้วให้ถูกต้อง โดยเฉพาะ LED, Sensor และบอร์ดเสริม เพราะต่อผิดอาจทำให้อุปกรณ์เสียหายได้

3.1.2 หลอด LED

LED ย่อมาจาก Light Emitting Diode เป็นหลอดชนิดไดโอดที่เปล่งแสงเมื่อมีกระแสไหลผ่านในทิศทางที่ถูกต้อง LED มีขั้วบวกเรียกว่า Anode และขั้วลบเรียกว่า Cathode โดยทั่วไปขั้ว Anode มักมีขายาวกว่า ส่วนขั้ว Cathode มักมีขาสั้นกว่าและต่อไปยัง GND

3.1.3 ตัวต้านทาน (Resistor)

ตัวต้านทานเป็นอุปกรณ์ที่ใช้จำกัดการไหลของกระแสไฟฟ้า มีหน่วยเป็นโอห์ม (Ω) ในการต่อ LED ควรใช้ Resistor ต่อร่วมเพื่อจำกัดกระแส ลดความเสี่ยงที่ LED จะเสียหายจากกระแสเกิน

ตัวอย่าง: วงจร LED เบื้องต้นนิยมใช้ Resistor ประมาณ 220Ω–330Ω ขึ้นอยู่กับแรงดันไฟและชนิดของ LED

3.1.4 บอร์ดทดลอง (Breadboard)

Breadboard เป็นแผงทดลองวงจรอิเล็กทรอนิกส์แบบไม่ต้องบัดกรี ช่วยให้ผู้เรียนสามารถต่อวงจร แก้ไข และทดลองซ้ำได้สะดวก เหมาะสำหรับการเรียนรู้ Arduino และการสร้างต้นแบบก่อนทำวงจรถาวร

3.1.5 สวิตช์

สวิตช์เป็นอุปกรณ์ควบคุมประเภทเปิด-ปิด ทำหน้าที่เชื่อมต่อหรือขัดจังหวะกระแสไฟฟ้าในวงจร ในบทนี้ใช้สวิตช์เป็น Input เพื่อให้ Arduino อ่านสถานะว่ามีการกดปุ่มหรือไม่

3.1.6 สายต่อ Jumper

Jumper Wire ใช้เชื่อมต่อ Arduino และ Breadboard มีหลายแบบ เช่น ผู้-ผู้, ผู้-เมีย และเมีย-เมีย ควรเลือกให้เหมาะกับช่องต่อของอุปกรณ์แต่ละชนิด

3.2 สัญญาณ Digital และ Analog

ในการทำงานกับ Arduino ผู้เรียนต้องเข้าใจสัญญาณ 2 ประเภทหลัก คือ Digital และ Analog

ประเภทสัญญาณลักษณะตัวอย่างการใช้งาน
Digitalมีค่าเป็น 0 หรือ 1, LOW หรือ HIGHอ่านค่าสวิตช์, เปิด/ปิด LED, ควบคุม Relay
Analogมีค่าเป็นช่วงต่อเนื่อง เช่น 0–1023 ใน Arduinoอ่านค่าแสง ความชื้นดิน หรือแรงดันจาก Sensor

3.3 การรับค่าจากปุ่ม / สวิตช์

การอ่านค่าสวิตช์ด้วย Arduino ใช้คำสั่ง digitalRead() โดยกำหนดขาที่ต่อสวิตช์เป็น INPUT หรือ INPUT_PULLUP แล้วอ่านค่าที่ได้ออกทาง Serial Monitor เพื่อตรวจสอบสถานะ

int sw = 8;

void setup() {
  Serial.begin(9600);
  pinMode(sw, INPUT);
}

void loop() {
  int val = digitalRead(sw);
  Serial.println(val);
}

โค้ดนี้กำหนดให้สวิตช์อยู่ที่ขา 8 แล้วอ่านค่าแสดงผลผ่าน Serial Monitor หากวงจรถูกต้อง ผู้เรียนจะเห็นค่าที่เปลี่ยนเมื่อกดหรือปล่อยสวิตช์

3.4 ควบคุม LED ด้วยสวิตช์

เมื่อต้องการควบคุม LED จากสถานะของสวิตช์ สามารถใช้ INPUT_PULLUP และคำสั่ง if else โดยเมื่อต่อแบบ Pull-up ภายใน กดปุ่มแล้วค่าที่อ่านได้มักเป็น 0 หรือ LOW

int sw = 8;
int led = 9;

void setup() {
  Serial.begin(9600);
  pinMode(sw, INPUT_PULLUP);
  pinMode(led, OUTPUT);
}

void loop() {
  int val = digitalRead(sw);

  if (val == 0) {
    digitalWrite(led, HIGH);
  } else {
    digitalWrite(led, LOW);
  }

  delay(500);
}
หลักการทำงาน: Arduino อ่านค่าจากสวิตช์ที่ขา 8 หากกดปุ่ม ค่าเป็น 0 จึงสั่งให้ LED ที่ขา 9 ติด หากไม่ได้กดปุ่ม LED จะดับ

3.5 การทดลองวงจรด้วย Wokwi

สไลด์มีการกล่าวถึง Wokwi ซึ่งเป็นเครื่องมือจำลองวงจร Arduino ออนไลน์ ช่วยให้ผู้เรียนทดลองต่อวงจร เขียนโค้ด และดูผลลัพธ์ได้โดยไม่ต้องมีอุปกรณ์จริงในขั้นแรก เหมาะสำหรับการสอน การทดลอง และการตรวจสอบแนวคิดก่อนต่อวงจรจริง

3.6 ตัวอย่างโปรแกรมไฟจราจรด้วย LED หลายดวง

นอกจากควบคุม LED ดวงเดียวแล้ว สามารถต่อยอดเป็นระบบไฟจราจรโดยใช้ LED หลายดวง เช่น แดง เหลือง เขียว และกำหนดลำดับเวลาการติดดับด้วย delay()

void setup() {
  pinMode(8, OUTPUT);   // LED เขียว
  pinMode(9, OUTPUT);   // LED เหลือง
  pinMode(10, OUTPUT);  // LED แดง
}

void loop() {
  digitalWrite(10, LOW);
  digitalWrite(9, LOW);
  digitalWrite(8, HIGH);
  delay(4000);

  digitalWrite(10, LOW);
  digitalWrite(9, HIGH);
  digitalWrite(8, HIGH);
  delay(2000);

  digitalWrite(10, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(8, LOW);
  delay(4000);

  digitalWrite(10, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(8, LOW);
  delay(2000);
}

3.7 ปัญหา Port / Driver ที่พบบ่อย

ท้ายสไลด์มีตัวอย่างปัญหาเกี่ยวกับ Driver และ Serial Port เช่น CH340 Driver หรือข้อความลักษณะ “Could not connect to COM3 serial port” ซึ่งมักเกิดจากเลือกพอร์ตผิด พอร์ตถูกโปรแกรมอื่นใช้งานอยู่ สาย USB มีปัญหา หรือยังไม่ได้ติดตั้ง Driver

แนวทางตรวจสอบเบื้องต้น

  • ถอดเสียบสาย USB ใหม่ และลองเปลี่ยนพอร์ต USB
  • ตรวจสอบ Tools → Port ให้ตรงกับบอร์ดที่ใช้งาน
  • ปิด Serial Monitor หรือโปรแกรมอื่นที่อาจใช้พอร์ตอยู่
  • ติดตั้ง CH340 Driver หากใช้บอร์ด Clone ที่ใช้ชิป CH340
  • ตรวจสอบสาย USB ว่าเป็นสาย Data ไม่ใช่สายชาร์จอย่างเดียว

ต้องการทำชุดทดลอง Arduino + LED สำหรับการสอน?

Siam2Dev ช่วยออกแบบชุดทดลอง IoT ตั้งแต่ Arduino/ESP32, วงจร LED, Sensor, Wokwi, คู่มือปฏิบัติการ และ Dashboard สำหรับรายวิชา IoT หรือ Workshop

สรุปบทเรียน

บทที่ 3 ช่วยให้ผู้เรียนเข้าใจการทำงานพื้นฐานของ Arduino ร่วมกับ LED และสวิตช์ โดยครอบคลุมอุปกรณ์พื้นฐาน สัญญาณ Digital/Analog การอ่านค่าสวิตช์ การสั่งงาน LED และการแก้ปัญหา Port/Driver ซึ่งเป็นพื้นฐานสำคัญในการพัฒนาโครงงาน IoT

แบบฝึกหัดท้ายบท

  1. อธิบายหน้าที่ของ Arduino Uno R3, LED, Resistor, Breadboard, Switch และ Jumper Wire
  2. LED มีขั้ว Anode และ Cathode ต่างกันอย่างไร
  3. ทำไมการต่อ LED ควรใช้ Resistor ร่วมด้วย
  4. สัญญาณ Digital และ Analog แตกต่างกันอย่างไร พร้อมยกตัวอย่าง
  5. เขียนโปรแกรมอ่านค่าสวิตช์จากขา 8 และแสดงผลผ่าน Serial Monitor
  6. เขียนโปรแกรมควบคุม LED ที่ขา 9 ให้ติดเมื่อกดสวิตช์
  7. ออกแบบวงจรไฟจราจรด้วย LED 3 ดวง พร้อมระบุขาที่ใช้
  8. อธิบายสาเหตุที่อาจทำให้เกิด Error “Could not connect to COM3 serial port”

คำถามที่พบบ่อยเกี่ยวกับบทที่ 3

LED เป็นไดโอดชนิดหนึ่ง กระแสไฟจะไหลได้ถูกต้องเมื่อขั้ว Anode และ Cathode ต่อถูกทิศ หากต่อกลับขั้ว LED อาจไม่ติด และหากไม่มีตัวต้านทานร่วมอาจเสียหายได้

INPUT_PULLUP คือการเปิดใช้ตัวต้านทาน Pull-up ภายในไมโครคอนโทรลเลอร์ ทำให้ขา Input มีค่า HIGH ตามปกติ และเมื่อกดปุ่มที่ต่อกับ GND ค่าจะเปลี่ยนเป็น LOW

ใช้จำลองและฝึกเขียนโปรแกรมได้ดีมาก แต่เมื่อต้องทำโครงงานจริงยังควรทดสอบกับอุปกรณ์จริง เพราะปัญหาไฟเลี้ยง สายไฟ พอร์ต และสัญญาณรบกวนอาจเกิดขึ้นในสถานการณ์จริง

ตรวจสอบสาย USB, เลือก Tools → Port ให้ถูกต้อง, ปิด Serial Monitor หรือโปรแกรมที่ใช้พอร์ตอยู่ และติดตั้ง CH340 Driver หากใช้บอร์ด Arduino Clone
อ่านต่อ

ต่อยอดจากบทที่ 3

หลังควบคุม LED และอ่านค่าสวิตช์ได้แล้ว สามารถต่อยอดสู่ Sensor, Relay, Motor และ Dashboard ได้