โปรเจกต์ "Blink" เปรียบเสมือนก้าวแรกหรือ "Hello World" ของโลกแห่งวิศวกรรมระบบฝังตัว (Embedded Systems) แม้จะดูเรียบง่าย แต่การทำให้ไฟ LED กระพริบได้นั้นเป็นการทำความเข้าใจพื้นฐานที่สำคัญที่สุด 3 ประการ คือ การกำหนดสถานะพอร์ตสัญญาณ (I/O Configuration), การควบคุมระดับแรงดันไฟฟ้า (Digital Output Control) และการจัดการจังหวะเวลา (Timing Management)
รายละเอียดการทำงานและหลักการทางวิศวกรรม
ในโปรเจกต์นี้ เราจะสั่งการให้ไมโครคอนโทรลเลอร์ควบคุมขาสัญญาณดิจิทัลเพื่อจ่ายแรงดันไฟฟ้าให้กับ LED โดยมีรายละเอียดเชิงลึกดังนี้:
1. ส่วนประกอบฮาร์ดแวร์ (Hardware Components)
- Microcontroller (Arduino Board): หัวใจหลักในการประมวลผลคำสั่งที่เราเขียนขึ้น
- Built-in LED (Pin 13): บอร์ด Arduino ส่วนใหญ่จะมี LED ติดตั้งมาให้บนบอร์ด (On-board LED) เชื่อมต่อกับขา Digital Pin 13 ซึ่งสะดวกต่อการทดสอบโค้ดเบื้องต้นโดยไม่ต้องต่อวงจรภายนอก
- Current Limiting Resistor: ในทางวิศวกรรม การต่อ LED จะต้องมีตัวต้านทานเพื่อจำกัดกระแสไฟไม่ให้ไหลผ่าน LED มากเกินไปจนเกิดความเสียหาย (สำหรับ Pin 13 บนบอร์ดมักจะมีตัวต้านทานนี้ติดตั้งมาให้แล้ว)
2. การวิเคราะห์ลอจิกของโปรแกรม (Code Logic Analysis)
โค้ดชุดนี้ถูกแบ่งออกเป็นสองส่วนหลักตามมาตรฐานของ Arduino Framework:
ส่วนการตั้งค่า (The Setup Configuration)
void setup()
{
pinMode(13, OUTPUT);
}
ในฟังก์ชัน setup() ระบบจะทำงานเพียงครั้งเดียวเมื่อเริ่มต้นจ่ายไฟ วิศวกรจะใช้ส่วนนี้ในการกำหนดโหมดการทำงานของขา (GPIO) โดยคำสั่ง pinMode(13, OUTPUT) คือการสั่งให้โปรเซสเซอร์เตรียมวงจรภายในให้ขา 13 ทำหน้าที่เป็น "ทางออก" ของสัญญาณ เพื่อให้สามารถจ่ายกระแสไฟออกไปขับ LED ได้
ส่วนวงจรการทำงานหลัก (The Main Loop)
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
ฟังก์ชัน loop() จะทำงานซ้ำต่อเนื่องไปเรื่อยๆ ตามลำดับดังนี้:
- digitalWrite(13, HIGH): สั่งให้ขา 13 มีสถานะเป็น "HIGH" หรือปล่อยแรงดันไฟฟ้าออกมา (ประมาณ 5V หรือ 3.3V แล้วแต่ชนิดของบอร์ด) ทำให้ LED ครบวงจรและสว่างขึ้น
- delay(1000): คำสั่งหน่วงเวลา โดยระบุหน่วยเป็นมิลลิวินาที (ms) ในที่นี้คือ 1000 ms หรือ 1 วินาที ในช่วงเวลานี้ไมโครคอนโทรลเลอร์จะหยุดรอและรักษาคงสถานะไฟสว่างไว้
- digitalWrite(13, LOW): สั่งให้ขา 13 มีสถานะเป็น "LOW" หรือ 0V (Ground) ตัดการจ่ายไฟ ทำให้ LED ดับลง
- delay(1000): หน่วงเวลาอีก 1 วินาทีเพื่อให้เห็นสถานะตอนไฟดับ ก่อนที่ลูปจะวนกลับไปบรรทัดแรกใหม่
สรุปผลการทำงาน
ผลลัพธ์ที่ได้คือวงจรไฟกระพริบที่มีรอบการทำงาน (Duty Cycle) อยู่ที่ 50% โดยมีความถี่ในการกระพริบอยู่ที่ 0.5 Hz (สว่าง 1 วินาที ดับ 1 วินาที รวมเป็น 1 รอบในทุกๆ 2 วินาที) ซึ่งเป็นพื้นฐานสำคัญในการนำไปประยุกต์ใช้กับการควบคุมอุปกรณ์อื่นๆ เช่น การส่งสัญญาณเตือน หรือการควบคุมจังหวะการทำงานของเครื่องจักรในอนาคต