45 แผนการจดั การเรียนรมู้ ุ่งเน้นสมรรถนะ หน่วยท่ี 6 สอนคร้ังท่ี 16 ช่อื วชิ า หนุ่ ยนตเ์ บือ้ งตน้ ชว่ั โมงรวม 4 ชอ่ื หน่วย การเขียนโปรแกรมควบคมุ การทำงานของหุน่ ยนต์เบอ้ื งตน้ จำนวนชว่ั โมง 4 5. ผสู้ อนอธิบายใบงานปฏบิ ตั งิ าน โดยให้ผู้เรียนศึกษาจากใบงานหน่วยท่ี 6 6. ขั้นตอนการแจ้งวัตถุประสงค์ของการสาธิต ในขั้นตอนนี้จะให้ผู้เรียน ดูจากการสาธิต โดยเน้นให้ ผเู้ รียนมสี ่วนร่วมในการสาธิต และเนน้ ย้ำ ทบทวน เร่อื งความปลอดภัยจากการเรียนในสว่ นทฤษฎี ระหว่างสาธิตควร มีการหยุดซักถามผู้เรียนเป็นช่วงๆ เพื่อประเมินผล และหลังจากเสร็จจากการสาธิต ก็จะให้ผู้เรียนช่วยกันสรุป และ แจง้ ให้ผเู้ รยี นทราบถึงวัตถปุ ระสงคใ์ นการสาธติ ในครง้ั นี้ ขั้นที่ 4 ขัน้ ลงมือปฏิบตั ิ 7. ผ้เู รยี นลงมือปฏบิ ัติตามใบงานที่ 6 ทกุ คน ตามขน้ั ตอนทีส่ าธติ โดยผสู้ อนตอ้ งควบคุม ดูแลและให้ คำแนะนำอยา่ งใกลช้ ิด ข้นั ท่ี 5 ขน้ั ตรวจและประเมินผลชิ้นงาน 8. ผูส้ อนทำการตรวจประเมนิ ผลงานและแจ้งผลให้ผู้เรยี นทราบ 6.ส่อื การเรยี นร้/ู แหล่งการเรียนรู้ 6.1 ส่ือส่ิงพิมพ์ 1. หนงั สือวิชา หุ่นยนต์เบ้ืองต้น 2. ใบงานที่ 6 เรอื่ ง การควบคมุ หนุ่ ยนต์ดว้ ยจอยสติ๊ก 6.2 ส่ือโสตทศั น์ (ถ้าม)ี 1. สื่อประกอบการสอน Power Point เร่อื ง การเขยี นโปรแกรมควบคมุ การทำงานของห่นุ ยนตข์ นาดเลก็ 6.3 หุ่นจำลองหรือของจริง (ถ้าม)ี 1. บอรด์ ไมโครคอนโทรลเลอร์ อาดุยโน่
46 แผนการจัดการเรยี นรมู้ ุ่งเน้นสมรรถนะ หนว่ ยที่ 6 สอนคร้ังท่ี 16 ช่ือวิชา หนุ่ ยนต์เบ้ืองต้น ชั่วโมงรวม 4 ช่อื หน่วย การเขยี นโปรแกรมควบคุมการทำงานของหุ่นยนต์เบือ้ งตน้ จำนวนชั่วโมง 4 7. การวัดผลและประเมินผล 1. คะแนนจากพฤติกรรมการเรียนรรู้ ายบคุ คล 2. คะแนนจากพฤติกรรมการเข้ารว่ มกิจกรรมกลุ่ม 3. คะแนนแบบจากการทำแบบฝึกหัด หน่วยที่ 6 การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนต์ เบื้องตน้ 4. คะแนนตรวจงานตามใบประเมินผลการปฏบิ ตั งิ าน เร่ือง การควบคุมหุ่นยนตด์ ว้ ยจอยสต๊ิก 5. คะแนนจากแบบสังเกตพฤติกรรมระหวา่ งการปฏิบัติงาน 6. คะแนนจากการสงั เกตและประเมินผลพฤติกรรมดา้ นคุณธรรม จริยธรรม ค่านิยม และคุณลักษณะอันพึง ประสงค์ 8. แหลง่ การเรียนรู้เพ่ิมเติม 1. ศึกษาคน้ ควา้ ในห้องสมุด 2. ศกึ ษาค้นควา้ จากข้อมลู จากอนิ เตอร์เนต็
47 แผนการจัดการเรียนรมู้ ุ่งเน้นสมรรถนะ หน่วยที่ 6 สอนครงั้ ท่ี 17 ชื่อวชิ า หุ่นยนต์เบือ้ งต้น ชวั่ โมงรวม 4 ชื่อหนว่ ย การเขยี นโปรแกรมควบคุมการทำงานของหุ่นยนตเ์ บื้องต้น จำนวนช่วั โมง 4 1. สาระสำคัญ 1. การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนต์ขนาดเล็ก 2. สมรรถนะประจำหน่วย 1. ผ้เู รยี นสามารถเขียนโปรแกรมควบคุมการทำงานของหุ่นยนตข์ นาดเลก็ ได้ 3. จุดประสงค์การเรียนรู้ 3.1 ดา้ นความรู้ 1. ผ้เู รยี นอธิบายการทำงานของโปรแกรมการควบคมุ การทำงานหุ่นยนต์ขนาดเล็กได้อยา่ งถกู ต้อง 3.2 ทักษะ 1. ผเู้ รยี นสามารถเขียนโปรแกรมการควบคมุ การทำงานหนุ่ ยนต์ขนาดเล็กได้ถูกต้อง 3.3 คณุ ลักษณะที่พงึ ประสงค์ 1. ผเู้ รียนมีความตรงตอ่ เวลา 2. มมี นุษยส์ มั พันธ์ 3. กลา้ แสดงความคดิ เห็น 4. ยอมรบั ความคิดเหน็ ของผ้อู ่นื
48 แผนการจัดการเรยี นรมู้ ุ่งเน้นสมรรถนะ หนว่ ยที่ 6 สอนครั้งที่ 17 ช่ือวิชา หนุ่ ยนตเ์ บ้ืองตน้ ชว่ั โมงรวม 4 ชือ่ หน่วย การเขียนโปรแกรมควบคมุ การทำงานของห่นุ ยนตเ์ บ้ืองต้น จำนวนชว่ั โมง 4 4. เน้อื หาสาระการเรยี นรู้ 4.1 การเขียนโปรแกรมควบคมุ การทำงานของหนุ่ ยนต์ขนาดเล็ก การเขียนโปรแกรมจะนำคำสั่งที่เรียนรู้ข้างต้นมาเขียนเป็นโปรแกรม แต่จะต้องเรียนรู้ส่วนประกอบของตัว โปรแกรมสำหรับการเขยี นคำสั่ง ซ่ึงโปรแกรมเรียกวา่ อาดุยโน่ ไอดอี ี (Arduino IDE) โดยสามารถดาวนโ์ หลดได้จาก ลิ้งค์ https://www.arduino.cc/en/main/software และในการเขียนโปรแกรมควบคุมหุ่นยนต์ขนาดเล็กจะเริ่ม เรียนรู้พื้นฐานการเขียนโปรแกรมตั้งแต่การเขียนโปรแกรมควบคุมเซ็นเซอร์วัดระยะ(Distance Sensor) การเขียน โปรแกรมควบคุมเซ็นเซอร์ความเข้มแสง(LDR) การเขียนโปรแกรมควบคุมมอเตอร์เซอร์โว การติดตั้งไลบรา ร่ี(LIBRARY) การเขียนโปรแกรมควบคุมมอเตอร์สเต็ป (Step Motor) การเขียนโปรแกรมควบคุมปุ่มกด(Button) โปรแกรมควบคุมรีเลย์ (Relay Module) การควบคุมหุ่นยนต์ด้วยมือแบบสวิตช์ การควบคุมหุ่นยนต์ด้วยมือแบบ จอยสติ๊กพีเอสทู (PS2 Playstation) การควบคุมหุ่นยนต์ด้วยมือแบบจอยสติ๊กพีเอสทูแบบไร้สาย การควบคุม หุ่นยนต์ด้วยมือแบบโมดูลจอยสติ๊ก การควบคุมมอเตอร์ 1 ตัวด้วยมือผ่านสมาร์ทโฟน การควบคุมทิศทางหุ่นยนต์ ด้วยมือโดยใช้สมาร์ทโฟน การควบคุมหุ่นยนต์แบบอัตโนมัติด้วยเซ็นเซอร์ตรวจจับเส้น และ การควบคุมหุ่นยนต์ แบบอัตโนมตั ิด้วยเซน็ เซอร์อลั ต้าโซนิค
49 แผนการจัดการเรยี นรมู้ งุ่ เนน้ สมรรถนะ หน่วยท่ี 6 สอนคร้ังที่ 17 ชอื่ วชิ า หุ่นยนตเ์ บอ้ื งตน้ ชั่วโมงรวม 4 ชื่อหนว่ ย การเขยี นโปรแกรมควบคมุ การทำงานของหนุ่ ยนตเ์ บ้อื งต้น จำนวนช่ัวโมง 4 5. กจิ กรรมการจัดการเรยี นรู้ กจิ กรรมการจัดการเรยี นรู้ (รูปแบบ 5 ขนั้ ตอน ตามทฤษฎีหลักการของ ศ.ดร. ชยั ยงค์ พรหมวงศ์ ) ในการเรยี นการสอนของหน่วยที่ 6 สัปดาหท์ ่ี 17 ชว่ั โมงท่ี 65- 68 ในส่วนของทฤษฎีและปฏบิ ัติ (รวมจำนวน 4 ช่ัวโมง) 5.1 ขนั้ ทำแบบทดสอบก่อนเรียน 1. ผู้สอนมอบหมายใหผ้ ูเ้ รยี นทำแบบทดสอบก่อนเรียน หน่วยการเรียนรูท้ ี่ 6 จำนวน 14 ขอ้ 5.2 ขัน้ นำเขา้ สบู่ ทเรียน 1. ผสู้ อนแจง้ วัตถปุ ระสงค์การเรยี น สิ่งที่ผเู้ รียนจะไดจ้ ากการเรียน 2. ผสู้ อนนำเสนอเพาเวอรพ์ อยท์ เรื่อง การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนต์ขนาดเล็ก 3. ผสู้ อนรว่ มสนทนากบั ผเู้ รียนใหผ้ เู้ รยี นช่วยสรุปหวั ขอ้ เรือ่ งตา่ งๆ เพอื่ นำคำตอบต่างๆ มาสรปุ เปน็ เน้อื หาทจี่ ะสอนในคร้งั น้ี 5.3 ขนั้ ประกอบกจิ กรรมการเรียนรู้ 1 ผูส้ อนมอบใหผ้ ู้เรียนแบ่งกลุม่ ๆ ละ 2-3 คน ให้ศกึ ษาคน้ คว้าจากเอกสารประกอบการเรียน วิชา หุ่นยนต์เบื้องต้น ในหนว่ ยที่ 6 การเขยี นโปรแกรมควบคุมการทำงานของหุน่ ยนตเ์ บ้ืองต้น หัวขอ้ การเขยี นโปรแกรมควบคุมการทำงานของหนุ่ ยนต์ขนาดเล็ก โดยศึกษาในส่วนทเี่ ปน็ เน้อื หา ความรใู้ นหน้า 113 2. กลยุทธ์ในการพฒั นาทกั ษะผู้เรยี นโดยให้ผู้เรยี นศึกษาคน้ ควา้ และการปฏบิ ัติเสมือนจรงิ ก่อน การปฏิบัตจิ รงิ ตามใบงานกจิ กรรมท่กี ำหนด 3. ให้ผเู้ รียนลงมือปฏบิ ตั ิจรงิ ตามใบงานกจิ กรรมท่กี ำหนด 6. 4. ผสู้ อนทำการประเมนิ ผลงานใหค้ ะแนนเปน็ รายกล่มุ และรายบุคคลและประกาศผลให้ ผูเ้ รียนทราบ 5. ผสู้ อนมอบหมายใหผ้ ้เู รียนทำแบบฝกึ หัดหนว่ ยท่ี 6 การเขียนโปรแกรมควบคุมการทำงานของ หุ่นยนตเ์ บ้อื งต้น หวั ข้อ คำสัง่ ในการใชง้ าน จำนวน 14 ข้อ จากเอกสารประกอบการเรยี นวชิ างาน หนุ่ ยนตเ์ บือ้ งตนั ในหน่วยที่ 6 เรือ่ ง การเขียนโปรแกรมควบคุมการทำงานของหุน่ ยนตเ์ บ้ืองต้น หน้า 157
50 แผนการจัดการเรียนรมู้ งุ่ เน้นสมรรถนะ หนว่ ยท่ี 6 สอนคร้ังที่ 17 ช่อื วชิ า หุ่นยนตเ์ บอื้ งต้น ชวั่ โมงรวม 4 ชือ่ หนว่ ย การเขยี นโปรแกรมควบคุมการทำงานของหนุ่ ยนตเ์ บ้อื งต้น จำนวนชั่วโมง 4 6 5.4 ขน้ั การสรุปบทเรยี น ผู้สอนมอบให้ผ้เู รียนร่วมกนั สรปุ เน้อื หาท่เี รียนในหน่วยเรียนที่ 6 พรอ้ มรว่ มสรุปกบั ผูเ้ รียนในส่วนทีย่ งั ไมค่ รบ หรือเพ่ิมเติมให้ชัดเจน จากส่ือเพาเวอร์พอยท์ โดยผสู้ อนคอยดูแลใหค้ ำปรึกษาและถามนำให้ ผูเ้ รียนช่วยกันตอบ เป็นการกระตุ้นใหผ้ เู้ รียนไดศ้ ึกษาตรงวตั ถุประสงค์ทตี่ ้องการและเป็นการวดั ผล และประเมินจากการเรยี นรู้และความสนใจของผเู้ รยี นทง้ั ในด้านความรู้ ดา้ นทักษะและด้านคณุ ธรรม จริยธรรมและคุณลกั ษณะอันพึงประสงค์ไปด้วย 5.5 ข้ันทำแบบทดสอบหลงั เรียน 1. ผ้สู อนมอบหมายใหผ้ ู้เรยี นทำแบบทดสอบหลังเรยี นหน่วยที่ 6 จำนวน 14 ขอ้ 2. ผสู้ อนตรวจคะแนนแบบทดสอบก่อนเรียน และหลงั เรียนและตดิ ประกาศใหผ้ เู้ รียนทราบ ในการเรียนการสอนของหน่วยที่ 6 สัปดาห์ท่ี 17 ชวั่ โมงท่ี 65 - 68 โดยทฤษฎี 1 ช่ัวโมง และปฏิบัติ 3 ชั่วโมง (รวมจำนวน 4 ชว่ั โมง) แบ่งการสอนออกเป็น 5 ขั้นตอน (ปรับประยกุ ตจ์ าก ทฤษฎี ของ รศ.ดร.สาโรช โสภรี ักษ์) ดงั น้ี ขน้ั ที่ 1 ขั้นกำหนดจุดประสงค์ 1. ได้กำหนดจุดประสงค์ ในการสาธิตในหนว่ ยนีไ้ วค้ ือขนั้ ตอนเขยี นโปรแกรมจากคำสั่งท่ีใชง้ านในการ ควบคุมอุปกรณ์เสมือนจริง ขน้ั ที่ 2 ขั้นเตรยี มการสาธติ 2. ผ้สู อนจดั เตรียม ใบงานท่ี 7 เรอ่ื ง การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนต์ขนาดเลก็ พร้อมทง้ั จดั เตรยี มและตรวจสอบอุปกรณ์ ไว้ก่อนทำการสาธิต ได้แก่ บอรด์ ไมโครคอนโทรลเลอร์ บอรด์ สำหรบั ต่อ วงจร สายตอ่ วงจร และตวั อย่างชน้ิ งานเปน็ ตัวอย่าง พรอ้ มอุปกรณ์ทำความสะอาด 3. ผสู้ อนไดจ้ ัดเตรียมชุดทดลองไมโครคอนโทรลเลอร์ไว้เพียงพอต่อจำนวนผเู้ รียน ข้นั ท่ี 3 ขน้ั ทำการสาธิต 4. ผู้สอนนำตัวอย่างของการใชค้ ำสง่ั ในการเขียนโปรแกรมผ้เู รียนดู
51 แผนการจัดการเรยี นรมู้ งุ่ เนน้ สมรรถนะ หนว่ ยท่ี 6 สอนครั้งที่ 17 ชอื่ วชิ า หุน่ ยนต์เบอ้ื งตน้ ชั่วโมงรวม 4 ช่ือหนว่ ย การเขยี นโปรแกรมควบคุมการทำงานของห่นุ ยนต์เบ้อื งต้น จำนวนชัว่ โมง 4 5. ผสู้ อนอธิบายใบงานปฏบิ ัติงาน โดยใหผ้ ูเ้ รยี นศกึ ษาจากใบงานหนว่ ยท่ี 6 6. ขั้นตอนการแจ้งวัตถุประสงค์ของการสาธิต ในขั้นตอนนี้จะให้ผู้เรียน ดูจากการสาธิต โดยเน้นให้ ผู้เรยี นมสี ่วนรว่ มในการสาธิต และเน้นยำ้ ทบทวน เร่ืองความปลอดภัยจากการเรียนในสว่ นทฤษฎี ระหว่างสาธิตควร มีการหยุดซักถามผู้เรียนเป็นช่วงๆ เพื่อประเมินผล และหลังจากเสร็จจากการสาธิต ก็จะให้ผู้เรียนช่วยกันสรุป และ แจ้งให้ผ้เู รียนทราบถึงวัตถุประสงค์ในการสาธติ ในคร้ังน้ี ข้นั ท่ี 4 ขนั้ ลงมือปฏิบตั ิ 7. ผเู้ รียนลงมอื ปฏบิ ัติตามใบงานที่ 7 ทกุ คน ตามขนั้ ตอนทส่ี าธิต โดยผูส้ อนตอ้ งควบคุม ดูแลและให้ คำแนะนำอยา่ งใกลช้ ิด ข้ันที่ 5 ข้ันตรวจและประเมินผลช้นิ งาน 8. ผู้สอนทำการตรวจประเมนิ ผลงานและแจง้ ผลใหผ้ ู้เรยี นทราบ 6.สือ่ การเรยี นรู้/แหลง่ การเรียนรู้ 6.1 สอ่ื ส่ิงพิมพ์ 1. หนงั สอื วิชา หุ่นยนตเ์ บื้องต้น 2. ใบงานที่ 7 เร่ือง การเขียนโปรแกรมควบคุมการทำงานของห่นุ ยนต์ขนาดเล็ก 6.2 สื่อโสตทศั น์ (ถา้ มี) 1. สอ่ื ประกอบการสอน Power Point เรื่อง การเขยี นโปรแกรมควบคมุ การทำงานของหนุ่ ยนตข์ นาดเลก็ 6.3 หนุ่ จำลองหรือของจริง (ถา้ ม)ี 1. บอร์ดไมโครคอนโทรลเลอร์ อาดยุ โน่
52 แผนการจดั การเรยี นรมู้ ุ่งเน้นสมรรถนะ หนว่ ยท่ี 6 สอนครั้งที่ 17 ชือ่ วชิ า หนุ่ ยนตเ์ บ้ืองตน้ ช่ัวโมงรวม 4 ชอ่ื หน่วย การเขียนโปรแกรมควบคมุ การทำงานของหนุ่ ยนตเ์ บื้องต้น จำนวนชว่ั โมง 4 7. การวัดผลและประเมนิ ผล 1. คะแนนจากพฤตกิ รรมการเรยี นรู้รายบคุ คล 2. คะแนนจากพฤตกิ รรมการเข้ารว่ มกจิ กรรมกลุ่ม 3. คะแนนแบบจากการทำแบบฝึกหัด หน่วยที่ 6 การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนต์ เบือ้ งตน้ 4. คะแนนตรวจงานตามใบประเมนิ ผลการปฏบิ ัติงาน ใบงานที่ 7 เร่อื ง การเขยี นโปรแกรมควบคุมการ ทำงานของห่นุ ยนต์ขนาดเลก็ 5. คะแนนจากแบบสังเกตพฤตกิ รรมระหว่างการปฏิบตั ิงาน 6. คะแนนจากการสังเกตและประเมินผลพฤติกรรมดา้ นคุณธรรม จริยธรรม ค่านิยม และคุณลักษณะอันพงึ ประสงค์ 8. แหล่งการเรียนรเู้ พม่ิ เติม 1. ศกึ ษาค้นคว้าในห้องสมดุ 2. ศึกษาค้นควา้ จากข้อมูลจากอนิ เตอรเ์ น็ต
53 แผนการจัดการเรียนรมู้ ุ่งเน้นสมรรถนะ หน่วยที่ 6 สอนครงั้ ท่ี 18 ชื่อวชิ า หุ่นยนต์เบือ้ งต้น ชวั่ โมงรวม 4 ชื่อหนว่ ย การเขยี นโปรแกรมควบคุมการทำงานของหุ่นยนตเ์ บื้องต้น จำนวนช่วั โมง 4 1. สาระสำคัญ 1. การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนต์ขนาดเล็ก 2. สมรรถนะประจำหน่วย 1. ผ้เู รยี นสามารถเขียนโปรแกรมควบคุมการทำงานของหุ่นยนตข์ นาดเลก็ ได้ 3. จุดประสงค์การเรียนรู้ 3.1 ดา้ นความรู้ 1. ผ้เู รยี นอธิบายการทำงานของโปรแกรมการควบคมุ การทำงานหุ่นยนต์ขนาดเล็กได้อยา่ งถกู ต้อง 3.2 ทักษะ 1. ผเู้ รยี นสามารถเขียนโปรแกรมการควบคมุ การทำงานหนุ่ ยนต์ขนาดเล็กได้ถูกต้อง 3.3 คณุ ลักษณะที่พงึ ประสงค์ 1. ผเู้ รียนมีความตรงตอ่ เวลา 2. มมี นุษยส์ มั พันธ์ 3. กลา้ แสดงความคดิ เห็น 4. ยอมรบั ความคิดเหน็ ของผ้อู ่นื
54 แผนการจดั การเรยี นรมู้ ุ่งเน้นสมรรถนะ หนว่ ยที่ 6 สอนครั้งท่ี 18 ชื่อวชิ า หนุ่ ยนต์เบื้องต้น ชวั่ โมงรวม 4 ชอื่ หน่วย การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนต์เบื้องตน้ จำนวนชวั่ โมง 4 4. เน้ือหาสาระการเรียนรู้ 4.1 การเขยี นโปรแกรมควบคมุ การทำงานของหนุ่ ยนต์ขนาดเลก็ การเขียนโปรแกรมจะนำคำสั่งที่เรียนรู้ข้างต้นมาเขียนเป็นโปรแกรม แต่จะต้องเรียนรู้ส่วนประกอบของตัว โปรแกรมสำหรบั การเขียนคำส่งั ซ่ึงโปรแกรมเรยี กว่า อาดุยโน่ ไอดีอี (Arduino IDE) โดยสามารถดาวน์โหลดได้จาก ลิ้งค์ https://www.arduino.cc/en/main/software และในการเขียนโปรแกรมควบคุมหุ่นยนต์ขนาดเล็กจะเริ่ม เรียนรู้พื้นฐานการเขียนโปรแกรมตั้งแต่การเขียนโปรแกรมควบคุมเซ็นเซอร์วัดระยะ(Distance Sensor) การเขียน โปรแกรมควบคุมเซ็นเซอร์ความเข้มแสง(LDR) การเขียนโปรแกรมควบคุมมอเตอร์เซอร์โว การติดตั้งไลบรา ร่ี(LIBRARY) การเขียนโปรแกรมควบคุมมอเตอร์สเต็ป (Step Motor) การเขียนโปรแกรมควบคุมปุ่มกด(Button) โปรแกรมควบคุมรีเลย์ (Relay Module) การควบคุมหุ่นยนต์ด้วยมือแบบสวิตช์ การควบคุมหุ่นยนต์ด้วยมือแบบ จอยสติ๊กพีเอสทู (PS2 Playstation) การควบคุมหุ่นยนต์ด้วยมือแบบจอยสติ๊กพีเอสทูแบบไร้สาย การควบคุม หุ่นยนต์ด้วยมือแบบโมดูลจอยสติก๊ การควบคุมมอเตอร์ 1 ตัวด้วยมือผ่านสมาร์ทโฟน การควบคุมทิศทางหุ่นยนต์ ด้วยมือโดยใช้สมาร์ทโฟน การควบคุมหุ่นยนต์แบบอัตโนมัติด้วยเซ็นเซอร์ตรวจจับเส้น และ การควบคุมหุ่นยนต์ แบบอตั โนมตั ิดว้ ยเซน็ เซอรอ์ ัลตา้ โซนิค
55 แผนการจัดการเรียนรมู้ งุ่ เนน้ สมรรถนะ หน่วยที่ 6 สอนครัง้ ท่ี 18 ช่ือวิชา หุ่นยนต์เบือ้ งต้น ชว่ั โมงรวม 4 ชอื่ หนว่ ย การเขยี นโปรแกรมควบคุมการทำงานของหุ่นยนตเ์ บอ้ื งต้น จำนวนช่วั โมง 4 5. กจิ กรรมการจัดการเรียนรู้ กจิ กรรมการจดั การเรียนรู้ (รูปแบบ 5 ข้นั ตอน ตามทฤษฎีหลักการของ ศ.ดร. ชัยยงค์ พรหมวงศ์ ) ในการเรียนการสอนของหนว่ ยที่ 6 สัปดาห์ที่ 18 ชวั่ โมงท่ี 69 - 72 ในส่วนของทฤษฎีและปฏิบตั ิ (รวมจำนวน 4 ช่ัวโมง) 5.1 ข้ันทำแบบทดสอบก่อนเรยี น 1. ผูส้ อนมอบหมายให้ผู้เรียนทำแบบทดสอบก่อนเรยี น หนว่ ยการเรยี นรทู้ ่ี 6 จำนวน 14 ข้อ 5.2 ข้ันนำเข้าสู่บทเรียน 1. ผสู้ อนแจง้ วตั ถุประสงค์การเรียน สงิ่ ทีผ่ ้เู รียนจะได้จากการเรียน 2. ผ้สู อนนำเสนอเพาเวอร์พอยท์ เรื่อง การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนต์ขนาดเลก็ 3. ผสู้ อนร่วมสนทนากบั ผู้เรยี นใหผ้ ู้เรยี นช่วยสรปุ หวั ขอ้ เรอื่ งต่างๆ เพ่อื นำคำตอบตา่ งๆ มาสรปุ เปน็ เน้อื หาทจ่ี ะสอนในครง้ั น้ี 5.3 ข้นั ประกอบกจิ กรรมการเรยี นรู้ 1 ผูส้ อนมอบให้ผเู้ รียนแบง่ กลุ่มๆ ละ 2-3 คน ให้ศึกษาคน้ ควา้ จากเอกสารประกอบการเรียน วชิ า หุน่ ยนต์เบ้อื งตน้ ในหนว่ ยที่ 6 การเขยี นโปรแกรมควบคุมการทำงานของหนุ่ ยนต์เบ้อื งตน้ หวั ขอ้ การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนตข์ นาดเล็ก โดยศึกษาในสว่ นทีเ่ ป็นเนื้อหา ความรใู้ นหน้า 113 2. กลยทุ ธ์ในการพัฒนาทกั ษะผ้เู รียนโดยใหผ้ เู้ รยี นศกึ ษาคน้ คว้าและการปฏบิ ัติเสมือนจริงก่อน การปฏิบัติจรงิ ตามใบงานกจิ กรรมทก่ี ำหนด 3. ใหผ้ ู้เรยี นลงมือปฏิบัตจิ ริงตามใบงานกิจกรรมท่ีกำหนด 6. 4. ผูส้ อนทำการประเมินผลงานใหค้ ะแนนเปน็ รายกลุ่ม และรายบุคคลและประกาศผลให้ ผเู้ รยี นทราบ 5. ผ้สู อนมอบหมายใหผ้ ู้เรยี นทำแบบฝกึ หัดหน่วยท่ี 6 การเขียนโปรแกรมควบคุมการทำงานของ ห่นุ ยนตเ์ บอ้ื งต้น หัวขอ้ คำสง่ั ในการใช้งาน จำนวน 14 ข้อ จากเอกสารประกอบการเรยี นวชิ างาน หุ่นยนต์เบื้องตัน ในหนว่ ยที่ 6 เรอื่ ง การเขียนโปรแกรมควบคมุ การทำงานของหนุ่ ยนตเ์ บ้ืองตน้ หนา้ 157
56 แผนการจดั การเรียนรมู้ งุ่ เน้นสมรรถนะ หนว่ ยท่ี 6 สอนคร้ังที่ 18 ชอ่ื วิชา หุ่นยนตเ์ บอื้ งต้น ชวั่ โมงรวม 4 ชอื่ หนว่ ย การเขยี นโปรแกรมควบคมุ การทำงานของหนุ่ ยนตเ์ บ้อื งต้น จำนวนชั่วโมง 4 6 5.4 ข้ันการสรุปบทเรยี น ผูส้ อนมอบให้ผเู้ รียนรว่ มกันสรุปเนื้อหาท่เี รียนในหน่วยเรียนที่ 6 พรอ้ มรว่ มสรุปกบั ผูเ้ รียนในส่วนทีย่ งั ไมค่ รบ หรือเพิม่ เติมใหช้ ัดเจน จากส่ือเพาเวอร์พอยท์ โดยผสู้ อนคอยดูแลใหค้ ำปรึกษาและถามนำให้ ผเู้ รยี นชว่ ยกันตอบ เปน็ การกระตุน้ ใหผ้ เู้ รียนไดศ้ ึกษาตรงวตั ถุประสงค์ทตี่ ้องการและเป็นการวดั ผล และประเมนิ จากการเรยี นร้แู ละความสนใจของผเู้ รยี นทง้ั ในด้านความรู้ ดา้ นทักษะและด้านคณุ ธรรม จรยิ ธรรมและคุณลกั ษณะอันพงึ ประสงค์ไปด้วย 5.5 ขั้นทำแบบทดสอบหลงั เรียน 1. ผู้สอนมอบหมายให้ผเู้ รยี นทำแบบทดสอบหลังเรยี นหน่วยที่ 6 จำนวน 14 ขอ้ 2. ผสู้ อนตรวจคะแนนแบบทดสอบก่อนเรียน และหลงั เรียนและตดิ ประกาศใหผ้ เู้ รียนทราบ ในการเรียนการสอนของหน่วยท่ี 6 สัปดาหท์ ่ี 18 ชวั่ โมงท่ี 69 - 72 โดยทฤษฎี 1 ช่ัวโมง และปฏิบัติ 3 ชั่วโมง (รวมจำนวน 4 ชัว่ โมง) แบ่งการสอนออกเปน็ 5 ขน้ั ตอน (ปรับประยกุ ตจ์ าก ทฤษฎี ของ รศ.ดร.สาโรช โสภรี ักษ์) ดงั นี้ ข้นั ท่ี 1 ขั้นกำหนดจดุ ประสงค์ 1. ได้กำหนดจุดประสงค์ ในการสาธติ ในหนว่ ยนีไ้ วค้ ือขนั้ ตอนเขยี นโปรแกรมจากคำสั่งท่ีใชง้ านในการ ควบคุมอุปกรณ์เสมือนจรงิ ขั้นท่ี 2 ขั้นเตรียมการสาธติ 2. ผ้สู อนจัดเตรียม ใบงานที่ 7 เร่อื ง การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนต์ขนาดเลก็ พร้อมท้ังจัดเตรยี มและตรวจสอบอปุ กรณ์ ไว้ก่อนทำการสาธิต ได้แก่ บอรด์ ไมโครคอนโทรลเลอร์ บอรด์ สำหรบั ต่อ วงจร สายต่อวงจร และตัวอย่างชิน้ งานเปน็ ตัวอย่าง พรอ้ มอุปกรณ์ทำความสะอาด 3. ผสู้ อนไดจ้ ัดเตรียมชุดทดลองไมโครคอนโทรลเลอร์ไว้เพียงพอต่อจำนวนผเู้ รียน ขัน้ ที่ 3 ขน้ั ทำการสาธิต 4. ผ้สู อนนำตัวอยา่ งของการใชค้ ำสัง่ ในการเขียนโปรแกรมผ้เู รียนดู
57 แผนการจัดการเรยี นรมู้ ่งุ เนน้ สมรรถนะ หนว่ ยที่ 6 สอนครั้งที่ 18 ชือ่ วชิ า หุ่นยนตเ์ บอื้ งตน้ ช่วั โมงรวม 4 ช่ือหนว่ ย การเขียนโปรแกรมควบคมุ การทำงานของหนุ่ ยนตเ์ บอ้ื งต้น จำนวนชั่วโมง 4 5. ผสู้ อนอธบิ ายใบงานปฏบิ ตั งิ าน โดยใหผ้ เู้ รยี นศึกษาจากใบงานหนว่ ยท่ี 6 6. ขั้นตอนการแจ้งวัตถุประสงค์ของการสาธิต ในขั้นตอนนี้จะให้ผู้เรียน ดูจากการสาธิต โดยเน้นให้ ผเู้ รียนมสี ว่ นร่วมในการสาธิต และเนน้ ย้ำ ทบทวน เร่อื งความปลอดภัยจากการเรยี นในสว่ นทฤษฎี ระหว่างสาธิตควร มีการหยุดซักถามผู้เรียนเป็นช่วงๆ เพื่อประเมินผล และหลังจากเสร็จจากการสาธิต ก็จะให้ผู้เรียนช่วยกันสรุป และ แจง้ ให้ผ้เู รียนทราบถึงวตั ถุประสงคใ์ นการสาธติ ในครงั้ นี้ ขน้ั ท่ี 4 ข้นั ลงมือปฏิบตั ิ 7. ผูเ้ รยี นลงมือปฏบิ ตั ติ ามใบงานท่ี 7 ทุกคน ตามขั้นตอนทีส่ าธิต โดยผูส้ อนตอ้ งควบคมุ ดูแลและให้ คำแนะนำอยา่ งใกล้ชิด ข้ันที่ 5 ขน้ั ตรวจและประเมินผลชิน้ งาน 8. ผูส้ อนทำการตรวจประเมินผลงานและแจ้งผลใหผ้ เู้ รียนทราบ 6.สื่อการเรยี นรู/้ แหลง่ การเรียนรู้ 6.1 สื่อสิ่งพิมพ์ 1. หนงั สือวชิ า หนุ่ ยนต์เบ้อื งตน้ 2. ใบงานที่ 7 เร่อื ง การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนต์ขนาดเล็ก 6.2 สื่อโสตทศั น์ (ถา้ ม)ี 1. สือ่ ประกอบการสอน Power Point เรอ่ื ง การเขยี นโปรแกรมควบคมุ การทำงานของหนุ่ ยนตข์ นาดเล็ก 6.3 ห่นุ จำลองหรือของจริง (ถา้ ม)ี 1. บอร์ดไมโครคอนโทรลเลอร์ อาดยุ โน่
58 แผนการจดั การเรียนรมู้ งุ่ เน้นสมรรถนะ หนว่ ยท่ี 6 สอนครั้งที่ 18 ช่อื วชิ า หนุ่ ยนต์เบือ้ งตน้ ช่วั โมงรวม 4 ชอื่ หน่วย การเขยี นโปรแกรมควบคุมการทำงานของหุ่นยนตเ์ บื้องต้น จำนวนชว่ั โมง 4 7. การวัดผลและประเมินผล 1. คะแนนจากพฤติกรรมการเรียนรู้รายบุคคล 2. คะแนนจากพฤตกิ รรมการเขา้ ร่วมกิจกรรมกลุ่ม 3. คะแนนแบบจากการทำแบบฝึกหัด หน่วยที่ 6 การเขียนโปรแกรมควบคุมการทำงานของหุ่นยนต์ เบ้อื งตน้ 4. คะแนนตรวจงานตามใบประเมินผลการปฏิบัติงาน ใบงานท่ี 7 เรอื่ ง การเขยี นโปรแกรมควบคุมการ ทำงานของหนุ่ ยนต์ขนาดเล็ก 5. คะแนนจากแบบสงั เกตพฤติกรรมระหว่างการปฏบิ ตั งิ าน 6. คะแนนจากการสังเกตและประเมินผลพฤติกรรมดา้ นคุณธรรม จริยธรรม ค่านยิ ม และคุณลักษณะอันพงึ ประสงค์ 8. แหลง่ การเรียนรู้เพมิ่ เติม 1. ศกึ ษาค้นคว้าในห้องสมดุ 2. ศกึ ษาคน้ คว้าจากข้อมูลจากอินเตอรเ์ น็ต
59 เอกสารประกอบการเรยี น วชิ า ห่นุ ยนตเ์ บอ้ื งต้น หลักสตู รประกาศนียบัตรวิชาชพี (ปวช.) พทุ ธศักราช 2562 หนว่ ยท่ี 1 เร่ือง การเขียนโปรแกรมควบคุมการทำงานของห่นุ ยนตเ์ บื้องตน้ โดย นายประภาส พุม่ พวง วิทยาลยั เทคนิคลพบุรี สำนักงานคณะกรรมการการอาชวี ศกึ ษา กระทรวงศกึ ษาธกิ าร
60 คำแนะนำสำหรับผเู้ รยี น 1. ใหผ้ เู้ รียนฟังคำแนะนำจากผ้สู อน 2. ให้ผเู้ รียนทำแบบทดสอบกอ่ นเรียน จำนวน 30 ขอ้ เวลา 45 นาที 3. ให้ผู้เรียนทำกจิ กรรมการจดั การเรียนรู้ที่ผู้สอนมอบหมายตามข้ันตอนทุกขัน้ ตอน 4. ใหผ้ ้เู รียนทำแบบทดสอบหลงั เรยี น จำนวน 30 ข้อ เวลา 45 นาที 5. ให้ผเู้ รยี นลงมือปฏบิ ตั งิ านตามข้ันตอนใบงาน ฟังขั้นตอนการลงมือปฏิบัตงิ านตาม คำแนะนำผู้สอน อยา่ งเคร่งครดั เพ่อื ปฏบิ ตั งิ านอยา่ งถกู วิธแี ละปลอดภัย
61 หัวขอ้ การเรียนรู้ 1. ไมโครคอนโทรลเลอร์ 2. คำสงั่ ในการใช้งาน 3. การเขียนโปรแกรมควบคุมการทำงานของหนุ่ ยนตข์ นาดเล็ก จดุ ประสงคเ์ ชิงพฤติกรรม 1. อธบิ ายหลักการใช้งานไมโครคอนโทรลเลอร์ไดอ้ ยา่ งถกู ตอ้ ง 2. สามารถเขียนโปรแกรมควบคุมห่นุ ยนต์ขนาดเล็กได้ 3. มีการพฒั นาคุณธรรม จรยิ ธรรม ค่านิยม และคุณลักษณะอนั พงึ ประสงคท์ ี่ผู้สอน สามารถสงั เกตเห็นได้ ในดา้ นความมีมนุษยสัมพนั ธ์ ความมวี นิ ยั ความรบั ผดิ ชอบ ความเชอ่ื ม่นั ในตนเอง ความสนใจใฝร่ ู้ ความรกั สามัคคี ความกตญั ญูกตเวที
62 แบบทดสอบกอ่ นเรยี น รหสั 20104 – 2118 วิชา หนุ่ ยนต์เบ้ืองต้น ชดุ การสอนที่ 6 เรอื่ ง การเขยี นโปรแกรมควบคมุ การทำงานของหุน่ ยนต์เบอื้ งต้น จำนวน 25 ขอ้ เวลา 30 นาที ------------------------------------------------------------------------- คำส่ัง จงกาเครอื่ งหมาย X เลอื กคำตอบที่ถกู ต้องท่ีสุดในแต่ละข้อเพียงคำตอบเดียว ลงในกระดาษเขยี น ตอบ 1. บอร์ดไมโครคอนโทรลเลอรอ์ าดุยโน่ใชไ้ มโครคอนโทรลเลอรต์ ระกูลอะไร ก. AVR ข. ARA ค. PIC ง. ARR 2. ขอ้ ใดเปน็ ข้อดขี องบอรด์ ไมโครคอนโทรลเลอร์อาดุยโน่ ก. คนใช้จำนวนมาก ข. หาได้ง่าย ค. เปดิ เผยด้านฮารด์ แวร์และซอฟแวร์ ง. เขียนโปรแกรมซับซ้อนไม่ได้ 3. ในการเขียนโปรแกรมโครงสร้างของโปรแกรมในการควบคุมไมโครคอลโทรลเลอรจ์ ะมกี ี่สว่ น ก. 1 ส่วน ข. 2 สว่ น ค. 3 ส่วน ง. 4 สว่ น 4. สว่ นประกอบที่ใช้สำหรบั ต้งั ค่าเรียกส่วนนน้ั ว่า ก. void setup ( ) ข. void loop ( ) ค. void temp ( ) ง. void looper( )
63 5. สว่ นประกอบที่ใชส้ ำหรบั การเขียนโปรแกรมและมีการวนทำงานตลอดเวลาเรยี กสว่ นน้นั วา่ ก. void setup ( ) ข. void loop ( ) ค. void temp ( ) ง. void looper( ) 6. จากคำสงั่ #define LED 13 หมายถงึ อะไร ก. กำหนดค่าให้ LED เท่ากับ 13 ข. ประกาศตวั แปรชอื่ LED เท่ากับ 13 ค. กำหนดคา่ ให้ LED ตำแหนง่ ท่ี 13 ง. ประกาศตัวแปรช่อื LED ตำแหน่งท่ี 13 7. คำสั่งขึ้นตน้ ในการเรยี กใชไ้ ลบรารีเ่ ป็นคำสัง่ ใด ก. #void< > ข. #define< > ค. #include< > ง. #setup< > 8. คำส่งั ชนิดใดเปน็ การตั้งการเป็นอินพุตและเอาต์พตุ ก. digitalWrite( ) ข. digitalRead( ) ค. pinMode( ) ง. delay( ) 9. คำสงั่ ชนดิ ใดเป็นการสง่ ค่าออกทางเอาต์พุต ก. digitalWrite( ) ข. digitalRead( ) ค. pinMode( ) ง. delay( ) 10. คำสั่งชนิดใดเปน็ การอ่านค่ามาจากอินพตุ ก. digitalWrite( ) ข. digitalRead( ) ค. pinMode( ) ง. delay( )
64 11. คำส่งั ชนดิ ใดเปน็ การตงั้ ค่าการหนว่ งเวลา ก. digitalWrite( ) ข. digitalRead( ) ค. pinMode( ) ง. delay( ) 12. การหน่วงเวลาคา่ ทีก่ ำหนดมหี น่วยเป็นอะไร ก. นาโนวนิ าที ข. ไมโครวนิ าที ค. มิลลิวนิ าที ง. วินาที 13. คำสง่ั ชนดิ ใดเปน็ การอ่านคา่ สัญญาณแอนะล็อกจากอนิ พตุ ก. analogWrite( ) ข. analogRead( ) ค. digitalWrite( ) ง. digitaRead( ) 14. คำสง่ั ชนิดใดเปน็ การสง่ ค่าแอนะล็อกไปยังเอาต์พุต ก. analogWrite( ) ข. analogRead( ) ค. digitalWrite( ) ง. digitalRead( ) 15. ในการประกาศตัวแปรเปน็ ชนดิ ตัวเลขจำนวนเตม็ จะต้องใช้คำส่ังใด ก. byte ข. int ค. float ง. char
65 16. ในการประกาศตัวแปรเป็นตวั เลขทศนยิ มจะต้องใช้คำสั่งใด ก. byte ข. int ค. float ง. char 17. ในการประกาศตัวแปรเปน็ ชนดิ บติ จะต้องใช้คำส่งั ใด ก. byte ข. int ค. float ง. char โปรแกรม ใช้ตอบคำถามข้อ 18-20 void setup() { pinMode(13, 1 ); } void loop() { digitalWrite(13, 2 ); delay(1000); digitalWrite(13, 3 ); delay(1000); } 18. จากโปรแกรมตำแหน่งหมายเลข 1 เป็นคำสั่งใด ก. HIGH ข. LOW ค. OUTPUT ง. INPUT 19. จากโปรแกรมตำแหน่งหมายเลข 2 เปน็ คำสั่งใด ก. HIGH ข. LOW ค. OUTPUT ง. INPUT
66 20. จากโปรแกรมตำแหน่งหมายเลข 2 เป็นคำสง่ั ใด ก. HIGH ข. LOW ค. OUTPUT ง. INPUT รปู ใช้ตอบคำถามข้อ 21 – 23 21. จากรปู ตำแหน่งที่ 1 มีหน้าท่ีอะไร ก. เปน็ ปมุ่ สำหรบั การตรวจสอบคำส่งั ในโปรแกรม ข. ปมุ่ สำหรบั การอัพโหลดโปรแกรม ค. ปุ่มสำหรบั การเปดิ จอมอนิเตอรใ์ นการสื่อสารในพอรต์ ง. ปมุ่ สำหรบั เปดิ โปรแกรมทีม่ กี ารบันทึกไว้ 22. จากรูปตำแหนง่ ที่ 2 มหี นา้ ที่อะไร ก. เปน็ ปุม่ สำหรบั การตรวจสอบคำสั่งในโปรแกรม ข. ปุ่มสำหรบั การอัพโหลดโปรแกรม ค. ปุ่มสำหรับการเปดิ จอมอนิเตอรใ์ นการส่ือสารในพอร์ต ง. ปมุ่ สำหรบั เปิดโปรแกรมท่ีมีการบนั ทกึ ไว้ 23. จากรูปตำแหนง่ ท่ี 3 มหี น้าที่อะไร ก. เป็นปุ่มสำหรับการตรวจสอบคำสง่ั ในโปรแกรม ข. ป่มุ สำหรบั การอัพโหลดโปรแกรม ค. ปมุ่ สำหรับการเปิดจอมอนเิ ตอรใ์ นการสื่อสารในพอรต์ ง. ปุ่มสำหรบั เปิดโปรแกรมทีม่ ีการบันทึกไว้
67 24. การต่อสวติ ช์ในการควบคมุ โดยขาของสวติ ช์จะต่ออยู่กับแหล่งจ่ายไฟบวกเสมอเปน็ การต่อ ลักษณะใด ก. Pull up ข. Pull down ค. Pull setup ง. Pull drop 25. การต่อสวติ ช์ในการควบคุมโดยขาของสวติ ชจ์ ะต่ออยกู่ บั แหล่งจ่ายไฟลบเสมอเปน็ การต่อลกั ษณะ ใด ก. Pull up ข. Pull down ค. Pull setup ง. Pull drop โปรแกรมใชต้ อบคำถามข้อที่ 26 - 30
68 26. จากโปรแกรมตำแหน่งที่ 1 จะเป็นคำสงั่ อะไร ก. 2 ข. LOW ค. INPUT ง. digitalRead 27. จากโปรแกรมตำแหน่งท่ี 2 จะเปน็ คำสง่ั อะไร ก. 2 ข. LOW ค. INPUT ง. digitalRead 28. จากโปรแกรมตำแหน่งท่ี 3 จะเปน็ คำส่งั อะไร ก. 2 ข. LOW ค. INPUT ง. digitalRead 29. จากโปรแกรมตำแหน่งท่ี 4 จะเป็นคำสง่ั อะไร ก. 2 ข. LOW ค. INPUT ง. digitalRead 30. จากโปรแกรมตำแหน่งที่ 5 จะเป็นคำสั่งอะไร ก. 2 ข. LOW ค. INPUT ง. digitalRead
69 ใบความรู้ หน่วยที่ 6 เร่อื ง การเขยี นโปรแกรมควบคมุ การทำงานของหุ่นยนต์เบอ้ื งต้น ในการควบคุมหุ่นยนต์ให้ทำตามคำสั่งหรือเงื่อนไขที่ต้องการจำเป็นจะต้องมีอุปกรณ์สำหรับเป็น ตัวรับคำสั่ง โดยในหน่วยนี้จะกล่าวถึงการนำไมโครคอนโทรลเลอร์มาใช้เป็นตัวควบคุมหุ่นยนต์ให้ทำงาน ตามคำสั่งทั้งแบบควบคุมด้วยมือและแบบอัตโนมัติ รวมถึงการจำลองการทำงานก่อนการนำไปใช้งานจริง โดยมรี ายละเอยี ดดงั ตอ่ ไปนี้ 6.1 ไมโครคอนโทรลเลอร์ ไ ม โ ค ร ค อ น โ ท ร เ ล อ ร์ ท ี ่ ใช ้ เข ี ยนโ ปรแกรมในการคว บค ุ มห ุ ่ นยนต ์ ขนาดเล ็ กจ ะใช ้ บ อ ร์ ด ไมโครคอนโทรลเลอร์ ที่ชื่อว่า”อาดุยโน่ (Arduion)” โดยอาดุยโน่เป็นบอร์ดที่สร้างขึ้นโดย Massimo Banzi เป็นบอร์ด ไมโครคอนโทรลเลอร์ที่มีราคาไม่สูงมากท่ีทำให้เป็นที่นิยมในการพัฒนาการเขียนโปรแกรมของนัก โปรแกรมตั้งแต่ระดบั เร่ิมต้นจนถึงระดับสูง สามารถเขยี นโปรแกรมควบคุมอุปกรณห์ รือเซ็นเซอร์ชนิดต่าง ๆ ได้มากมาย และสามารถเขียนควบคุมหนุ่ ยนต์ขนาดเล็กจนถึงขนาดใหญ่ได้ Arduino อ่านว่า อาดุยโน่ เป็นบอร์ดไมโครคอนโทรเลอร์ตระกูล AVR แสดงดังรูปที่ 6.1 ที่มี การพัฒนาทัง้ ด้านฮารด์ แวร์และซอฟแวร์แบบเปิดเผยขอ้ มูล (Open source) โดยตัวฮาร์ดแวรใ์ ช้งานง่าย และราคาไมแ่ พง ด้านซอฟแวร์จะเปน็ คำสั่งทีง่ ่ายต่อการใช้งานสามารถพัฒนาได้ต้งั แต่เริ่มตน้ จนถึงซับซ้อน ได้ รปู ท่ี 6.1 แสดงบอร์ดไมโครคอนโทรลเลอร์อาดุยโน่ รุน่ UNO ที่มา : http://www.elec2you.com
70 6.1.1 บอรด์ อาดุยโน่ บอร์ดไมโครคอนโทรลเลอร์อาดุยโน่เกิดขึ้นเมื่อ ปี ค.ศ. 2005 เป็นต้นมาและมีการพัฒนาเพื่อให้ เหมาะสมการใช้งานเรื่อยมาจนถึงปัจจุบัน แสดงดังรูปที่ 6.2 โดยรูปแบบของบอร์ดไมโครคอนโทรลเลอร์ อาดยุ โน่จะมีรูปร่างและลักษณะที่แตกตา่ งกนั ออกไปตามลกั ษณะการนำไปใชง้ าน รูปที่ 6.2 วิวัฒนาการของบอรด์ อาดุยโน่ ทีม่ า : http://www.ayt-makerspace.com
71 จากรปู ท่ี 6.2 สามารถอธิบายถึงลักษณะของบอรด์ ไมโครคอนโทรลเลอร์อาดุยโน่บางรุ่นทีน่ ิยม ใชไ้ ดด้ งั ต่อไปน้ี บอร์ดอาดุยโน่ รุ่น UNO R3 เป็นบอร์ดอาดุยโน่ที่ได้รับความนิยมมากที่สุด ใช้ในการสร้าง โครงงานทม่ี ขี นาดอินพุตและเอาท์พตุ ไม่มาก มอี ุปกรณ์ต่อพ่วงใชง้ านมากมาย แสดงดังรูปท่ี 6.3 รูปที่ 6.3 แสดงบอร์ดอาดุยโน่ รนุ่ UNO R3 ที่มา : http://www.elec2you.com บอร์ดอาดุยโน่ รุ่น UNO SMD เป็นบอร์ดที่มีไมโครคอนโทรเลอร์ที่ใช้แบบ Package SMD แสดงดังรูปที่ 6.4 รูปที่ 6.4 แสดงบอรด์ อาดุยโน่ ร่นุ UNO SMD ท่มี า : https://www.arduinoall.com/
72 บอรด์ อาดยุ โน่ ร่นุ Mega 2560 R3 เปน็ บอรด์ อาดุยโน่ท่ีมีอินพุตและเอาท์พุตมากกว่าบอร์ดอา ดยุ โน่ รุน่ UNO แตก่ ารใชง้ านจะเหมือนกบั บอร์ดอาดุยโน่ UNO แสดงดงั รูปท่ี 6.5 รปู ท่ี 6.5 แสดงบอร์ดอาดุยโน่ รุ่น MEGA 2560 ที่มา : https://www.arduitronics.com/ บอร์ดอาดุยโน่ รุ่น DUE เป็นบอร์ดอาดุยโน่ที่มีการประมวลผลที่รวดเร็วโดยชิปตระกูล AVR เบอร์ AT91SAM3X8E ลักษณะแสดงดังรปู ท่ี 6.6 รปู ที่ 6.6 แสดงบอรด์ อาดุยโน่ รุ่น DUE ทม่ี า : https://www.arduitronics.com/
73 บอร์ดอาดุยโน่ รุ่น Leonardo ใช้ไมโครคอนโทรลเลอร์เป็นแบบ ATmega32U4 มีพอร์ตยู เอสบขี นาดเล็ก ลกั ษณะของบอร์ดแสดงดงั รปู ท่ี 6.7 รปู ที่ 6.7 แสดงบอรด์ อาดุยโน่ รนุ่ LEONARDO ท่ีมา : https://www.arduitronics.com/ บ อ ร ์ ด อ า ด ุ ย โ น ่ ร ุ ่ น Pro Mini 328 3.3V เป็นบอร์ดอาดุยโ น่ขนาดเล็กที่ใช ้ตัว ไมโครคอนโทรลเลอร์รุ่น ATmega 328 มีแหล่งจ่ายไฟที่ตัวบอร์ดขนาด 3.3 V ในการป้อน โปรแกรมจะต้องมีพอร์ตยเู อสบีมาเช่ือมต่อ ลักษณะแสดงดงั รปู ท่ี 6.8 รูปท่ี 6.8 แสดงบอร์ดอาดยุ โน่ รนุ่ Pro Mini 328 3.3 V ทมี่ า : https://www.seeedstudio.com/
74 บอร์ดอาดุยโน่ รุ่น Pro Mini 328 5V เปน็ บอรด์ อาดยุ โนข่ นาดเล็กที่ใช้ตวั ไมโครคอนโทรลเลอร์ รุ่น ATmega 328 มีแหล่งจ่ายไฟที่ตัวบอร์ดขนาด 5 V ในการป้อนโปรแกรมจะต้องมีพอร์ตยูเอ สบมี าเชือ่ มต่อ ลกั ษณะแสดงดังรูปท่ี 6.9 รูปที่ 6.9 แสดงบอรด์ อาดุยโน่ รุ่น Pro Mini 328 5 V ทมี่ า : https://electrocrea.com/products/ โดยคณุ สมบัติตา่ ง ๆ ของบอร์ดอาดุยโน่แตล่ ะรุน่ แสดงรายละเอียดได้ตามรปู ที่ 6.10 รูปที่ 6.10 แสดงตารางคณุ สมบัติต่าง ๆ ของบอร์ดอาดุยโนแ่ ต่ละรนุ่ ท่ีมา : http://www.elecproject.com
75 ในหนังสือเล่มนี้จะกล่าวถึงการใช้งานของบอร์ดอาดุยโน่ รุ่น ยูโน่(UNO) จะประกอบไปด้วยขา การใช้งานที่เป็นอินพุตและเอาท์พุตจำนวน 14 ขา (D0-D13) ที่ใช้ร่วมกันโดยจะเป็นอินพุตหรือเอาท์พุต จะขึ้นอยู่กับการสั่งใช้งานและขาสัญญาณแอนะล็อกจำนวน 6 ขา (A0-A5) และมีแหล่งจ่ายแรงดันไฟฟ้า กระแสตรงที่ติดมากับตัวบอร์ดไมโครคอนโทรลเลอร์อาดุยโน่ขนาด 3.3 V และ 5 V เพื่อต่อไปใช้งานตัว บอร์ดไมโครคอลโทรลเลอร์อาดุยโน่จะใช้แรงดันไฟฟ้ากระแสตรงอยู่ในช่วง 7 V – 12 V โดยรายละเอียด แสดงดงั รูปที่ 6.11 รปู ท่ี 6.11 โครงสรา้ งของบอรด์ อาดยุ โน่ รนุ่ UNO ท่มี า : http:// bigdanzblog.wordpress.com 6.2 คำสงั่ ในการใชง้ าน ในส่วนนี้คำสั่งที่ใช้สำหรับการเขียนโปรแกรมจะเป็นการนำคำสั่งที่จำเป็นต่อการเขียน โปรแกรมควบคุมหนุ่ ยนตม์ าใชเ้ ปน็ ตัวอยา่ งเท่านัน้ 6.2.1 คำสัง่ ในการเขียนโปรแกรมควบคุมบอรด์ ไมโครคอนโทรลเลอร์อาดุยโน่จะต้องรู้หน้าท่ีของคำสั่งสำหรับ ประกอบขึ้นเป็นโปรแกรมที่ใช้สำหรับการควบคุม โดยโครงสร้างของโปรแกรมประกอบไปด้วยส่วนหลัก จำนวน 2 สว่ นดงั นี้
76 void setup( ) { สว่ นการต้ังค่า ; } void loop( ) { ส่วนตวั โปรแกรม ; } ส่วนของ void setup เป็นสว่ นในการตง้ั คา่ ต่าง ๆ ในการเขยี นโปรแกรม เชน่ การตง้ั คา่ ขาเป็น อินพุต หรือเอาท์พุต เป็นตน้ ส่วนของ void loop เปน็ สว่ นใช้สำหรบั การเขียนโปรแกรมควบคมุ โดยจะเปน็ การวนทำคำสง่ั ซ้ำ ตลอดเวลา คำสง่ั #define constantName value คำสงั่ #define constantName value เปน็ คำสั่งทใ่ี ชใ้ นการประกาศค่าตัวแปร รปู แบบการใชง้ าน #define LED 13 // ประกาศตัวแปรชอื่ LED ให้เท่ากับ 13 (ขาที่ 13 ) คำสงั่ include<file> คำส่งั include<file> เป็นคำส่งั เรยี กใช้ไลบรารี่(Library) ของอปุ กรณ์ท่นี ำมาต่อร่วมกับบอรด์ ทดลอง
77 ตวั อย่างการใช้งาน #include <LiquidCrystal.h> void setup( ) { } void loop( ) { } ฟังกช์ นั Setup ( ) ฟังก์ชนั setup () เป็นส่วนของการต้งั คา่ ของการเขยี นโปรแกรม ตวั อย่างการใช้งาน void setup() { pinMode(11,OUTPUT); // การตง้ั คา่ ให้ขา 11 เปน็ ขาเอาทพ์ ตุ pinMode(12,INPUT); // การตง้ั คา่ ให้ขา 12 เปน็ ขาอนิ พุต } *** เคร่อื งหมาย //…ตามด้วยข้อความใชส้ ำหรับอธิบายข้อความลักษณะ 1 บรรทดั เครอื่ งหมาย /*…ขอ้ ความ…*/ ใชส้ ำหรับอธบิ ายขอ้ ความลกั ษณะหลายบรรทดั *** ฟงั ก์ชนั loop ( ) ฟังกช์ นั loop ใชส้ ำหรบั การเขียนตวั โปรแกรมโดยรายละเอยี ดเปน็ ไปดงั ตวั อยา่ งตอ่ ไปน้ี ตัวอยา่ งการใช้งาน void loop() { digitalWrite(11,HIGH); //หมายถึง การต้ังคา่ ให้ขา 11 สง่ สัญญาณออกเป็น HIGH (1) digitalRead(12); // หมายถึง การต้ังคา่ ให้ขา 12 อ่านคา่ สญั ญาณ }
78 สัญญาณ HIGH ในระบบดิจิตอลจะให้ค่าออกเป็น “1” ในระบบเลขฐานสอง สัญญาณ LOW ในระบบดจิ ติ อลจะให้ค่าออกเป็น “0” ในระบบเลขฐานสอง คำสั่ง pinMode(ขาท่ใี ช้งาน,สถานะ) เป็นคำส่ังที่ใชส้ ำหรับตงั้ คา่ ใหเ้ ป็นอนิ พตุ หรือเอาทพ์ ุตแสดงการใชง้ านตามตัวอยา่ งต่อไปนี้ ตัวอย่างการใช้งาน // การตั้งค่าให้ขา 11 เป็นขาเอาทพ์ ตุ void setup() // การต้ังค่าใหข้ า 12 เป็นขาอนิ พุต { pinMode(11,OUTPUT); pinMode(12,INPUT); } คำสั่ง digitalWrite(ขาที่ใชง้ าน,สถานะ) เป็นคำสงั่ ท่ีใช้สำหรบั การส่งค่าไปยงั เอาทพ์ ตุ แสดงการใชง้ านตามตวั อยา่ งตอ่ ไปนี้ ตวั อยา่ งการใช้งาน void loop() { digitalWrite(11,HIGH); // หมายถึง การสง่ คา่ ให้ขา 11 สง่ สญั ญาณเปน็ HIGH (1) digitalWrite(12,LOW); // หมายถึง การส่งค่าใหข้ า 12 สง่ สญั ญาณเป็น LOW (0) } คำสั่ง digitalRead(ขาที่ใช้งาน) เป็นคำสงั่ ท่ีใชส้ ำหรบั การอ่านค่าจากอนิ พุต แสดงการใช้งานตามตัวอย่างต่อไปนี้ ตัวอย่างการใช้งาน void loop() { digitalRead(11); // หมายถึง การอา่ นคา่ จากขา 11
79 digitalRead(12); // หมายถึง การอ่านค่าจากขา 12 } คำส่ัง analogWrite(ขาที่ใช้งาน) เปน็ คำสั่งทใ่ี ชใ้ นการส่งค่าทเี่ ป็นสญั ญาณแอนะล็อกออกไปใชง้ าน ตัวอย่างการใชง้ าน void setup() { pinMode(A0,OUTPUT); // หมายถึง การตั้งคา่ ให้ขา A0 ส่งสญั ญาณออก pinMode(A1,INPUT); // หมายถึง การตั้งคา่ ใหข้ า A1 รับสญั ญาณเข้า } void loop() { analogWrite(A0); // หมายถงึ การตัง้ ค่าใหข้ า A0 สง่ สญั ญาณแอนะลอ็ กออก analogRead(A1); // หมายถึง การตั้งคา่ ใหข้ า A1 อ่านค่าสัญญาณแอนะล็อก } **** ขอ้ สังเกตขาของบอร์ดอาดุยโน่ท่มี สี ญั ลกั ษณ์ “ “ จะทำเป็นขาสง่ สัญญาณ และอ่านค่าแอนะล็อกได้ คำส่ัง delay(เวลาหนว่ ยเป็นมิลลวิ นิ าที) คำส่งั delay( ) เปน็ คำสัง่ ท่ีใชส้ ำหรับการหนว่ งเวลาในการทำงาน ตวั อย่างการใช้งาน // หมายถงึ การหนว่ งเวลา 1 วนิ าที void loop() // หมายถงึ การหนว่ งเวลา 2 วินาที { delay(1000); delay(2000); }
80 6.2.2 ชนดิ ตวั แปร ตัวแปรเปรียบเสมอื นตัวแทนทใี่ ช้ในการกำหนดค่า โดยสามารถแบง่ ออกตามลกั ษณะการใชง้ าน ดงั นี้ • ชนดิ Byte ไบต์(byte) เปน็ ตวั แปรท่ีเปน็ ตัวเลข ขนาด 8 บิต โดยตัวเลขอยู่ในชว่ ง 0 - 255 รูปแบบการใช้งาน byte A = 180; // การกำหนดใหต้ ัวแปรชนิด byte ช่ือ A มีค่า เท่ากับ 180 • ชนดิ int int ย่อมาจาก Integers เป็นตัวแปรสำหรับเก็บข้อมูลที่เป็นข้อมูลตัวเลขจำนวนเต็มมีค่าอยู่ ในชว่ ง 32,767 ถึง -32,768 รปู แบบการใช้งาน int A = 1000; // การกำหนดให้ตัวแปรชนิด int ช่ือ A มีคา่ เท่ากับ 1000 • ชนดิ long long ย่อมาจาก long integers เปน็ ตัวแปรชนิดตัวเลขจำนวนเต็ม ขนาด 32 บิต มีค่าอยู่ในช่วง 2,147,483,647 ถงึ -2,147,483,648 รปู แบบการใช้งาน // การกำหนดใหต้ วั แปรชนิด long ชือ่ A มีค่า เทา่ กับ 6000 long A = 6000; • ชนิด float float เป็นตวั แปรชนิดตวั เลขขนาด 32 บิต ท่ีแสดงคา่ เป็นจุดทศนิยม ท่ีมีคา่ อย่ใู นช่วง 3.4028235 ×1038 ถึง -3.4028235 ×1038
81 รูปแบบการใช้งาน // การกำหนดใหต้ วั แปรชนดิ float ช่อื A มคี ่า เทา่ กบั 3.14 float A = 3.14; • ชนดิ char Char เป็นตัวแปรประเภทข้อมูลทใี่ ช้สำหรับเกบ็ ตัวอักษรจำนวนหน่ึงตวั อักษรใน ASCII รปู แบบการใช้งาน char A = ‘n’ ; // การกำหนดให้ตวั แปรชนิด char ชอื่ A มีค่า เทา่ กับ n • ชนดิ arrays อาร์เรย์(arrays) คือ ชุดของตัวแปรที่มีการเรียกใช้ที่มีจำนวนค่าต่างกัน ค่าท่ีประกาศก่อนจะถูก นำไปใช้เป็นตัวแรก รปู แบบการใช้งาน int A[] = {ค่าที่ 1 , คา่ ท่ี 2, ...}; // การกำหนดใหต้ ัวแปรชนดิ array ชอ่ื A มคี ่า เท่ากับ คา่ ท่ี 1 ,คา่ ที่ 2 ตัวอยา่ งการใช้งาน byte A[] = {180, 30, 255, 200, 10, 90, 150, 60}; //ประกาศตัวตวั แปรชนดิ อาร์เรย์ // ขนาด 8 ขอ้ มูล void setup() { pinMode(ledPin, OUTPUT); //ตงั้ คา่ ตัวแปร ledPin ใหเ้ ป็นเอาต์พุต }
82 void loop() //ตรวจสอบเงอ่ื นไขตัวแปร i น้อยกวา่ 7 หรอื ไม่ { //ถา้ ไม่ใหเ้ พ่ิมค่าทลี ะ 1 คา่ for(int i=0; i<7; i++) // ทำการส่งค่าแอนะลอ็ กออกตามข้อมลู ตัวแปร i { //หน่วงเวลา 500 มลิ ลิวนิ าที analogWrite(ledPin, A[i]); delay(500); } } 6.2.3 การคำนวณทางคณติ ศาสตร์ รูปแบบการใช้เคร่อื งหมายทางคณติ ศาสตร์ท่ีใชใ้ นการเขยี นโปรแกรมมลี กั ษณะการใช้ดงั นี้ รปู แบบ สมการ ความหมาย x ++ x=x+1 ค่า x บวกเพิ่มดว้ ย 1 x -- x=x-1 ค่า x ลบออกด้วย 1 x += y x=x+y x -= y x=x-y ค่า x บวกด้วย y x *= y x=x*y ค่า x ลบดว้ ย y x /= y x=x/y คา่ x คณู ดว้ ย y ค่า x หารด้วย y 6.2.4 ตัวดำเนินการ ในการเขียนโปรแกรมจะตอ้ งมกี ารดำเนนิ การหรือเปรียบเทียบ ว่าจริงหรือเทจ็ โดยลักษณะการใช้ เคร่อื งหมายจะแสดงรายละเอยี ดดงั นี้ รปู แบบ ความหมาย x == y x มคี า่ เทา่ กับคา่ y x != y x มคี า่ ไม่เทา่ กับคา่ y x<y x มีค่านอ้ ยกว่าคา่ y x>y คา่ x มีค่ามากกวา่ ค่า y x <= y คา่ x มคี ่าน้อยกว่าหรอื เทา่ กบั ค่า y x >= y ค่า x มีคา่ มากกว่าหรือเท่ากับค่า y
83 6.2.5 โครงสร้างเง่ือนไข • คำสัง่ if คำสัง่ if เปน็ คำสง่ั ทีใ่ ชส้ ำหรับกำหนดเงื่อนไขโดยการนำหลักการทางคณิตศาสตร์เข้ามา ชว่ ย ด้วยการใช้ตวั ดำเนนิ การเข้ามากำหนดเงื่อนไข ตัวอยา่ งเช่น รปู แบบการใช้งาน If (เง่อื นไข) //ชุดคำส่ัง { } ตัวอย่างการใช้งาน //ประกาศตัวแปร A เทา่ กบั 12 //ประกาศตวั แปร B เท่ากบั 13 void setup() //กำหนดใหต้ วั แปร A รับค่าจากอินพุต { //กำหนดใหต้ วั แปร B สง่ คา่ ออกเอาทพ์ ุต int A =12; //ตรวจสอบเง่อื นไขถา้ ตวั แปร A มีค่าเป็น HIGH int B = 13; pinMode(A , INPUT); //ส่ังให้ B มีค่าเปน็ HIGH pinMode(B , OUTPUT); } void loop() { if( A == HIGH ) { digitalWrite(B,HIGH) } }
84 • คำส่งั if-else คำสั่ง if-else เป็นคำสั่งที่ใช้ให้การกำหนดเงือ่ นไขและสามารถเลือกเงื่อนไขได้ รูปแบบ แสดงตังตอ่ ไปนี้ รปู แบบการใช้งาน If (เงื่อนไข) //กำหนดให้ขา 4 รบั สัญญาณเขา้ { //กำหนดใหข้ า 3 สง่ สัญญาณออก // ชดุ คำสงั่ ท่ี 1 //ตรวจสอบขาที่ 4 มีสถานะเป็น HIGH หรือไม่ } //สง่ั ใหข้ า 3 มสี ถานะเปน็ HIGH else //ถ้าเง่ือนไขไมเ่ ป็นจริง { //สั่งใหข้ า 3 มีสถานะเปน็ LOW // ชดุ คำสงั่ ท่ี 2 } ตวั อย่างการใชง้ าน void setup() { pinMode(4,INPUT); pinMode(3,OUTPUT); } void loop() { if(digitalRead(4)==HIGH) { digitalWrite(3,HIGH); } else { digitalWrite(3,LOW); } }
85 ตัวอย่างการใช้รว่ มกบั เครื่องหมาย เครอื่ งหมาย ”และ” (&&) void setup() { pinMode(13,OUTPUT); pinMode(12,INPUT); pinMode(11,INPUT); } void loop() { if( (digitalRead(11) >0 ) && (digitalRead(12) >0) ) //ถ้าขาท่ี 11 มคี ่ามากกวา่ 0 //และขาท่ี 12 มีคา่ มากกวา่ 0 { digitalWrite(13,HIGH); //สง่ั ใหค้ า่ 13 มีสถานะเปน็ HIGH } } เคร่ืองหมาย”หรือ”( || ) void setup() { pinMode(13,OUTPUT); //ตง้ั คา่ ใหข้ า 13 มีสถานะเป็นเอาต์พุต pinMode(12,INPUT); //ตัง้ ค่าใหข้ า 12 มีสถานะเป็นอนิ พุต pinMode(11,INPUT); //ตงั้ ค่าใหข้ า 11 มีสถานะเป็นอินพตุ } void loop() { if( (digitalRead (11) > 0) || (digitalRead(12)>0) ) //ถา้ ขาท่ี 11 มคี ่ามากกว่า 0 //หรอื ขาที่ 12 มีคา่ มากกวา่ 0 { digitalWrite(13,HIGH); //ส่งั ใหค้ ่า 13 มีสถานะเปน็ HIGH } }
86 • คำสั่ง while คำส่งั while เปน็ คำสั่งท่ีใชใ้ นการกำหนดเง่ือนไข และตรวจสอบเง่อื นไขในการทำงานว่าเป็นไป ตามท่ีกำหนดหรือไม่ รปู แบบการใช้งาน while(เงื่อนไข) { //ชดุ คำสง่ั } ตวั อยา่ งการใช้งาน int i = 0; //ประกาศตวั แปรช่อื i และให้มีค่าเท่ากับ 0 void setup() { } void loop() { whaile( i < 30 ) //กำหนดเงื่อนไขถ้าตัวแปร i น้อยกว่า 30 { i++; //ใหท้ ำการเพม่ิ คา่ i ทลี ะ 1 ค่า } } คำสงั่ while(1) คำสัง่ while(1) เป็นคำสง่ั ท่ีทำใหค้ ำสง่ั ทำงานซ้ำตลอดเวลา รปู แบบการใช้งาน while(1) { //ชุดคำสง่ั }
87 ตวั อย่างการใช้งาน int i = 0; //กำหนดเงื่อนไขการวนทำงานซำ้ void setup() { //สง่ คา่ ให้ขา 12 มีสถานะเป็น HIGH } //หนว่ งเวลา 1 วนิ าที void loop() //ส่งค่าใหข้ า 12 มีสถานะเป็น LOW { whaile(1) { digitalWrite(12,HIGH); delay(500); digitalWrite(13,LOW); } } คำส่งั do…while คำสั่ง do…while เป็นคำสั่งที่ใช้ในการกำหนดเงื่อนไข จะทำงานตามชุดคำสั่งที่ 1 แต่เม่ือ ตรวจสอบวา่ ชุดคำสงั่ ท่ี 1 ไม่เป็นความจรงิ ก็จะข้ามไปทำชุดคำส่ังท่ี 2 ต่อไป รปู แบบการใช้งาน do { //ชดุ คำสงั่ ที่ 1 }while(เงื่อนไข); //ชดุ คำสัง่ ที่ 2
88 ตัวอยา่ งการใช้งาน void setup() //ตัง้ คา่ ใหข้ า 12 เป็นอินพตุ { //ตง้ั คา่ ให้ขา 13 เป็นเอาท์พุต pinMode(12,INPUT); //ชดุ คำสั่งที่ 1 ส่งค่าให้ขา 12 เป็น HIGH pinMode(13,OUTPUT); //ตรวจสอบขาที่ 13 วา่ มีสถานะเปน็ LOW หรอื ไม่ } //ส่งค่าให้ขา 12 มสี ถานะเป็น LOW (ชุดคำสั่งที่ 2 void loop() //ทำการหนว่ งเวลา 5 วินาที { do { digitalWrite(12,HIGH); } while (digitalRead(13)==LOW); digitalWrite(12,LOW); ) delay(5000); } คำสง่ั for คำสง่ั for เป็นคำส่ังวนซ้ำเพ่ือตรวจสอบเงื่อนไข จะหยุดทำงานเมือ่ เงือ่ นไขเป็นจริง รูปแบบการใช้งาน for (เง่อื นไขเร่ิมต้น ; เงื่อนไขสุดทา้ ย ; การกระทำ) { //ชุดคำสง่ั }
89 ตวั อย่างการใช้งาน int i = 0; //ประกาศตัวแปรช่ือ i ให้มีค่าเท่ากับ 0 void setup() { //ตง้ั คา่ ใหข้ า 13 เป็นเอาตพ์ ุต pinMode(13,OUTPUT); } //กำหนดใหต้ ัวแปร i มคี ่าเทา่ กบั 0 ; กำหนดเงอื่ นไขถา้ ตวั void loop() // มีค่านอ้ ยกว่า 50 ; ให้ทำการเพม่ิ ค่า i คร้งั ละ 1 ค่า { //ส่งคา่ ให้ขา 13 เป็น HIGH เม่ือคา่ i มีคา่ น้อยกว่า 50 for(i=0; i<50 ; i++) //ส่งคา่ ให้ขา 13 เปน็ LOW เมือ่ ค่า i มีค่ามากกว่า 50 แปร i { digitalWrite(13,HIGH); } digitalWrite(13,LOW); } 6.2.6 คำสงั่ ในการติดตอ่ กับพอรต์ คำสงั่ Series คำสั่ง Series เป็นคำสั่งที่ใช้ในการติดต่อกับพอร์ตเพื่อแสดงข้อมูลที่มีการสื่อสารในการรับและ การส่งขอ้ มลู ในตวั โปรแกรม รูปแบบการใช้งาน Serial.begin(ความเรว็ การสือ่ สาร) //การตง้ั คา่ ความเร็วในการส่ือสารมหี นว่ ยเปน็ บิตตอ่ วินาที Serial.print(“ขอ้ ความ”); //พมิ พ์ขอ้ ความออกทางพอรต์ Serial.print(ตวั แปร); //พิมพข์ ้อความท่ีได้จากตวั แปรออกทางจอมอนิเตอร์ Serial.read(); //อ่านข้อมูลจากพอรต์ Serial.available(); //ตรวจสอบข้อมลู จากพอร์ต
90 ***มอนเิ ตอรค์ ือส่วนใช้ในการแสดงผลขอ้ มลู ท่ีสอ่ื สารทางพอร์ตท่ีเชื่อมต่อ ตัวอยา่ งการใชง้ าน คำสง่ั Serial.begin(); / Serial.print(); void setup() { Serial.begin(9600); //ตง้ั ค่าส่อื สารที่ 9600 บติ ต่อวินาที } void loop() { Serial.print(\"GOOD MORNING\"); //พิมพข์ ้อความออกทางจอมอนิเตอร์ Serial.println(“GOODBYE”); //พิมพ์ข้อความออกทางจอมอนิเตอร์แบบเวน้ บรรทัด delay(2000); //หน่วงเวลา 2 วินาที } ตัวอย่างการใช้งาน คำสัง่ Serial.begin(); / Serial.print(); /Serial.avilable(); int i=0; //ประกาศตวั แปร i เท่ากับ 0 void setup() { //ตงั้ คา่ การส่ือสารที่ 9600 บิตต่อวินาที Serial.begin(9600); //พิมพข์ ้อความออกทางจอมอนิเตอร์ของโปรแกรม Serial.println(\"GOOD MORNING\"); } void loop() //เงอื่ นไขการตรวจสอบการกดคียบ์ อร์ด { if(Serial.available() > 0) //เพิ่มค่าตวั แปร i ทลี ะ 1 ค่า { //อ่านข้อมูลของตวั แปร i จากพอรต์ //พิมพ์ค่าของตวั แปร i ออกทางมอนเิ ตอร์ i++; Serial.read(i); Serial.print(i); }
91 delay(2000); //หนว่ งเวลา 2 วนิ าที } 6.2.7 การสร้างโปรแกรมย่อย โปรแกรมย่อย เป็นโปรแกรมที่ถูกเรียกใช้จากโปรแกรมหลัก โดยโปรแกรมย่อยจะเป็น 4 แบบ ดงั นี้ 1. โปรแกรมยอ่ ยทไ่ี ม่มรี ับข้อมลู เข้ามาและไม่ส่งข้อมูลออกไป รปู แบบการใชง้ าน void ชือ่ โปรแกรมยอ่ ย(void) { //ชดุ คำสั่ง } ตัวอยา่ งการใชง้ าน //ประกาศใชโ้ ปรแกรมย่อยช่ือ “openled” void openled(void); void setup() //ต้ังให้ขา 12 เปน็ เอาต์พตุ { //เรียกใช้โปรแกรมยอ่ ยชือ่ ”openled” pinMode(12,OUTPUT); //โปรแกรมย่อย } //สง่ ค่าใหข้ า 12 มสี ถานะเปน็ HIGH void loop() //หนว่ งเวลา 1 วินาที { //สง่ คา่ ให้ขา 12 มีสถานะเปน็ LOW //หน่วงเวลา 1 วินาที openled(); } void openled(void) } digitalWrite(12,HIGH); delay(1000); digitalWrite(12,LOW); delay(1000); }
92 2. โปรแกรมยอ่ ยทรี่ บั ขอ้ มลู เขา้ แตไ่ มม่ ีการสง่ ขอ้ มูลออก รปู แบบการใช้งาน void ชือ่ โปรแกรมย่อย(ประกาศตวั แปร) { //ชุดคำส่ัง } ตวั อยา่ งการใชง้ าน //ประกาศโปรแกรมย่อย void send(int led); void setup() //ต้ังคา่ ให้ขา 13 เป็นเอาตพ์ ุต { pinMode(13,OUTPUT); //เรยี กใชโ้ ปรแกรมยอ่ ย”send” } //โปรแกรมย่อย “send” void loop() //ตรวจสอบเง่อื นไขตัวแปร led เทา่ กบั 1 หรอื ไม่ { //สง่ ค่าใหข้ า 13 มสี ถานะเป็น HIGH send(1); } void send(int led) { if (led==1) { digitalWrite(13,HIGH); } }
93 3. โปรแกรมยอ่ ยท่ไี มร่ ับขอ้ มลู เข้าแตม่ ีการสง่ ขอ้ มูลออก รปู แบบการใชง้ าน ชนิดตวั แปร ชื่อโปรแกรมยอ่ ย(void) { //ชดุ คำสงั่ } ตัวอยา่ งการใชง้ าน byte read(void); //ประกาศโปรแกรมยอ่ ยชือ่ “read” void setup() { pinMode(12,INPUT); //ตั้งคา่ ขา 12 เปน็ อินพุต pinMode(13,OUTPUT); //ตงั้ คา่ ขา 13 เปน็ เอาตพ์ ุต } void loop() { byte a = read( ); //ประกาศตัวแปร a ใหเ้ ปน็ ตวั อ่านคา่ เท่ากบั read if(a==1) //ตรวจสอบเงื่อนไขตัวแปร a เท่ากับ 1 หรือไม่ { digitalWrite(13,HIGH); //สง่ คา่ ใหข้ า 13 มสี ถานะเปน็ HIGH } } byte read(void) //โปรแกรมย่อย “read” { byte i = 0; //ประกาศตัวแปร i เป็นชนิด byte ให้ เท่ากบั 0 if (digitalRead(13)==LOW) //ตรวจสอบขา 13 มสี ถานะ LOW หรอื ไม่ {
94 i =1; // กำหนดให้ตัวแปร i มคี ่าเท่ากบั 1 } //สง่ คา่ ตวั แปร i กลับไปยังโปรแกรมหลกั return i; } 4. โปรแกรมยอ่ ยทีร่ ับขอ้ มูลเขา้ และมกี ารส่งข้อมูลออก รปู แบบการใช้งาน ชนดิ ตัวแปร ชอ่ื โปรแกรมยอ่ ย(ชอื่ ตวั แปร) { //ชดุ คำส่งั } ตวั อยา่ งการใชง้ าน float temp1(int r); //ประกาศโปรแกรมย่อยชื่อ “temp“โดยรับค่ามาเก็บในตัว แปร r //และส่งค่าออกชนดิ float void setup() { Serial.begin(9600); //ตง้ั คา่ การสอื่ สารท่คี วามเร็ว 9600 บิตตอ่ วนิ าที } void loop() { float temp2=temp1(analogRead(A0)); // ประกาศตัว temp เพื่อรบั คา่ จากโปรแกรมยอ่ ย Serial.print(temp2); //พมิ พข์ ้อมลู ของตัวแปร temp ออกมอนเิ ตอร์ } float temp1(int t) //โปรแกรมยอ่ ยรบั และสง่ ข้อมลู { float t = 35; //ประกาศตัวแปรชอ่ื t ชนดิ float ใหม้ คี า่ เท่ากับ 35
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298