วันศุกร์ที่ 27 พฤษภาคม พ.ศ. 2559

เริ่มต้นใช้งานอาดุยโน่ : บทที่ 3 Serial Monitor

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 สามารถใช้ได้เฉพาะภาษาอังกฤษเท่านั้น

ผลการรัน เมื่อกดอัพโหลด  แล้วเปิดซีเรียลมอนิเตอร์
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-bit และอนาล็อก จากเซนเซอร์แสง
ในแบบอนาล็อกนั้น ระดับของแรงดันต่างๆ จะสื่อถึงข้อมูลโดยตรง ยิ่งแรงดันมาก ค่าของข้อมูลก็มาก   ส่วนในแบบดิจิตอล แรงดันที่ใช้มีสองระดับ  คือสูง (1) และตำ่ (0)
การรับ และอ่านค่าดิจิตอล 1-bit




 จะเห็นว่าในระบบดิจิตอลจะมีปริมาณแค่สองระดับเท่านั้น  ดังนั้นในการสื่อถึงข้อมูลที่มีความละเอียดมากขึ้น จึงจำเป็นต้องใช้ "การสื่อสารแบบขนาน" โดยเพิ่ม bit หรือสายสัญญาณมากขึ้น ในการส่งข้อมูล โดยใช้ระบบเลขฐานสอง เช่น ถ้าใช้สายสัญญาณ 1 เส้น จะแสดงข้อมูลได้ 2 ระดับ ถ้าใช้ 2 เส้น จะแสดงได้ 4 ระดับ เป็นต้น

แสดงการสื่อสารแบบขนาน 2-bit





จะเห็นว่ายิ่งเราต้องการข้อมูลที่ละเอียด เราก็ยิ่งต้องใช้จำนวนสายสัญญาณมากขึ้น  ดังนั้นเพื่อลดจำนวนของสายสัญญาณ จึงมีการคิดค้นวิธีการสื่อสารแบบอนุกรมขึ้น  โดยการส่งชุดของข้อมูลหลายๆ bit ในสัญญาณเส้นเดียว

ลักษณะการสื่อสารแบบขนาน


ลักษณะการสื่อสารแบบแนุกรม



ดังนั้น ในสายสัณญาณเดียวกัน จะมีข้อมูลของบิทหลายบิท ซึ่งการที่จะแยกว่าช่วงเวลาไหน เป็นบิทไหน สามารถทำได้สองวิธี คือ 1.ใช้สายสัญญาณกำกับ 2. ใช้คาบเวลาเป็นตัวกำกับ




ไม่มีความคิดเห็น:

แสดงความคิดเห็น