เริ่มใช้งานพื้นฐานของ พอร์ตการสื่อสารกันครับ สำหรับการสื่อสารภายนอก ใน Arduino จะใช้พอร์ตที่เรียกว่า Serial หรือ ภาษาไทยเรียกพอร์ตอนุกรม Serial เป็นการสื่อสาร ระหว่างคอมพิวเตอร์ กับ อุปกรณ์ สามารถแสดงค่าตัวแปร หรือ แสดงตัวอักษรข้อความได้ ผ่าน Serial Monitor ซึ่งปกติ เราจะใช้ในการแสดงผล เพื่อ Debug โปรแกรม ว่าทำงานถูกไหม หรือ อาจจะใช้เพื่อรับคำสั่งก็ยังครับ
<Lab 1> Serial Communication
Serial Communication สิ่งแรกที่ต้องทำ คือการตั้งค่า Baud rate ในส่วนของ ไมโครคอนโทรลเลอร์ และ ส่วนของคอมพิวเตอร์ให้ตรงกัน ส่วนมากจะตั้งค่าประมาณ 9600 เป็นความเร็วที่คอมพิวเตอร์ ไม่น่าเป็นภาระงานให้กับเครื่องคอมพิวเตอร์มากจนเกินไป และ ส่งไม่ช้าจนรอ ไม่ไหวครับ แต่ความจริงจะตั้งอื่น ก็ได้ โดยใช้คำสั่ง Serial.begin()
หลังจากกด Upload ลองเปิด Serial Monitor ดูครับ โดยแสดงผลจะมี สองแบบ คือ Serial.println() แบบเว้นบรรทัด (new line) กับ Serial.print()ไม่ส่งค่า เว้นบรรทัด ทดลองสลับกันดูครับ
เราจะได้เห็นการส่งข้อมูลกลับมายังคอมพิวเตอร์ เราอาจจะลองง่ายเปลี่ยนข้อความแล้วให้ Arduino ส่งกลับมาใหม่ดูครับ
ชนิดของข้อมูล (Data Types)
ชนิดข้อมูล | ขนาดข้อมูล (Bytes) | ขอบเขตข้อมูล |
boolean | 1 | สถานะ True หรือ False |
char | 1 | ตัวอักษร -127 ถึง 127 |
int | 2 | จำนวนเต็ม -32,768 ถึง 32,767 |
long | 4 | จำนวนเต็ม -2,147,483,647 ถึง 2,147,483,647 |
float | 4 | ทศนิยม -3.4028235E+38 ถึง 3.4028235E+38 |
นอกจากนี้ ตัวแปรยังมีชนิด แบบ unsigned หรือ ข้อมูลแบบ ไม่ติดเครื่องหมาย ลบ อีกด้วย
ชนิดข้อมูล | ขนาดข้อมูล | ขอบเขตข้อมูล |
unsigned char | 1 | จำนวนเต็ม 0ถึง 255 |
unsigned int | 2 | จำนวนเต็ม0 ถึง 65,536 |
unsigned long | 4 | จำนวนเต็ม 0 ถึง 4,294,967,295 |
วิธีการประกาศตัวแปร อยู่ที่ว่าขนาดของข้อมูลมากแค่ไหน เพราะว่า การใช้ตัวแปรมีพื้นที่ของการหน่วยความจำที่เหลือของ Arduino ยิ่งถ้าเราใช้ ตัวแปรแบบ Long มากๆ จะทำให้การเก็บข้อมูล การประมวลผลช้าลงไป ถ้าอยากให้โปรแกรมทำงานเร็ว ควรจะเลือกชนิดข้อมูลให้ถูกต้องครับ
<Lab 2> การส่งค่าตัวแปร กลับจาก Serial
นอกจากจะส่งข้อความมาได้ เรายังทำให้ส่งค่ากลับมาได้ ในที่นี้เราลองส่งค่า count กลับมาแสดงผลให้ดูครับ โดยตัวแปร count เราเลือกใช้ข้อมูลแบบ unsiged char
หลังจากกด Upload ลองเปิด Serial Monitor ดูครับ จะเห็นว่ามันจะนับถึง 0 แล้วจะเริ่มต้นที่ 255 เกิดการ overflow ครับ ลองเปลี่ยนค่า ตัวแปร count จาก unsigned char เป็น char หรือ int แล้วสังเกตค่าดูครับ
ตัวดำเนินการ (Math Operation)
จากการทดลองที่แล้วเราจะได้สร้าง counter มีการคำนวนนิดหน่อย คือ บวกเลข ไปเรื่อย เรามาทำความรู้จัก การ operation ทาง คณิตศาสตร์ทั้งหมดกันครับ
Math Operation | สัญลักษณ์ |
บวก | + |
ลบ | – |
คูณ | * |
หาร | / |
เศษ | % |
เพื่อความเข้าใจเพิ่มเติม ผมเลยเอาตัวอย่างการการทำตารางสูตรคูณให้ดูกันครับ
<Lab 3> สูตรคูณ บอก Arduino
เรามาทดลองการคำนวนบน บอร์ด Arduino กันครับ อันนี้เป็นการทดลองทำการคูณเลข
หลังจากกด Upload ลองเปิด Serial Monitor ดูครับ
<Lab-4> ส่งคำสั่งจากคอมพิวเตอร์ไป Arduino
หลังจากที่เราส่งออกไปได้แล้ว มาทดลองรับค่าจากคอมพิวเตอร์บ้าง วิธีการรับข้อมูลเข้าจากคอมพิวเตอร์ arduino จะใช้ฟังก์ชั่น Serial.Read() ซึ่งในตัวอย่างนี้ช่วยให้เข้าใจมากขึ้น หลังจาก upload อย่าลืม เปิด Serial Monitor แล้วทดลองตามล่ะ
หลังจากกด Upload ลองเปิด Serial Monitor ดูครับ
เอาล่ะครับ คงจะได้เห็นภาพการสื่อสาร ด้วย Arduino กันมาบ้าง ซึ่ง Serial จะมีประโยชน์มาก มันไม่ต้องมีอุปกรณ์เพิ่มเติมมาก และ สามารถแสดงข้อความได้ เราจะใช้ แสดงค่า sensor หรือ แสดงค่าจากการคำนวน เพื่อตรวจสอบว่าโปรแกรมเราผิคพลาดหรือเปล่า ถ้ามีส่วนใดบทความผิคพลาด หรือ มีความคิดเห็นประการใด ติชมได้ครับ
สรุปสิ่งที่ได้เรียนรู้ที่ผ่านมา
- รู้จักการใช้ตั้งค่าความเร็วการสื่อสาร Baudrate สำหรับ Serial
- รู้จักการวิธีการส่งข้อความผ่าน Serial.print() และ Serial.println()
- รู้จักการ operation การ บวก ลบ คูณ หาร บน arduino
- สร้าง package ข้อมูล สำหรับการสื่อสารได้
- รู้จักชนิดข้อมูล Int, float, long, boolean
- รู้จักการรับข้อมูล ผ่าน Serial.read()