บทที่ 9 Serial Monitor |
|
[วิดีโอประจำบท] | |
ในบทนี้ผู้เขียนขอส่งท้ายภาคทฤษฎีด้วยเรื่องที่ไม่ปวดหัวแต่สำคัญมากอีกอย่าง บทต่อไปผู้เขียนจะไม่เรียกว่าบทเรียนแล้วนะครับ ขอเรียกว่าทำแล็ปแทน เนื่องจากจะใช้เซ็นเซอร์และทำการประยุกต์ใช้เรื่องที่เรียนมาทั้งหมดนำมาใช้งาน แต่ก่อนจะนอกเรื่อง ต้องมารู้จัก Serial Monitor กันก่อนครับ Serial Monitor เป็นการสื่อสารแบบ Serial (ภาษาไทยเรียกแบบอนุกรม) ซึ่งเป็นการสื่อสารพื้นฐานของคอมพิวเตอร์ แบบเดียวกับเมาส์คีย์บอร์ดที่เราเสียบคอมพิวเตอร์ของเรานั่นแหละครับ การสื่อสารแบบนี้เป็นการส่งข้อมูลแบบเลื่อนบิต จะไม่มีการ sync สัญญาณนาฬิกา แต่จะมีบิตเปิดข้อมูล บิตปิดข้อมูล และต้องมีความเร็วในการสื่อสารที่เรียกว่า baud rate เท่ากัน ก่อนจะสร้างความปวดหัว ไหนบอกคอร์สนี้ไม่ลงลึกฟระ เรากลับมาเรื่องของเราดีกว่า ที่ผู้เขียนบอกว่ามันสำคัญมากอีกอย่างคือเราสามารถใช้ Serial Monitor ในการแสดงผลการทำงานของ Arduino ในกรณีแบบว่าเราแค่ต้องการทดลองโค้ด จะได้ไม่ต้องต่ออุปกรณ์ให้วุ่นวายครับ บอร์ดอันเดียวก็เล่นได้ และแน่นอนว่ามันก็รับค่าคำสั่งเพื่อไปสั่งให้ Arduino ทำงานได้เช่นกัน รวมถึงการใช้งานในขั้นสูงๆต่อไป เราสามารถเขียนโปรแกรม GUI โดยใช้โปรแกรมเช่น Vistual Studio เข้ามาควบคุมได้อีก นั่งคลิกเม้าส์บนจอคอมพิวเตอร์ก็สามารถสั่งงานบอร์ด Arduino ได้ |
|
![]() หน้าตา Serial Monitor ของโปรแกรม Arduino IDE |
|
สำหรับการเรียกใช้ Serial Monitor ของ Arduino IDE นั้น ให้คลิกที่ Tools > Serial Monitor หรือกดปุ่ม Ctrl+Shift+M แต่การจะเปิดใช้ Serial Monitor นั้น เราต้องทำการเชื่อมต่อบอร์ด Arduino เข้ากับคอมพิวเตอร์เสียก่อน ส่วน Serial Monitor ทำอะไรได้บ้างนั้น ก็มีการกำหนด baud rate (แน่นอนล่ะ มันต้องให้ตรงกันนี่นา) การรับค่า เช่น เราพิมพ์คีย์บอร์ดลงไป การส่งค่าออกมา เช่น ให้บอร์ดคำนวณอะไรซักอย่างแล้วแสดงออกมาบนหน้าจอ การเช็คว่าเชื่อมต่ออยู่หรือไม่ ซึ่งแต่ละอย่างอาจจะมีหลายคำสั่งได้อีก อย่างการแสดงผล จะให้แสดงผลเฉยๆ หรือแสดงผลออกมาแล้วขึ้นบรรทัดใหม่ เอาหล่ะ พอได้แนวๆกันบ้างแล้วเรามาเริ่มตัวอย่างกันเลยดีกว่าครับ
โค้ดนี้ผู้เขียนยิงกระสุนลูกปรายได้นกสองตัวไปเลย นอกจากจะเห็น Serial Monitor แล้ว ยังเห็นถึงการทำงานของ for อีกด้วย หลังจากที่พิมพ์โค้ดเสร็จแล้วจัดการอัพโหลดลงบอร์ดและทำการเปิดserial Monitor ขึนมา แต่ก่อนทำการเปิดนั้นต้องแน่ใจว่าเลือก board และ COM port ถูกต้อง เมื่อคลิกเปิดได้แล้วให้ดูว่า baud rate ตรงกับที่เราเขียนไว้ในโปรแกรมหรือไม่ ถ้าไม่ตรงก็เลือกให้ตรงกันนะครับ |
|
![]() ![]() ตรวจให้ถูกต้องว่า port และ baud rate ตรงกัน |
|
ใน setup ของเรานั้นเรากำหนดไว้ว่า Serial.begin(9600); ฉะนั้นในช่อง baud rate เราก็ต้องเลือกให้เป็น 9600 baud ด้วยนะครับ ไม่งั้นมันจะออกมาเป็นภาษาต่างดาว (baud rate ใน arduino IDE มีค่าต่างๆให้เลือกมากมายตั้งแต่ 300 1200 4800 9600 ยาวไปจนถึง 2000000 ที่สามารถเลือกใช้ค่าตามนี้ได้ตามสะดวก แต่ที่นิยมใช้และเห็นกันบ่อยๆก็คือ 9600 และ 115200) คำสั่งก็มีแค่สั้นๆ Serial คือสั่งให้พอร์ตทำงาน ทำงานอะไรหล่ะ println() คือให้แสดงค่าออกมาแล้วขึ้นบรรทัดใหม่ เอามาประกอบกันก็ได้เป็นคำสั่ง Serial.println() ส่วนที่จะให้แสดงผลออกมาเป็นอะไรนั้นก็ใส่ไว้ในวงเล็บได้เลย โดยถ้าอยากให้แสดงค่าตัวแปรที่คำนวณได้ก็พิมพ์ชื่อตัวแปรลงไปเลย หากเป็นข้อความต้องมีเครื่องหมายฟันหนู(เครื่องหมายคำพูด) ครอบไว้ มาถึงตรงนี้ลองใส่ชื่อตัวเองไว้ตรงไหนซักที่สิครับ จากนั้นมาดูกันว่า println() คือแสดงผลแล้วไปขึ้นบรรทัดใหม่รอ แต่ถ้าอยากให้มันแสดงออกมาติดกันหล่ะ ก็แค่ใช้คำสั่ง print() ลองใช้โค้ดเดิมแต่เปลี่ยน println() เป็น print() แทน ลองเปิด Serial Monitor ดูอีกที มันจะติดกันไปยาวเลยล่ะครับ ที่ผ่านมาเป็นการส่งขอมูลจาก arduino มาให้คอมพิวเตอร์ เพื่อแสดงผลบนจอคอมพิวเตอร์ ทีนี้มาดูส่งจากคอมพิวเตอร์ไป arduino มั่งดีกว่า
|
|
ลองเปิด Serial Monitor ขึนมา เมื่อข้อความขึ้นมาว่า “Press any key” ลองกดคีย์บอร์ดคอมพิวเตอร์ลงไปในช่องด้านบนซักตัว แล้วคลิกที่ปุ่ม send สังเกตจอ Serial Monitor ที่แสดงผลขึ้นมา arduino มันจะบอกว่าคุณกดปุ่มอะไรใช่มั๊ยครับ การทำงานคือ if ตรวจดูว่าข้อมูล >0 (คือมีนข้อมูลส่งมา)รึเปล่า ถ้ามีก็ให้ค่าตัวแปร r เท่ากับข้อมูลที่ให้มา จากนั้นจึงแสดงผลออกมาแค่นั้นเองครับ ลองเล่นดูแบบให้กดปุ่ม A แล้ว LED ขา 13 สว่างดูสิครับ ผู้เขียนคิดว่าทุกคนน่าจะทำได้นะ ผิดก็แก้ใหม่ครับ ไม่เป็นไร มาถึงตรงนี้พอจะเห็นรึยังครับว่า Serial Monitor มันสำคัญและมีหน้าที่อย่างไร ก็จะถือว่าจบภาคทฤษฎีเป็นที่เรียบร้อยนะครับ บทต่อไปเราจะเริ่มทดลองเล่นกันเซ็นเซอร์ตรวจจับต่างๆกัน จะไม่ต้องเบื่อปวดหัวกับทฤษฎี และจะได้เขียนโปรแกรมกันอย่างจริงๆจังๆซักทีครับ |
|
[ดาวน์โหลด] [กลับหน้าหลักของคอร์ส] |