กลับหน้าหลัก
views
LED 5 ดวงติดสลับกัน Arduino: โค้ดวิ่งไฟ Step-by-Step สำหรับมือใหม่
Last updated on

LED 5 ดวงติดสลับกัน Arduino: โค้ดวิ่งไฟ Step-by-Step สำหรับมือใหม่


คำค้นแบบ “LED ทั้ง 5 ดวงติดสลับกัน Arduino” เป็นโจทย์พื้นฐานที่เจอบ่อยมากในงานเรียน เพราะใช้สอนเรื่อง digital output, loop, array และ delay ได้ครบในตัวเดียว

บทความนี้พาเริ่มจากการต่อ LED 5 ดวง ไปจนถึงโค้ดวิ่งไฟแบบติดทีละดวง สลับซ้ายขวา และติดคู่จากนอกเข้าใน

ติดโจทย์ Arduino ง่าย ๆ แต่ต้องส่งด่วน?

ถ้าเป็นงานแก้โค้ด LED, sensor, relay หรือวงจรพื้นฐาน ส่งโจทย์เข้ามาได้ งานเล็กเริ่มถูก ไม่ต้องจ้างงานใหญ่เกินจำเป็น

ทัก LINE ให้ช่วยแก้โค้ด ดูบริการแก้โค้ด Arduino

อุปกรณ์ที่ต้องใช้

  • Arduino UNO / Nano
  • LED 5 ดวง
  • Resistor 220Ω หรือ 330Ω จำนวน 5 ตัว
  • Breadboard
  • สาย jumper
  • USB cable

การต่อวงจร

ต่อ LED แต่ละดวงแบบนี้:

LEDขา Arduinoหมายเหตุ
LED1D2ขายาว LED ผ่าน resistor ไปที่ pin
LED2D3ขาสั้นลง GND
LED3D4ใส่ resistor ทุกดวง
LED4D5ใช้ GND ร่วมกันได้
LED5D6เช็คขั้ว LED ให้ถูก

หลักคือขา digital → resistor → ขายาว LED (Anode) และขาสั้น LED (Cathode) → GND

โค้ดที่ 1: LED 5 ดวงติดทีละดวงวนไปเรื่อย ๆ

const int ledPins[] = {2, 3, 4, 5, 6};
const int ledCount = 5;

void setup() {
  for (int i = 0; i < ledCount; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(300);
    digitalWrite(ledPins[i], LOW);
  }
}

โค้ดนี้ใช้ array เก็บ pin ทำให้ไม่ต้องเขียน digitalWrite() ซ้ำ 5 ชุดแบบยาว ๆ

โค้ดที่ 2: วิ่งไปแล้ววิ่งกลับ

const int ledPins[] = {2, 3, 4, 5, 6};
const int ledCount = 5;

void setup() {
  for (int i = 0; i < ledCount; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void turnOneLed(int index) {
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(ledPins[i], i == index ? HIGH : LOW);
  }
}

void loop() {
  for (int i = 0; i < ledCount; i++) {
    turnOneLed(i);
    delay(250);
  }

  for (int i = ledCount - 2; i > 0; i--) {
    turnOneLed(i);
    delay(250);
  }
}

ถ้าอยากให้เร็วขึ้น ลดค่า delay เช่น 100-150 ถ้าอยากให้ช้าลง เพิ่มเป็น 500

โค้ดที่ 3: ติดสลับแบบเลขคู่/เลขคี่

const int ledPins[] = {2, 3, 4, 5, 6};
const int ledCount = 5;

void setup() {
  for (int i = 0; i < ledCount; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  // LED ลำดับ 1,3,5 ติด
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(ledPins[i], (i % 2 == 0) ? HIGH : LOW);
  }
  delay(500);

  // LED ลำดับ 2,4 ติด
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(ledPins[i], (i % 2 == 1) ? HIGH : LOW);
  }
  delay(500);
}

ปัญหาที่เจอบ่อย

  • LED ไม่ติดเลย: เช็ค GND และขั้ว LED
  • ติดค้างทุกดวง: อาจต่อผิดหรือโค้ดไม่ได้สั่ง LOW
  • ติดสลับผิดลำดับ: pin ใน array ไม่ตรงกับตำแหน่ง LED บน breadboard
  • LED ขาด: ไม่ใส่ resistor หรือ resistor ค่าน้อยเกิน
  • Upload ไม่เข้า: เลือก Board/Port ผิด

ถ้าอาจารย์ถาม ให้อธิบายแบบนี้

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

ลิงก์อ่านต่อ

สรุป

โจทย์ LED 5 ดวงติดสลับกันไม่ได้ยาก แต่ต้องเข้าใจ array, loop, pinMode และ digitalWrite ให้ชัด ถ้าทำ LED ได้ งาน sensor/relay ขั้นต่อไปจะง่ายขึ้นมาก

อยากทำโปรเจคแบบนี้?

รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน

หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก

จ้างทำโปรเจคเลย

ประเมิน Project

อยากทำงานแนวนี้? แยกไปกรอกหน้าประเมินราคาได้เลย

ไม่ยัดฟอร์มยาวไว้ใต้บทความแล้ว กดปุ่มเดียวไปหน้าประเมิน Project กรอกโจทย์แบบตัวใหญ่ อ่านง่าย แล้วเอา Reference Code ไปคุยต่อใน LINE

ความคิดเห็น

รีวิวจากคนใช้งานจริง

รีวิวจากลูกค้าและคนที่เคยใช้งาน

ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย

กำลังโหลดรีวิว...