โครงสร้างโปรแกรมและภาษา C/C++
การเขียนโปรแกรม Arduino เปรียบเสมือนการเขียนจดหมายสั่งงานหุ่นยนต์ โดยเราจะใช้ภาษา C/C++ ซึ่งมีโครงสร้างที่ชัดเจนและเป็นระเบียบ แบ่งออกเป็น 2 ส่วนหลักที่ขาดไม่ได้:
1. โครงสร้างพื้นฐาน (The Core Structure)
void setup() { // ส่วนนี้ทำงาน "ครั้งเดียว" เมื่อเปิดเครื่อง // ใช้สำหรับตั้งค่าเริ่มต้น เช่น กำหนดโหมดของขาพิน } void loop() { // ส่วนนี้ทำงาน "วนซ้ำต่อเนื่อง" ไปเรื่อยๆ // เป็นส่วนที่ใช้เขียนคำสั่งควบคุมหลัก }
2. ไวยากรณ์เบื้องต้นที่ต้องรู้ (Syntax)
เครื่องหมายอัฒภาค (Semicolon - ;) : ต้องใส่ที่ท้ายประโยคคำสั่งทุกครั้ง (เหมือนจุด Full Stop ในภาษาอังกฤษ)
เครื่องหมายปีกกา (Curly Braces - { }) : ใช้บอกขอบเขตของกลุ่มคำสั่ง
การคอมเมนต์ (Comments - //) : ข้อความหลังเครื่องหมายนี้ โปรแกรมจะไม่นำไปประมวลผล ใช้สำหรับเขียนบันทึกเตือนความจำ
💡 ข้อควรระวัง (Case Sensitive): ภาษา C/C++ ให้ความสำคัญกับตัวพิมพ์เล็ก-ใหญ่ คำว่า LedPin กับ ledpin คือคนละคำกัน!
3. ตัวแปรและชนิดข้อมูล (Variables & Data Types)
ตัวแปรเปรียบเสมือน "กล่องเก็บข้อมูล" ที่เราต้องตั้งชื่อและระบุประเภทสิ่งของที่จะใส่ลงไป:
| ชนิดข้อมูล | คำสั่ง (Type) | สิ่งที่เก็บได้ |
|---|---|---|
| เลขจำนวนเต็ม | int | เลขไม่มีทศนิยม เช่น 10, -5, 100 |
| เลขทศนิยม | float | เลขมีทศนิยม เช่น 3.14, 0.5 |
| ตัวอักษร | char | ตัวอักษร 1 ตัว เช่น 'A', 'b' |
| ค่าความจริง | boolean | มีแค่ 2 ค่า คือ true (จริง) หรือ false (เท็จ) |
4. ตัวดำเนินการและนิพจน์ (Operators)
ใช้สำหรับการคำนวณและเปรียบเทียบตรรกะ:
- ทางคณิตศาสตร์:
+(บวก),-(ลบ),*(คูณ),/(หาร),%(หารเอาเศษ) - การเปรียบเทียบ:
==(เท่ากับ),!=(ไม่เท่ากับ),>(มากกว่า),<(น้อยกว่า) - ทางตรรกศาสตร์:
&&(และ),||(หรือ),!(ไม่)
5. โครงสร้างควบคุมทิศทาง (Control Structures)
ใช้สร้างเงื่อนไขหรือการทำงานแบบวนซ้ำให้กับโปรแกรม:
// 1. เงื่อนไข if-else (ถ้า...มิฉะนั้น) if (score >= 50) { // ทำงานถ้าเงื่อนไขเป็นจริง (สอบผ่าน) } else { // ทำงานถ้าเงื่อนไขเป็นเท็จ (สอบตก) } // 2. การวนลูป for (ทำซ้ำตามจำนวนรอบที่แน่นอน) for (int i = 0; i < 5; i++) { // คำสั่งในนี้จะทำงาน 5 รอบ }
6. ฟังก์ชันพื้นฐานและการสร้างฟังก์ชัน (Functions)
Arduino มีฟังก์ชันสำเร็จรูปให้ใช้งาน และเราสามารถสร้างเองได้เพื่อจัดระเบียบโค้ด:
pinMode(pin, mode): กำหนดขาพินให้เป็น INPUT หรือ OUTPUT (ใช้ใน setup)digitalWrite(pin, value): สั่งให้ขาพินปล่อยไฟ (HIGH) หรือปิดไฟ (LOW)digitalRead(pin): อ่านสถานะไฟฟ้าจากขาพิน (HIGH หรือ LOW)delay(ms): หน่วงเวลาหน่วยเป็นมิลลิวินาที (1000 ms = 1 วินาที)