3. Serial และ ตัวแปร [FunBasic I/O]

Posted by | May 10, 2015 | Arduino, Embeded System, Tutorial | No Comments
g17475

เริ่มใช้งานพื้นฐานของ พอร์ตการสื่อสารกันครับ สำหรับการสื่อสารภายนอก ใน 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 หรือ แสดงค่าจากการคำนวน เพื่อตรวจสอบว่าโปรแกรมเราผิคพลาดหรือเปล่า  ถ้ามีส่วนใดบทความผิคพลาด หรือ มีความคิดเห็นประการใด ติชมได้ครับ

สรุปสิ่งที่ได้เรียนรู้ที่ผ่านมา

    1. รู้จักการใช้ตั้งค่าความเร็วการสื่อสาร Baudrate สำหรับ Serial
    2. รู้จักการวิธีการส่งข้อความผ่าน Serial.print() และ Serial.println()
    3. รู้จักการ operation การ บวก ลบ คูณ หาร บน arduino
    4. สร้าง package ข้อมูล สำหรับการสื่อสารได้
    5. รู้จักชนิดข้อมูล Int, float, long, boolean
    6. รู้จักการรับข้อมูล ผ่าน Serial.read()

About chang

ชื่อ “ช้าง” ส่วนมากเขาจะเรียกว่า “พี่ช้าง” แล้ว มีความสนใจทางเทคโนโลยีทางคอมพิวเตอร์ อิเล็กทรอนิกส์ และ หุ่นยนต์ เป็นทั้งนักคิด นักประดิษฐ์ ชอบทดลองเล่น จนเดี่ยวนี้รู้สึกว่าจะเล่นมากกว่ามืออาชีพไปสักแล้ว