กลับหน้าหลัก
views
void setup() และ void loop() คืออะไร? โครงสร้าง Arduino พร้อมโค้ด
Last updated on

void setup() และ void loop() คืออะไร? โครงสร้าง Arduino พร้อมโค้ด


void setup() และ void loop() คืออะไร? โครงสร้าง Arduino พร้อมโค้ด

เข้าใจโครงสร้างโปรแกรม Arduino

void setup() ใน Arduino ทำงานหนึ่งครั้งเมื่อเปิดเครื่องหรือรีเซ็ต ส่วน void loop() ทำงานวนซ้ำหลัง setup() จบ Arduino ใช้ C++ ร่วมกับ framework ที่จัดการการเริ่มต้นและการวนรอบให้ ทุกโปรแกรม Arduino จะมีโครงสร้างแบ่งเป็น 3 ส่วนหลัก: Header (ส่วนหัว), setup() และ loop()

ไดอะแกรมแสดงโครงสร้างโปรแกรม Arduino แบ่งเป็น 3 ส่วน Header → setup() → loop() วนกลับมาที่ 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 วินาที
}
กราฟแสดง timeline การทำงานของ setup() (รันครั้งเดียว) และ loop() (วนซ้ำไม่รู้จบ)

สิ่งที่ควรอยู่ใน 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 แบบเร่งด่วน สามารถดูขอบเขตงานและขั้นตอนติดต่อได้ที่หน้าบริการ

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

ความคิดเห็น