หัวข้อ
หัวข้อ
เขียนโปรแกรม Arduino ด้วยภาษาซี คำสั่งพื้นฐานที่ควรเรียนรู้
- รับลิงก์
- X
- อีเมล
- แอปอื่นๆ
โครงสร้างพื้นฐานของโปรแกรม Arduino
โค้ด Arduino ทุกโค้ด (หรือที่เรียกว่า Sketch) จะมีโครงสร้างหลัก 2 ส่วนเสมอ:
void setup():เป็นฟังก์ชันที่ ทำงานเพียงครั้งเดียว เมื่อบอร์ด Arduino เริ่มทำงาน (เปิดไฟ หรือกดปุ่ม Reset)
ใช้สำหรับตั้งค่าเริ่มต้นต่างๆ เช่น กำหนดโหมดของขาพอร์ต (Input/Output), เริ่มต้นการสื่อสารแบบอนุกรม (Serial Communication) หรือตั้งค่าโมดูลต่างๆ
void loop():เป็นฟังก์ชันที่ ทำงานซ้ำไปเรื่อยๆ อย่างไม่มีที่สิ้นสุด หลังจากฟังก์ชัน
setup()ทำงานเสร็จเป็นส่วนที่เราจะเขียนโค้ดหลักสำหรับให้ Arduino ทำงานตามที่เราต้องการ เช่น อ่านค่าจากเซ็นเซอร์, ควบคุมหลอดไฟ, มอเตอร์
คำสั่งพื้นฐานที่ควรรู้
1. คำสั่งสำหรับควบคุมขาพอร์ต (Digital I/O)
pinMode(pin, mode);ใช้: กำหนดโหมดการทำงานของขาพอร์ต (Pin) ว่าจะเป็นขา Input (รับค่าเข้ามา) หรือ Output (ส่งค่าออกไป)
pin: หมายเลขขาพอร์ตของ Arduino (เช่น 2, 3, 13)mode:INPUT,OUTPUT, หรือINPUT_PULLUP(สำหรับใช้ตัวต้านทาน Pull-up ภายใน)ตัวอย่าง:
pinMode(13, OUTPUT);(กำหนดขา 13 ให้เป็นขาเอาต์พุต)
digitalWrite(pin, value);ใช้: ส่งค่าสถานะแบบดิจิทัล (เปิด/ปิด, สูง/ต่ำ) ออกไปที่ขาพอร์ตที่กำหนดไว้เป็น
OUTPUTpin: หมายเลขขาพอร์ตvalue:HIGH(เปิด, แรงดันสูง 5V) หรือLOW(ปิด, แรงดันต่ำ 0V)- ตัวอย่าง:
digitalWrite(13, HIGH);(ทำให้ขา 13 มีไฟออก)
digitalRead(pin);ใช้: อ่านค่าสถานะแบบดิจิทัลจากขาพอร์ตที่กำหนดไว้เป็น
INPUTpin: หมายเลขขาพอร์ตค่าที่ส่งกลับ:
HIGH(ถ้ามีแรงดันสูง) หรือLOW(ถ้ามีแรงดันต่ำ)ตัวอย่าง:
int buttonState = digitalRead(2);(อ่านค่าจากขา 2 แล้วเก็บไว้ในตัวแปรbuttonState)
2. คำสั่งสำหรับควบคุมขาพอร์ตแบบ Analog (Analog I/O)
analogRead(pin);ใช้: อ่านค่าแรงดันไฟฟ้าแบบอะนาล็อกจากขาพอร์ตอะนาล็อก (ขา A0-A5 บน Arduino Uno) โดยจะแปลงค่าแรงดัน (0-5V) เป็นตัวเลข (0-1023)
pin: หมายเลขขาพอร์ตอะนาล็อก (เช่น A0, A1)ค่าที่ส่งกลับ: ตัวเลขจำนวนเต็มระหว่าง 0 ถึง 1023
ตัวอย่าง:
int sensorValue = analogRead(A0);(อ่านค่าจากขา A0)
analogWrite(pin, value);ใช้: ส่งค่าสัญญาณ PWM (Pulse Width Modulation) ออกไปที่ขาพอร์ตดิจิทัลที่รองรับ PWM (มักจะมีสัญลักษณ์
~หน้าหมายเลขขา เช่น 3, 5, 6, 9, 10, 11) เพื่อควบคุมความสว่างของ LED หรือความเร็วของมอเตอร์pin: หมายเลขขาพอร์ตดิจิทัลที่รองรับ PWMvalue: ตัวเลขจำนวนเต็มระหว่าง 0 (ปิดสนิท) ถึง 255 (เปิดเต็มที่)ตัวอย่าง:
analogWrite(9, 128);(ทำให้ LED ที่ขา 9 สว่างครึ่งหนึ่ง)
3. คำสั่งสำหรับหน่วงเวลา
delay(ms);ใช้: หน่วงเวลาการทำงานของโปรแกรมเป็นมิลลิวินาที (milliseconds)
ms: จำนวนมิลลิวินาทีที่ต้องการหน่วง (1000 ms = 1 วินาที)ตัวอย่าง:
delay(1000);(หยุดการทำงาน 1 วินาที)
4. คำสั่งสำหรับการสื่อสารแบบอนุกรม (Serial Communication)
Serial.begin(baud_rate);ใช้: เริ่มต้นการสื่อสารแบบอนุกรมผ่านพอร์ต USB เพื่อให้ Arduino สามารถส่งข้อมูลไปยังคอมพิวเตอร์ (Serial Monitor) หรือรับข้อมูลจากคอมพิวเตอร์ได้
baud_rate: ความเร็วในการสื่อสาร (มักใช้ 9600 หรือ 115200)ตัวอย่าง:
Serial.begin(9600);(เริ่มต้นการสื่อสารที่ความเร็ว 9600 บิตต่อวินาที)
Serial.print(data);และSerial.println(data);ใช้: ส่งข้อมูลออกทาง Serial Monitor
Serial.print(): ส่งข้อมูลแล้วเคอร์เซอร์จะอยู่บรรทัดเดิมSerial.println(): ส่งข้อมูลแล้วขึ้นบรรทัดใหม่data: ข้อมูลที่ต้องการส่ง (ตัวเลข, ข้อความ, ตัวแปร)ตัวอย่าง:
Serial.print("Hello, Arduino!");Serial.println(sensorValue);
Serial.read();ใช้: อ่านข้อมูลที่ส่งเข้ามาทางพอร์ต Serial
ค่าที่ส่งกลับ: ตัวอักษรที่อ่านได้ (เป็นค่า ASCII) หรือ -1 ถ้าไม่มีข้อมูล
ตัวอย่าง:
char receivedChar = Serial.read();
5. คำสั่งและสัญลักษณ์อื่นๆ ที่สำคัญ
//: ใช้สำหรับเขียน Comment หรือข้อความอธิบายในโค้ด ส่วนนี้คอมไพเลอร์จะข้ามไป ไม่ถูกประมวลผล ใช้เพื่อช่วยให้เราและคนอื่นเข้าใจโค้ดได้ง่ายขึ้น/* ... */: ใช้สำหรับเขียน Comment หลายบรรทัด;(Semicolon): ต้อง ปิดท้ายทุกๆ คำสั่งเสมอ (ยกเว้นพวกวงเล็บปีกกา{}หรือคำสั่งควบคุมif,for,while){}(Curly Braces): ใช้กำหนดขอบเขตของบล็อกคำสั่ง เช่น ฟังก์ชันsetup()ฟังก์ชันloop()หรือบล็อกif-elseint,float,char,String: เป็นชนิดของ ตัวแปร (Variable) ที่ใช้สำหรับเก็บข้อมูลประเภทต่างๆint: จำนวนเต็ม (integer)float: จำนวนทศนิยม (floating-point number)char: ตัวอักขระ (character)String: ข้อความ (ชุดของตัวอักขระ)
=(Assignment Operator): ใช้ในการกำหนดค่าให้กับตัวแปร เช่นint x = 10;==(Comparison Operator): ใช้ในการเปรียบเทียบว่าสองค่าเท่ากันหรือไม่ เช่นif (x == 10)if/else if/else: คำสั่งเงื่อนไข สำหรับการตัดสินใจif (condition) {// ทำงานถ้า condition เป็นจริง } else if (anotherCondition) { // ทำงานถ้า anotherCondition เป็นจริง } else { // ทำงานถ้า condition และ anotherCondition เป็นเท็จ }
for/while: คำสั่งวนซ้ำ (Loop)
- รับลิงก์
- X
- อีเมล
- แอปอื่นๆ
