กลับไปหน้ารวมไฟล์
arduino-knight-rider-6f4fe4.md

พบกับซีรีส์ Circle Electronic NOOB: Knight Rider!

เราต่างก็จำรถสุดเท่ในซีรีส์ตำนานอย่าง Knight Rider ได้ดี ฟีเจอร์เด็ดของมันคือไฟ LED ด้านหน้าที่วิ่งไล่กันไปมาแบบเรียงตัว

K.I.T.T

สำหรับน้องๆ ที่พึ่งหัดเล่น Arduino และอยากเริ่มเขียนโค้ด นี่แหละโอกาสดีที่จะได้ทำอนิเมชั่นไฟวิ่งแบบนี้!

ไม่ต้องมานั่งงมกับวงจรเบรดบอร์ดให้วุ่นวาย แค่ต่อสายแล้วเริ่มเขียนโค้ดได้เลย ง่ายๆ จัดไปวัยรุ่น!

เกร็ดเล็กเกร็ดน้อยของโปรเจกต์

โปรเจกต์ Arduino Knight Rider นี้คือโปรเจกต์คลาสสิกสำหรับมือใหม่ที่สร้างขึ้นเพื่อเป็นเกียรติให้กับซีรีส์ในยุค 80s ที่มี K.I.T.T. รถสุดอัจฉริยะเป็นพระเอก ฟีเจอร์เด่นของ K.I.T.T. ก็คือไฟสีแดงที่สแกนไปมาบนกันชนหน้าของมันนั่นเอง

น้องจะได้ทำอะไรบ้าง?

  • น้องสามารถต่อ LED ทั้ง 8 ดวงแยกกันเข้ากับพินของ Arduino แล้วใช้ลูป for ควบคุมให้มันติดดับไล่กันไปมาได้

ฮาร์ดแวร์ที่ใช้

  • LED Display: ในเวอร์ชันนี้เราใช้ LED สีแดง 8 หรือ 10 ดวงเรียงเป็นเส้น แคโทดของ LED แต่ละดวงต่อกับกราวด์ ส่วนแอโนดต่อกับพินดิจิตอลของ Arduino โดยเฉพาะ (เช่น พิน 2 ถึง 11)
  • การป้องกัน: แต่ละ LED ต้องมี ตัวต้านทาน (Resistor) 220 โอห์ม ต่ออนุกรมไว้ เพื่อป้องกันพินเอาต์พุตของ Arduino และตัว LED เองจากกระแสเกิน (V=IR)
  • ขอบคุณบัซเซอร์ที่อยู่ด้านบน น้องสามารถเล่นเพลงธีมของ Knight Rider และเรียนรู้การสร้างเมโลดี้ด้วยบัซเซอร์ได้
  • น้องจะได้เรียนรู้วิธีการโปรแกรมไอซีขับ LED อย่าง 74HC593 ไอซีตัวนี้ช่วยให้เราควบคุม LED 8 ดวงได้โดยใช้การเชื่อมต่อแค่ 3 เส้นเท่านั้น เอาไปใช้กับโปรเจกต์อื่นที่ต้องขับมอเตอร์หรืออะไรก็ได้ แทนที่จะใช้แค่ LED

เขียนโค้ดเอฟเฟกต์ไฟสแกน

โปรเจกต์นี้เป็นวิธีที่เจ๋งมากในการเรียนรู้เรื่อง for loops และ arrays แทนที่จะสั่งเปิดปิดพินแต่ละอันด้วยมือ เราสามารถใช้ลูปเพื่อวนลูปผ่านหมายเลขพินได้:

// Moving Forward
for (int i = 2; i <= 11; i++) {
  digitalWrite(i, HIGH);
  delay(100);
  digitalWrite(i, LOW);
}
// Moving Backward
for (int i = 11; i >= 2; i--) {
  digitalWrite(i, HIGH);
  delay(100);
  digitalWrite(i, LOW);
}

แต่งแต้มให้ดูเท่: เอฟเฟกต์สายตาเหลือบมอง (Persistence of Vision)

ถ้าอยากให้สแกนเนอร์ของเราดูเท่เหมือน K.I.T.T. ตัวจริง ใช้ PWM (Pulse Width Modulation) ในการสร้างเอฟเฟกต์ "หาง" ได้เลยจ้า พอหลอด LED หลักดับ หลอดก่อนหน้านั้นก็ค่อยๆ หรี่ลงแทนที่จะดับทันที งานนี้ได้เอฟเฟกต์การเคลื่อนไหวที่ลื่นไหล เหมือนของเหลวไหลไปมาเลย

เอาไปใช้ทำอะไรได้บ้าง

นอกจากติดรถแล้ว เอฟเฟกต์สแกนแบบนี้ยังใช้ได้อีกเพียบ:

  • ไฟแสดงสถานะ (Status Indicators): บอกว่าระบบกำลังทำงานหรือกำลังค้นหาอะไรอยู่
  • อุปกรณ์ประกอบฉาก: ใส่ให้หมวกหรืออุปกรณ์ไซไฟดูล้ำๆ
  • ไฟตกแต่งอารมณ์ (Mood Lighting): เอาไปทำแอนิเมชั่นง่ายๆ ติดตู้โชว์ก็ปัง
ตั้งค่าเพลงธีม

โค้ด

การตั้งค่า LED 8 หลอด

int leds[] = {2,3,4,5,6,7,8,9};
void setup()
{
for(int i=0; i<8; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop()
{
for(int i=0; i<7; i++) {
digitalWrite(leds[i], HIGH);
delay(100);
digitalWrite(leds[i], LOW);
}
for(int j=7; j>0; j--) {
digitalWrite(leds[j], HIGH);
delay(100);
digitalWrite(leds[j], LOW);
}
}

การตั้งค่าใช้ Shift Register 74HC595

#define LATCH 9
#define CLOCK 10
#define DATA 8
static int led = 0;
byte number[23] = {0b00000000,
0b00000001,
0b00000011,
0b00000111,
0b00001110,
0b00011100,
0b00111000,
0b01110000,
0b11100000,
0b11000000,
0b10000000,
0b00000000,
0b10000000,
0b11000000,
0b11100000,
0b01110000,
0b00111000,
0b00011100,
0b00001110,
0b00000111,
0b00000011,
0b00000001,
0b00000000
};
void setup() {
pinMode(CLOCK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(LATCH, OUTPUT);
}
void loop() {
static unsigned long time = millis();
if (millis() - time >= 80 && led <= 22) {
time = millis();
led++;
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, number[led]);
digitalWrite(LATCH, HIGH);
}
if (led == 22) {
led = 0;
}
}

ส่วนการตั้งค่าเพลงธีม ไปดูรายละเอียดเพิ่มเติมกันได้เลย

จัดชุด DIY Knight Rider ไปเลยวัยรุ่น!

ชุด DIY ประกอบเอง

วิดีโอ

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "circleelectronic"
category: "Lights & LEDs"
components:
  - "1x Male/Female Jumper Wires"
  - "1x Arduino UNO"
  - "1x Circle Electronic Knight Rider"
description: "มาสร้างวงจร LED ให้วิ่งไล่ระดับแบบ K.I.T.T. ในซีรีย์ Knight Rider กัน! งานง่ายแต่หล่อ ใช้แค่ Arduino กับ LED ไม่กี่ดวงก็เทพๆ แล้ว จัดไป!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX18IyJncP5WLflLFK5updRf+5DpBHlqQ460wVZEH2Ve95xG24gKW6YnjLViXQ0Oxj0whmqPaOPDhPPKWKuBK//iCPB/qVMhFbpo="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/arduino-knight-rider-6f4fe4_cover.jpg"
lang: "en"
likes: 0
passwordHash: "c605f1454b6c37e42cfc50ab32f44f2c0ba4e6a2cfe0527c50cb16d46a9c3375"
price: 870
seoDescription: "Build an Arduino Knight Rider LED circuit to recreate the K.I.T.T. animation from the classic TV show."
tags:
  - "lights"
  - "toys"
  - "cars"
  - "kids"
  - "games"
title: "โปรเจค Arduino Knight Rider ไฟวิ่งตึงๆ อย่างในหนัง!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/O9sVCX3fVcQ"
  - "https://www.youtube.com/embed/spA9FOLScQg"
views: 2647