โครงสร้างภาษาซีของ Arduino ฟังก์ชัน setup() และ loop()
โครงสร้างภาษาซีของ Arduino ฟังก์ชัน setup() และ loop()
เข้าใจโครงสร้างโปรแกรม Arduino
ภาษาซีที่ใช้เขียน Arduino แตกต่างจาก C ปกติตรงที่มันถูกสร้างมาให้เป็น framework สำเร็จรูป ทุกโปรแกรม Arduino จะมีโครงสร้างแบ่งเป็น 3 ส่วนหลัก: Header (ส่วนหัว), setup() และ loop()
ส่วนที่ 1: Header
Header เป็นส่วนที่อยู่บรรทัดแรกของโค้ด ใช้สำหรับ:
#includeไลบรารีที่ต้องการใช้- ประกาศตัวแปรแบบ global
- กำหนดค่าคงที่
#include <Servo.h> // ส่งผนวกไลบรารี Servo เข้ามาใช้
int servoPin = 9; // กำหนดให้ตัวแปร servoPin แทน Pin Digital 9
Servo myservo; // สร้าง object ชื่อ myservo สำหรับควบคุม Servo
จุดที่ต้องปรับ: ถ้าไม่ใช้ Servo สามารถลบส่วนนี้ออกได้เลย
ส่วน Header มีหรือไม่มีก็ได้ ขึ้นอยู่กับว่าโปรแกรมต้องการใช้ไลบรารีหรือตัวแปร global หรือไม่
ส่วนที่ 2: ฟังก์ชัน setup()
setup() เป็น ฟังก์ชันบังคับ ที่ต้องมีในทุกโปรแกรม Arduino ถึงแม้จะไม่มีคำสั่งอะไรเลยก็ตาม
void setup() {
// กำหนดโหมดขา 11 เป็นขาส่งออก
pinMode(11, OUTPUT);
// กำหนด Baudrate สำหรับ Serial Monitor
Serial.begin(9600);
// กำหนดขาที่จะควบคุม Servo
myservo.attach(servoPin);
}
หน้าที่หลักของ setup()
| คำสั่ง | ทำอะไร |
|---|---|
pinMode() | กำหนดว่าขานั้นเป็น INPUT หรือ OUTPUT |
Serial.begin() | ตั้งความเร็วสื่อสารอนุกรม |
myservo.attach() | กำหนดขาควบคุม Servo |
setup() จะทำงานแค่ รอบเดียว ตอนเริ่มโปรแกรมเท่านั้น เหมาะสำหรับตั้งค่าเริ่มต้นที่ต้องกำหนดครั้งเดียวแล้วใช้ไปตลอด
ส่วนที่ 3: ฟังก์ชัน loop()
loop() เป็น ฟังก์ชันบังคับอีกตัว ที่ต้องมีเช่นกัน แต่ต่างจาก setup() ตรงที่มันจะทำงานซ้ำไม่รู้จบ
void loop() {
myservo.write(180); // สั่ง Servo ไปที่ตำแหน่ง 180 องศา
delay(1000); // รอ 1 วินาที
myservo.write(0); // สั่ง Servo ไปที่ตำแหน่ง 0 องศา
delay(1000); // รอ 1 วินาที
}
สิ่งที่ควรอยู่ใน loop()
- คำสั่งอ่านค่าจากเซ็นเซอร์
- คำสั่งสั่งงานอุปกรณ์ เช่น พัดลม ไฟ LED
- คำสั่งแสดงผล
- การตรวจสอบเงื่อนไขต่างๆ
loop() เปรียบเสมือน ฟังก์ชัน main() ใน C ปกติ แต่ถูกเขียนให้ทำงานวนรอบโดยอัตโนมัติ
ตัวอย่างโครงสร้างโปรแกรมครบถ้วน
// === Header (ไม่บังคับ) ===
#include <Servo.h>
int servoPin = 9;
Servo myservo;
// === setup() ทำงานรอบเดียว ===
void setup() {
myservo.attach(servoPin);
Serial.begin(9600);
}
// === loop() ทำงานวนซ้ำไม่รู้จบ ===
void loop() {
myservo.write(180);
delay(1000);
myservo.write(0);
delay(1000);
}
[image: โค้ดโปรแกรม Arduino ครบทั้ง 3 ส่วน พร้อมคอมเมนต์บอกว่าแต่ละส่วนทำหน้าที่อะไร]
สรุป
โครงสร้างภาษาซีของ Arduino แบ่งเป็น 3 ส่วน คือ Header, setup() และ loop() โดย setup() จะทำงานแค่ครั้งเดียวตอนเริ่มต้น ส่วน loop() จะทำงานวนซ้ำไปเรื่อยๆ เข้าใจตรงนี้แล้วจะอ่านโค้ด Arduino ของใครก็ตามได้ง่ายขึ้น
อยากทำโปรเจคแบบนี้?
รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน
หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย