LED 5 ดวงติดสลับกัน Arduino: โค้ดวิ่งไฟ Step-by-Step สำหรับมือใหม่
คำค้นแบบ “LED ทั้ง 5 ดวงติดสลับกัน Arduino” เป็นโจทย์พื้นฐานที่เจอบ่อยมากในงานเรียน เพราะใช้สอนเรื่อง digital output, loop, array และ delay ได้ครบในตัวเดียว
บทความนี้พาเริ่มจากการต่อ LED 5 ดวง ไปจนถึงโค้ดวิ่งไฟแบบติดทีละดวง สลับซ้ายขวา และติดคู่จากนอกเข้าใน
ติดโจทย์ Arduino ง่าย ๆ แต่ต้องส่งด่วน?
ถ้าเป็นงานแก้โค้ด LED, sensor, relay หรือวงจรพื้นฐาน ส่งโจทย์เข้ามาได้ งานเล็กเริ่มถูก ไม่ต้องจ้างงานใหญ่เกินจำเป็น
อุปกรณ์ที่ต้องใช้
- Arduino UNO / Nano
- LED 5 ดวง
- Resistor 220Ω หรือ 330Ω จำนวน 5 ตัว
- Breadboard
- สาย jumper
- USB cable
การต่อวงจร
ต่อ LED แต่ละดวงแบบนี้:
| LED | ขา Arduino | หมายเหตุ |
|---|---|---|
| LED1 | D2 | ขายาว LED ผ่าน resistor ไปที่ pin |
| LED2 | D3 | ขาสั้นลง GND |
| LED3 | D4 | ใส่ resistor ทุกดวง |
| LED4 | D5 | ใช้ GND ร่วมกันได้ |
| LED5 | D6 | เช็คขั้ว 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 แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย