🧩 Introduction & Syntax
พื้นฐานการเขียนโปรแกรมบน Arduino / ESP32 ด้วยภาษา C/C++
🧠 1. Arduino คืออะไร?
Arduino คือ แพลตฟอร์มไมโครคอนโทรลเลอร์แบบเปิด (Open Source Hardware) ที่ออกแบบมาให้ใช้งานง่ายสำหรับนักเรียน นักศึกษา และนักพัฒนา
มันประกอบด้วย 2 ส่วนสำคัญ:
| ส่วนประกอบ | รายละเอียด |
|---|---|
| Hardware (บอร์ด) | เช่น Arduino UNO, Nano, Mega, ESP32 — มีไมโครคอนโทรลเลอร์สำหรับควบคุมวงจร |
| Software (IDE) | โปรแกรมที่ใช้เขียนและอัปโหลดโค้ดขึ้นบอร์ด (Arduino IDE) |
Arduino สามารถควบคุมอุปกรณ์ไฟฟ้า เช่น LED, Motor, Sensor, Relay ฯลฯ ได้โดยใช้คำสั่งง่าย ๆ
⚙️ 2. ESP32 คืออะไร?
ESP32 คือไมโครคอนโทรลเลอร์รุ่นใหม่จาก Espressif มี Wi-Fi และ Bluetooth ในตัว เขียนโปรแกรมได้ด้วย Arduino IDE เช่นเดียวกับ Arduino UNO
| เปรียบเทียบ | Arduino UNO | ESP32 |
|---|---|---|
| CPU | ATmega328P 8-bit | Tensilica Xtensa 32-bit (Dual Core) |
| ความเร็ว | 16 MHz | 240 MHz |
| หน่วยความจำ (RAM) | 2 KB | 520 KB |
| Wi-Fi / BLE | ✖️ ไม่มี | ✅ มีในตัว |
| พอร์ต USB | Type-B | Micro USB / USB-C |
| เหมาะกับ | การทดลองพื้นฐาน | IoT / Automation / Cloud |
🧩 3. โครงสร้างพื้นฐานของโปรแกรม Arduino
ทุกโปรแกรมใน Arduino จะประกอบด้วย 2 ส่วนหลัก คือ
void setup() {
// ส่วนนี้ทำงานเพียงครั้งเดียวตอนเริ่มต้น
}
void loop() {
// ส่วนนี้ทำงานซ้ำๆ ตลอดเวลา
}
| ฟังก์ชัน | หน้าที่ | ทำงานเมื่อไหร่ |
|---|---|---|
setup() | ใช้ตั้งค่าเริ่มต้น เช่น กำหนดขา, เริ่ม Serial, Wi-Fi | ทำงาน ครั้งเดียว เมื่อเปิดเครื่องหรือรีเซ็ต |
loop() | ใส่โค้ดหลัก เช่น อ่านเซนเซอร์, ควบคุมอุปกรณ์ | ทำงาน วนซ้ำตลอดเวลา |
💡 4. ตัวอย่างโปรแกรมแรก (Blink LED)
void setup() {
pinMode(2, OUTPUT); // กำหนดขา 2 เป็นขาออก
}
void loop() {
digitalWrite(2, HIGH); // เปิดไฟ LED
delay(1000); // หน่วงเวลา 1 วินาที
digitalWrite(2, LOW); // ปิดไฟ LED
delay(1000);
}
คำอธิบาย:
pinMode()→ กำหนดทิศทางของขาdigitalWrite()→ สั่งเปิด/ปิด (HIGH/LOW)delay(ms)→ หน่วงเวลา (มิลลิวินาที)
🔹 5. ลำดับขั้นตอนการทำงานของโปรแกรม
1️⃣ setup() ทำงานก่อน 1 ครั้ง
2️⃣ จากนั้น loop() จะเริ่มทำงานวนซ้ำเรื่อย ๆ
3️⃣ หากรีเซ็ตบอร์ด → จะกลับไปทำ setup() อีกครั้ง
Start → setup() → loop() → loop() → loop() → …
🔹 6. คำสั่งพื้นฐาน (Basic Syntax)
| คำสั่ง | หน้าที่ | ตัวอย่าง |
|---|---|---|
pinMode(pin, mode) | กำหนดโหมดขา | pinMode(2, OUTPUT); |
digitalWrite(pin, val) | สั่ง HIGH / LOW | digitalWrite(2, HIGH); |
digitalRead(pin) | อ่านค่าจากขา Digital | val = digitalRead(4); |
analogRead(pin) | อ่านค่าจากขา Analog (0–1023 หรือ 0–4095) | val = analogRead(34); |
analogWrite(pin, val) | ส่งสัญญาณ PWM (0–255) | analogWrite(5, 128); |
delay(ms) | หน่วงเวลาเป็นมิลลิวินาที | delay(1000); |
Serial.begin(baud) | เริ่ม Serial | Serial.begin(115200); |
Serial.print() | แสดงข้อความใน Serial Monitor | Serial.print("Hello"); |
🔹 7. การคอมเมนต์ (Comment)
ใช้เพื่ออธิบายโค้ด ไม่ถูกคอมไพล์
// แบบบรรทัดเดียว
/* แบบหลายบรรทัด
สามารถเขียนยาวได้ */
🧮 8. กฎพื้นฐานของ Syntax
| กฎ | คำอธิบาย |
|---|---|
1️⃣ ทุกคำสั่งต้องจบด้วยเครื่องหมาย ; | |
2️⃣ ตัวพิมพ์เล็ก–ใหญ่สำคัญ (LED ≠ led) | |
3️⃣ ฟังก์ชันต้องอยู่ในวงเล็บ {} | |
4️⃣ ต้องมี setup() และ loop() อย่างน้อยหนึ่งครั้ง | |
| 5️⃣ การเว้นบรรทัดไม่ส่งผลต่อโปรแกรม (แต่ควรอ่านง่าย) |
🧩 9. การใช้ Serial Monitor เพื่อดูผลลัพธ์
void setup() {
Serial.begin(115200);
Serial.println("Hello ESP32!");
}
void loop() {
Serial.println(millis());
delay(1000);
}
เปิด Tools → Serial Monitor จะเห็นข้อความจากบอร์ด
ใช้ได้กับทั้ง Arduino และ ESP32
🔧 10. การอัปโหลดโปรแกรม
1️⃣ เชื่อมต่อบอร์ดผ่านสาย USB
2️⃣ เลือกบอร์ดให้ถูกต้อง
- Arduino: Tools → Board → Arduino UNO
- ESP32: Tools → Board → ESP32 Dev Module
3️⃣ เลือกพอร์ต (Tools → Port → COMx หรือ /dev/ttyUSBx)
4️⃣ กด Upload (สัญลักษณ์ลูกศร ▶️)
🧾 11. สรุปแนวคิดสำคัญ
| หัวข้อ | สรุปสั้น ๆ |
|---|---|
| Arduino IDE | โปรแกรมเขียนและอัปโหลดโค้ด |
| setup() | ทำงานครั้งเดียวตอนเริ่มต้น |
| loop() | ทำงานซ้ำ ๆ ตลอดเวลา |
| pinMode() / digitalWrite() / delay() | คำสั่งหลักที่ต้องรู้ |
| Serial Monitor | ใช้ตรวจสอบค่าหรือดีบักโปรแกรม |
| ESP32 | Arduino ที่มี Wi-Fi และ Bluetooth ในตัว |
🧠 12. แบบฝึกหัดท้ายบท
1️⃣ เขียนโปรแกรมกระพริบไฟ LED ทุก 500 ms
2️⃣ เขียนโปรแกรมเปิดไฟ 2 ดวงสลับกัน
3️⃣ เขียนโปรแกรมแสดงข้อความ “Welcome to ESP32” ใน Serial Monitor
4️⃣ ทดลองใช้ delay() กับค่าเวลาต่าง ๆ แล้วสังเกตผล
5️⃣ อธิบายความแตกต่างระหว่าง setup() และ loop()
📘 ภาพรวมแนวคิดของโปรแกรม Arduino
┌────────────────────────┐
│ setup() │
│ - ตั้งค่าเริ่มต้น │
│ - กำหนดขา, Serial, WiFi │
└───────────┬────────────┘
↓
┌────────────────────────┐
│ loop() │
│ - ทำงานซ้ำ ๆ │
│ - อ่าน sensor │
│ - สั่ง actuator │
└────────────────────────┘
