กลับหน้าหลัก
views
โครงสร้างภาษาซีของ Arduino ฟังก์ชัน setup() และ loop()
Last updated on

โครงสร้างภาษาซีของ Arduino ฟังก์ชัน setup() และ loop()


โครงสร้างภาษาซีของ Arduino ฟังก์ชัน setup() และ loop()

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

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

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

ประเมินราคาอัตโนมัติ + Reference Code

ขอให้ AI ประเมินราคาโปรเจคนี้

กรอกข้อมูลให้ครบ ระบบจะสร้างรหัสอ้างอิงและประเมินราคา/ระยะเวลาคร่าว ๆ จากรายละเอียดงาน แล้วให้กด Add LINE พร้อมพิมพ์รหัสนี้เพื่อคุยต่อ

คำถามให้ AI ประเมินแม่นขึ้น

หลังส่งฟอร์ม ระบบจะโชว์ Reference Code ให้ copy แล้วกด Add LINE เพื่อคุยต่อ ข้อมูลส่วนตัวจะไม่ถูกส่งเข้า GA4

ความคิดเห็น

รีวิวจากคนใช้งานจริง

รีวิวจากลูกค้าและคนที่เคยใช้งาน

ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย

กำลังโหลดรีวิว...