Serial Monitor คืออะไร??
![]() |
หน้าต่าง ซีเรียลมอนิเตอร์ |
การเปิดซีเรียลมอนิเตอร์
1. ctrl + shift + m เป็นคีย์ลัดในการเปิด ค่อนข้างสะดวกในการเปิดบ่อยๆ
2. คลิกที่ไอคอน (มุมซ้ายบน)
![]() |
ไอคอน ซีเรียล มอนิเตอร์ |
3. tool -> serial monitor
การตั้ง Buad rate
Buad rate หรือ บอดเรท คือความเร็วในการสื่อสาร จำเป็นจะต้องตั้งให้ตรงกันระหว่างบอร์ดและคอมพิวเตอร์ โดยทั่วไปจะใช้ค่าตั้งแต่ 9600 - 115200 ถ้าความเร็วต่ำ จะใช้เวลามาก ในการรับส่งข้อมูล แต่ถ้าความเร็วสุงเกินไป อาจทำให้การอ่านผิดพลาดได้ ดังนั้นในตัวอย่างนี้ เราจะใช้ค่า 9600
การตั้งบอดเรทฝั่งคอมพิวเตอร์
สามารถตั้งได้ตรงช่องที่แสดงค่า เมื่อคลิ๊กตรงช่องดังกล่าว จะมีหน้าต่างเลื่อนให้เลือกค่าที่เราต้องการ
เราจะเห็นว่า ค่าที่คอมพิวเตอร์อ่านได้มีจำกัด ดังนั้นเราจะต้องตั้งบอดเรทของบอร์ดให้อยู่ในตัวเลือกเหล่านี้
การตั้งบอดเรทฝั่ง Arduino
การตั้งบอดเรทฝั่งอาดุยโน่นั้น จะตั้งเมื่อเปิดการสื่อสารบนพอร์ต ซึ่งจะทำให้ pin 0 , pin 1 ไม่สามารถใช้ทำอย่างอื่นได้ (เพราะใช้ในการรับส่งข้อมูล) สำหรับการเปิดพอร์ตอนุกรม สามารถทำได้โดยใช้คำสั่ง Serial.begin (buadrate);
ตัวอย่าง
การแสดงค่าบนซีเรียลมอนิเตอร์
คือการส่งค่าจากบอร์ด ไปยังอาดุยโน่ โดยใช้คำสั่ง Serial.print("data");
***จุดเน้นย้ำ***
เมื่อต้องการทดสอบโปรแกรม จะต้องเชื่อมต่อบอร์ดเข้ากับคอมพิวเตอร์
และเมื่อมีการเปลี่ยนแปลงโค๊ดโปรแกรมที่ใช้ทดสอบ จะต้องอัพโหลดโค๊ดใหม่ทุกครั้ง
ตัวอย่าง
คือการส่งค่าจากบอร์ด ไปยังอาดุยโน่ โดยใช้คำสั่ง Serial.print("data");
***จุดเน้นย้ำ***
เมื่อต้องการทดสอบโปรแกรม จะต้องเชื่อมต่อบอร์ดเข้ากับคอมพิวเตอร์
และเมื่อมีการเปลี่ยนแปลงโค๊ดโปรแกรมที่ใช้ทดสอบ จะต้องอัพโหลดโค๊ดใหม่ทุกครั้ง
ตัวอย่าง
![]() | |
|
ข้อควรระวัง Serial สามารถใช้ได้เฉพาะภาษาอังกฤษเท่านั้น
![]() |
ผลการรัน เมื่อกดอัพโหลด แล้วเปิดซีเรียลมอนิเตอร์ |
Tool Tip!!
บางครั้งหน้าจออาจจะแสดงข้อความเก่าอยู่ ทำให้เห็นว่ามีการส่งข้อความมาสองครั้ง เราสามารถเคลียหน้าจอได้สองวิธีคือ ปิดซีเรียลมอนิเตอร์แล้วเปิดใหม่ หรือโดยการเลือกบอดเรทใหม่ หน้าจอจะถูกล้างโดยอัตโนมัติ
การเว้นบรรทัด
![]() |
โค้ด และผลการรัน |
จะเห็นว่า"Hello World" และ ",I'm here!" อยู่บรรทัดเดียวกัน แสดงว่า จะมีการเว้นบรรทัดเฉพาะจุดที่มี "\n" เท่านั้น (หมายเหตุ "\n" เป็นชื่อเฉพาะของอักขระตัวหนึ่ง มีความหมายว่า new line)
นอกจากนี้เราสามารถใช้คำสั่ง Serial.println("data"); จะมีการเว้นบรรทัดให้ตอนท้าย เช่น
จะเห็นว่ามีการเว้นบรรทัดทั้งหมดทุกครั้งที่เรียกใช้คำสั่ง
Tool Tip!! ความแตกต่างระหว่าง Serial.print("data\n"); กับ Serial.println("data");
Serial.println("data"); นั้น จะมีค่าเท่ากับ Serial.print("data\r\n"); โดย \r คืออักขระตัวหนึ่ง เรียกว่า carriage return (เลื่อนไปยังต้นบรรทัด) ซึ่งในบางระบบ จะต้องใช้ทั้ง \r และ \n ในการเว้นบรรทัด
Tool Tip!! การเขียนตัว '\' บนซีเรียลมอนิเตอร์
ตามหลักของภาษา C เครื่องหมาย แบ็คสแลช "\" จะเอาไว้แสดงอักขระพิเศษ เช่น \t \0 \r \n เป็นต้นทำให้เราไม่สามารถ Serial.print("\"); ได้ นอกจากนี้ยังมีอีกหลายสัญลักษณ์ เช่น " และ ' ซึ่งจะทำให้สับสน ไม่สามารถปริ้นได้โดยตรง เพราะจะทำให้สับสน ดังนั้นภาษา C จึงบัญญัติ escape character หรือ อักขระหลีก ในการแสดงถึงอักขระข้างต้น
แบบฝึกหัดท้ายบท....
ให้ลองแสดงข้อมูลการแนะนำตัวลงบนซีเรียลมอนิเตอร์ แล้วดูผลที่ได้ว่าออกมาอย่างที่คิดหรือไม่ ผิดพลาดตรงไหน ส่วนภาคผนวก จะอ่านหรือไม่อ่านก็ได้ ไม่บังคับ
สำหรับสัญญาณในทางไฟฟ้า ก็ข้อข้อมูลที่ใช้ปริมาณทางไฟฟ้าเป็นตัวบ่งชี้ ซึ่งเรานิยมใช้แรงดันไฟฟ้า ในการสื่อถึงข้อมูล (เพราะการตรวจวัดแรงดันจะเกิดกำลังสูญเสียน้อย ทำให้ความร้อนต่ำ ในขณะที่การใช้กระแสเป็นสัณญาณ อาจจะทำให้เกิดความร้อนเนื่องจากกระแสไหลผ่าน )
ในการตีความแรงดันไฟฟ้าเป็นข้อมูลนี้สามารถตีความได้สองแบบคือแบบอนาล็อก และแบบดิจิตอล
ในแบบอนาล็อกนั้น ระดับของแรงดันต่างๆ จะสื่อถึงข้อมูลโดยตรง ยิ่งแรงดันมาก ค่าของข้อมูลก็มาก ส่วนในแบบดิจิตอล แรงดันที่ใช้มีสองระดับ คือสูง (1) และตำ่ (0)
จะเห็นว่าในระบบดิจิตอลจะมีปริมาณแค่สองระดับเท่านั้น ดังนั้นในการสื่อถึงข้อมูลที่มีความละเอียดมากขึ้น จึงจำเป็นต้องใช้ "การสื่อสารแบบขนาน" โดยเพิ่ม bit หรือสายสัญญาณมากขึ้น ในการส่งข้อมูล โดยใช้ระบบเลขฐานสอง เช่น ถ้าใช้สายสัญญาณ 1 เส้น จะแสดงข้อมูลได้ 2 ระดับ ถ้าใช้ 2 เส้น จะแสดงได้ 4 ระดับ เป็นต้น
จะเห็นว่ายิ่งเราต้องการข้อมูลที่ละเอียด เราก็ยิ่งต้องใช้จำนวนสายสัญญาณมากขึ้น ดังนั้นเพื่อลดจำนวนของสายสัญญาณ จึงมีการคิดค้นวิธีการสื่อสารแบบอนุกรมขึ้น โดยการส่งชุดของข้อมูลหลายๆ bit ในสัญญาณเส้นเดียว
ดังนั้น ในสายสัณญาณเดียวกัน จะมีข้อมูลของบิทหลายบิท ซึ่งการที่จะแยกว่าช่วงเวลาไหน เป็นบิทไหน สามารถทำได้สองวิธี คือ 1.ใช้สายสัญญาณกำกับ 2. ใช้คาบเวลาเป็นตัวกำกับ
ตามหลักของภาษา C เครื่องหมาย แบ็คสแลช "\" จะเอาไว้แสดงอักขระพิเศษ เช่น \t \0 \r \n เป็นต้นทำให้เราไม่สามารถ Serial.print("\"); ได้ นอกจากนี้ยังมีอีกหลายสัญลักษณ์ เช่น " และ ' ซึ่งจะทำให้สับสน ไม่สามารถปริ้นได้โดยตรง เพราะจะทำให้สับสน ดังนั้นภาษา C จึงบัญญัติ escape character หรือ อักขระหลีก ในการแสดงถึงอักขระข้างต้น
![]() |
ตัวอย่างการใช้อักขระหลีก |
ให้ลองแสดงข้อมูลการแนะนำตัวลงบนซีเรียลมอนิเตอร์ แล้วดูผลที่ได้ว่าออกมาอย่างที่คิดหรือไม่ ผิดพลาดตรงไหน ส่วนภาคผนวก จะอ่านหรือไม่อ่านก็ได้ ไม่บังคับ
ภาคผนวก:การสื่อสารด้วยสัญญาณไฟฟ้า
สัญญาณ ข้อมูล หรือปริมาณที่อยู่ในรูปแบบต่างๆ ไม่ว่าจะเป็นความเร็ว ความสูง ตำแหน่ง เสียง อะไรก็ ทุกสิ่งอย่างบนโลกนี้ล้วนเป็นสัญญาณ แตกต่างกันไปตามพาหะสำหรับสัญญาณในทางไฟฟ้า ก็ข้อข้อมูลที่ใช้ปริมาณทางไฟฟ้าเป็นตัวบ่งชี้ ซึ่งเรานิยมใช้แรงดันไฟฟ้า ในการสื่อถึงข้อมูล (เพราะการตรวจวัดแรงดันจะเกิดกำลังสูญเสียน้อย ทำให้ความร้อนต่ำ ในขณะที่การใช้กระแสเป็นสัณญาณ อาจจะทำให้เกิดความร้อนเนื่องจากกระแสไหลผ่าน )
ในการตีความแรงดันไฟฟ้าเป็นข้อมูลนี้สามารถตีความได้สองแบบคือแบบอนาล็อก และแบบดิจิตอล
![]() |
เปรียบเทียบข้อมูลดิจิตอล 1-bit และอนาล็อก จากเซนเซอร์แสง |
![]() |
การรับ และอ่านค่าดิจิตอล 1-bit |
จะเห็นว่าในระบบดิจิตอลจะมีปริมาณแค่สองระดับเท่านั้น ดังนั้นในการสื่อถึงข้อมูลที่มีความละเอียดมากขึ้น จึงจำเป็นต้องใช้ "การสื่อสารแบบขนาน" โดยเพิ่ม bit หรือสายสัญญาณมากขึ้น ในการส่งข้อมูล โดยใช้ระบบเลขฐานสอง เช่น ถ้าใช้สายสัญญาณ 1 เส้น จะแสดงข้อมูลได้ 2 ระดับ ถ้าใช้ 2 เส้น จะแสดงได้ 4 ระดับ เป็นต้น
![]() |
แสดงการสื่อสารแบบขนาน 2-bit |
จะเห็นว่ายิ่งเราต้องการข้อมูลที่ละเอียด เราก็ยิ่งต้องใช้จำนวนสายสัญญาณมากขึ้น ดังนั้นเพื่อลดจำนวนของสายสัญญาณ จึงมีการคิดค้นวิธีการสื่อสารแบบอนุกรมขึ้น โดยการส่งชุดของข้อมูลหลายๆ bit ในสัญญาณเส้นเดียว
![]() |
ลักษณะการสื่อสารแบบขนาน |
![]() |
ลักษณะการสื่อสารแบบแนุกรม |
ดังนั้น ในสายสัณญาณเดียวกัน จะมีข้อมูลของบิทหลายบิท ซึ่งการที่จะแยกว่าช่วงเวลาไหน เป็นบิทไหน สามารถทำได้สองวิธี คือ 1.ใช้สายสัญญาณกำกับ 2. ใช้คาบเวลาเป็นตัวกำกับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น