The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

แผนการจัดการเรียนรู้ <br>รหัสวิชา 20901-2405 วิชาการโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น<br>จัดทำโดย นายพลวัฒน์ ผ่องแก้ว<br>ปีการศึกษา 2/2566

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by phonlawat.po, 2024-02-15 04:27:54

แผนการจัดการเรียนรู้ วิชาการโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น

แผนการจัดการเรียนรู้ <br>รหัสวิชา 20901-2405 วิชาการโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น<br>จัดทำโดย นายพลวัฒน์ ผ่องแก้ว<br>ปีการศึกษา 2/2566

46 แผนการจัดการเรียนรู้ หน่วยที่ 4 ชื่อวิชา การโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น สอนครั้งที่ 6 ชื่อหน่วย ฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino ชั่วโมงรวม 3 ชั่วโมง ชื่อเรื่อง ฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino จำนวน 3 ชั่วโมง สาระสำคัญ ในการศึกษาไมโครคอนโทรลเลอร์นั้น อุปกรณ์อินพุดเอาด์พุดพื้นฐานที่ควรจะรู้คือสวิตซ์และแอสอีดี ซึ่ง สวิตซ์เป็นอุปกรณ์อินพุตและแอลอีตีเป็นเอาต์พุต ฟังก์ชันที่ใช้พื้นฐานประกอบด้วย pinMode(pin.mode) เป็น ฟังก์ชันที่กำหนดให้พอร์ต (port) หรือขา (pin) นั้น ๆ ให้เป็นอินพุตหรือให้เป็นเอาต์พุต digitalRead(pin) เป็น ฟังก์ซันสำหรับอ่านค่าสัญญาณดิจิหัล (0,1) ที่ pin ที่ระบุเข้าไปใน MCU digitalWite(pin,value) เป็น ฟังก์ซัน สำหรับส่งสถานะของสัญญาณดิจิทัลที่ pin ที่ระบุให้มีค่าเป็น 0 (LOW) หรือ 1 (HIGH) ฟังก์ชัน sleep(t เป็น ฟังก์ชันหน่วงเวลา โดยกำหนดให้ CPU หยุดการทำงานเป็นเวลาตามที่กำหนดโดยค่ตัวเลขใน วงเล็บ ซึ่งจะมีค่เป็น มิลลิวินาที delayt) เป็นฟังก์ชันหน่วงเวลาหมายถึงให้โปรแกรมที่กระทำนั้น ๆ ทำงาน เดิมป็นเวลาตามที่กำหนด โดยคำตัวเลขในวงเล็บ delayus(t) เป็นฟังก์ชันหน่วงเวลาหมายถึงให้โปรแกรมที่ กระทำนั้น ทำงานเดิมเป็นเวลา ตามที่กำหนด โดยใช้ค่าตัวเลขในวงเล็บ ซึ่งค่าตัวเลขในวงเล็บมีค่าเป็น ไมโครวินาที Millis(!) เป็นฟังก์ชันสำหรับ การนับเวลาขนาด 32 บิ ดังนั้นจึงสามารถนับเวลาได้ 2" คือค่า 0 ถึง 4,294967,.295 มิลสิวินาที เมื่อถึงค่สูงสุดจะ เริ่มต้นใหม่ การต่สวิตช์อินพุตสามารถต่อได้ลักษณะการต่อ 2 รูปแบบไต้แก่ ต่อตัวต้านทานจากแหล่งจ่ายอนุกรม กับสวิตช์ อีกด้านหนึ่งของสวิตซ์ต่อลงกราวด์ จุดต่อระหว่าง ตัวต้านทานกับสวิตช์เป็นสัญญาณไปต่อกับ ไมโครคอนโทรลเลอร์ การต่อสวิตซ์ในลักษณะนี้จะทำให้เมื่อไม่กด สิวิตซ์จะให้ลอจิก เมื่อกสวิตซ์จะให้ลอจิก 0 และต่อสวิตซ์จากแหล่งจ่ายอนุกรมกับตัวต้านทาน อีกด้านหนึ่ง ของตัวต้านทานต่อลงกราวด์ จุดต่อระหว่างสวิตข์ กับตัวต้านทานเป็นสัญญาณไปต่อกับ MCU การต่อสวิตซ์ใน ลักษณะนี้จะทำให้เมื่อไม่กดสวิตซ์จะให้ลอจิก 0 เมื่อ กดสวิตซ์จะให้ลอจิก 1สัญญาณรบกวนที่เกิดจาก หน้าสัมผัสของสวิตซ์เมื่อถูกกดหรือปล่อยนั้น จะมีคาบเวลาน้อย กว่า 50มิลลิวินาที ดังนั้นจึงสามารถตัด สัญญาณรบกวนทิ้งไป โดยให้ไมโครคอนโทรลเลอร์ไม่รับสัญญาณใด ๆ ในช่วงเวลาดังกล่าว สมรรถนะประจำหน่วย 1. แสดงความรู้เกี่ยวกับกลุ่มฟังก์ชันดิจิทัลอินพุตเอาต์พุตและกลุ่มฟังก์ชันการหน่วงเวลา 2. เขียนโปรแกรมภาษา C มีวงจรสวิตช์และแอลอีดีให้ทำงานตามที่กำหนด 3. ต่อวงจรที่กำหนดเข้ากับบอร์ดไมโครคอนโทรลเลอร์ Arduino


47 4. แก้ไขโปรแกรมภาษา C ตามเงื่อนไขที่กำหนด จุดประสงค์การเรียนรู้ประจำหน่วย จุดประสงค์ทั่วไป 1. เพื่อให้นักเรียนอธิบายการใช้งานฟังก์ชัน pinMode(pin, mode) ได้ 2. เพื่อให้นักเรียนอธิบายการใช้งานฟังก์ชัน digitalRead(pin) ได้ 3. เพื่อให้นักเรียนอธิบายการใช้งานฟังก์ชัน delay(t) ได้ 4. เพื่อให้นักเรียนอธิบายการใช้งานฟังก์ชัน millis() ได้ 5. เพื่อให้นักเรียนอธิบายการต่อวงจรสวิตช์อินพุตสำหรับไมโครคอนโทรลเลอร์ได้ 6. เพื่อให้นักเรียนอธิบายวิธีแก้ไขปัญหาที่เกิดจากสัญญาณรบกวนที่สวิตช์ได้ 7. เพื่อให้นักเรียนอธิบายการต่อวงจรแสดงผลด้วยแอลอีดีสำหรับไมโครคอนโทรลเลอร์ได้ 8. เพื่อให้นักเรียนเขียนโปรแกรมภาษา C สำหรับปรับค่าการกดสวิตช์ได้ 9. เพื่อให้นักเรียนเขียนโปรแกรมภาษา C สำหรับควยคุมการทำงานของแอลอีดีได้ แก้ไขโปรแกรมภาษา C ที่มีวงจรสวิตช์และแอลอีดีให้ทำงานตามที่กำหนดได้ จุดประสงค์เชิงพฤติกรรม 1. อธิบายการใช้งานฟังก์ชัน pinMode(pin, mode) ได้ 2. อธิบายการใช้งานฟังก์ชัน digitalRead(pin) ได้ 3. อธิบายการใช้งานฟังก์ชัน delay(t) ได้ 4. อธิบายการใช้งานฟังก์ชัน millis() ได้ 5. อธิบายการต่อวงจรสวิตช์อินพุตสำหรับไมโครคอนโทรลเลอร์ได้ 6. อธิบายวิธีแก้ไขปัญหาที่เกิดจากสัญญาณรบกวนที่สวิตช์ได้ 7. อธิบายการต่อวงจรแสดงผลด้วยแอลอีดีสำหรับไมโครคอนโทรลเลอร์ได้ 8. เขียนโปรแกรมภาษา C สำหรับปรับค่าการกดสวิตช์ได้ 9. เขียนโปรแกรมภาษา C สำหรับควยคุมการทำงานของแอลอีดีได้ 10. แก้ไขโปรแกรมภาษา C ที่มีวงจรสวิตช์และแอลอีดีให้ทำงานตามที่กำหนดได้


48 กิจกรรมการเรียนรู้ ขั้นตอนการสอน (กิจกรรมของครู) ขั้นตอนการเรียน (กิจกรรมผู้เรียน) เครื่องมือ/การวัดผล ประเมินผล 1.ขั้นนำเข้าสู่บทเรียน 1.1 ครูบอกจุดประสงค์ของการเรียนใน บทเรียนนี้ 1.2 ครูเปิดประเด็นคำถามเกี่ยวกับ ฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino 1.1 นักเรียนรับฟังจุดประสงค์ของการ เรียนในบทเรียนนี้ 1.2 นักเรียนตอบคำถาม ฟังก์ชันพื้นฐานของ โปรแกรมภาษา C สำหรับ Arduino 1. คำถามประจำหน่วย - การตอบคำถามแบบสุ่มถามเพื่อ กระตุ้นผู้เรียน 2. ขั้นสอนทฤษฎี 2.1 ครูอธิบาย ฟังก์ชันพื้นฐานของ โปรแกรมภาษา C สำหรับ Arduino 2.2 ซักถามปัญหาเกี่ยวกับฟังก์ชัน พื้นฐานของโปรแกรมภาษา C สำหรับ Arduino 2.1 รับฟังคำบรรยาย 2.2 ตอบคำถามและแสดงความคิดเห็น 1.สื่อนำเสนอ Canva หน่วยที่ 4 2. คำถามหน่วยที่ 4 3. ขั้นสรุป 3.1 ครูและนักเรียนช่วยกันสรุปและ ครูซักถามปัญหาข้อสงสัย 3.1 นักเรียนช่วยครูสรุปและตอบคำถาม 3.2 จดบททึกย่อ 1. ใบสรุปหน่วยที่ 4 4. ขั้นสอนปฏิบัติ 4.1 ครูสาธิตเขียนโปรแกรมเกี่ยวกับ ฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino 4.1 นักเรียนปฏิบัติตาม 1. สังเกตและสอบถาม 5. ขั้นการประเมินผล 5.1 ครูแจกใบประเมินผลหลังเรียน หน่วยที่ 4 5.2 ดูแลนักเรียนไม่ให้ทุจริต 5.3 เมื่อครบเวลาที่กำหนดรับ แบบทดสอบคืน 5.1 รับใบประเมินผลหลังเรียนหน่วยที่ 4 5.2 ทำแบบทดสอบหลังเรียน 5.3 เมื่อครบเวลาที่กำหนดส่งแบบทดสอบคืน 1. แบบทดสอบหลังเรียน หน่วยที่ 4 6. ขั้นมอบหมายงาน 6.1 ให้นักเรียนไปค้นคว้าเพิ่มเติม เกี่ยวกับฟังก์ชันพื้นฐานของโปรแกรม ภาษา C สำหรับ Arduino 6.1 รับมอบหมายงาน 1. ใบมอบงานหน่วยที่ 4 7. ขั้นตรวจสอบความเรียบร้อย 7.1 ตรวจความเรียบร้อยและความ 7.1 ช่วยกันจัดเก็บและทำความสะอาด 1.ใบตรวจสอบความ


49 เรียบร้อยของห้องเรียนห้องปฏิบัติงาน ห้องเรียนห้องปฏิบัติงานให้เรียบร้อย เรียบร้อย สื่อการเรียนรู้และแหล่งการเรียนรู้ สื่อสิ่งพิมพ์ - สุชิน ชินสีห์(2563). ไมโครคอนโทรลเลอร์. นนทบุรี : โรงพิมพ์ บริษัท ศูนย์หนังสือเมืองไทย จำกัด. สื่ออื่นๆ - สื่อนำเสนอ Canva หลักฐานการเรียนรู้ที่ต้องการ หลักฐานความรู้ ใบงานหน่วยที่ 4 หลักฐานการปฏิบัติงาน คะแนนใบงานหน่วยที่ 4 การวัดและประเมินผล การวัดผล (ใช้เครื่องมือ) การประเมินผล (นำผลเทียบกับเกณฑ์และแปลความหมาย) 1. ใบงานหน่วยที่ 4 เกณฑ์ผ่าน 50% 2. แบบประเมินคุณธรรม จริยธรรม ตามสภาพจริง เกณฑ์ผ่าน 50% การบูรณาการหลักปรัชญาเศรษฐกิจพอเพียงสู่แผนการจัดการเรียนรู้ การถอดรหัสปรัชญาของเศรษฐกิจพอเพียง การพัฒนาโปรแกรมด้วยเทคโนโลยีดอตเน็ต พอประมาณ มีเหตุผล มีภูมิคุ้มกัน - นักศึกษามีความพอประมาณใน การใชอุปกรณการเรียน - นักศึกษาใชเหตุผลในการ ทำกิจกรรม - นักศึกษาทำงานอยางมีระเบียบวินัยในการ เรียนไมกอความวุนวาย เงื่อนไขความรู้ เงื่อนไขคุณธรรม - นักศึกษามีความรูเกี่ยวกับเนื้อหาในบทเรียน - นักศึกษารูจักความรักและความสามัคคีในเพื่อนรวมหอง เวลามีปญหาในการทำงาน


50 - ชวยกันแกไขขอผิดพลาดที่เกิดขึ้นเบื้องตนกอนถาแกไขไม ไดจึงเรียกอาจารย ครอบคลุม 4 มิติ วัตถุ สังคม สิ่งแวดล้อม วัฒนธรรม - สื่อ วัสดุ อุปกรณ์ - แบบทดสอบ - ใบมอบหมายงาน - ใบปฏิบัติงาน - การช่วยเหลือ เพื่อนในกลุ่ม - การแลกเปลี่ยน เรียนรู้ในชั้นเรียน - การร่วมกิจกรรม - รักษาความสะอาด ของห้องเรียน - จัดโต๊ะให้เหมาะสม - ปิดไฟ พัดลม ก่อนออกจากห้อง - อนุรักษ์ สิ่งแวดล้อม - การอยู่ร่วมกัน ในสังคม


51 เนื้อหาสาระ หน่วยที่ 4 ชื่อวิชา การโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น สอนครั้งที่ 6 ชื่อหน่วย ฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino ชั่วโมงรวม 3 ชั่วโมง ชื่อเรื่อง ฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino จำนวน 3 ชั่วโมง หน่วยที่ 4 ฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino 4.1 กลุ่มฟังก์ชันดิจิทัลอินพุตเอาต์พุต ฟังก์ชันที่เกี่ยวกับดิจิทัลอินพุตเอาต์พุตในภาษา C++ สำหรับ Arduino ประกอบด้วย 4.1.1 pinMode(pin,mode) เ ป ็ น ฟ ั ง ก ์ ช ั น ส ำ ห ร ั บ ก ำ ห น ด ใ ห ้ ข า ห ร ื อ พ อ ร ์ ต ข อ ง ไมโครคอนโทรลเลอร์นั้นทำหน้าที่เป็นดิจิทัลอินพุตหรือดิจิทัลเอาต์พุต ซึ่งจะกำหนดไว้ในส่วน void setup() pin เป็นหมายเลขพอร์ตหรือตัวแปรที่แทนหมายเลขพอร์ตของ Arduino mode เป็นตัวกำหนด ว่าให้พอร์ตนั้นเป็นอินพุต (INPUT) หรือเอาต์พุต (OUTPUT) ข้อควรระวัง การพิมพ์ pinMode ตัว M ต้องเป็นตัวพิมพ์ใหญ่ 4.1.2 digitalRead(pin) เป็นฟังก์ชันสำหรับอ่านสถานะของอินพุดของ pin ที่ระบุว่ามีค่าเป็น ลอจิก 1 (HIGH) หรือมีค่าเป็น ลอจิก 0 (LOW) 4.1.3 digitalWrite(pin,value) เป็นฟังก์ชันสำหรับส่งสถานะของลอจิกติจิทัล 1 (HIGH) หรือ ลอจิก 0 (LOW) ของ pin ที่ระบุ ให้เป็นสถานะลอจิก 1 (HIGH) ซึ่งมีค่แรงดันไฟฟ้ากระแสตรงประมาณ 5 V และเป็นสถานะลอจิก 0 (LOW) มีค่า แรงดันไฟฟ้ากระแสตรงประมาณ 0 V จากวงจรในรูปที่ 4.1 หาก ต้องก่ารให้ LED, สว่างเมื่อ SW, ถูกกต และ LED, ไม่สว่างเมื่อ SW ไม่ถูกกด สามารถเขียนโปรแกรมได้ ดังนี้ int ledPin = 13; int swPin = 5; void setup() { pinMode(ledPin, OUTPUT); pinMode(swPin, INPUT);


52 } void loop() { if (digitalRead(swPin)==0 ) { //ถ ้ า สถ า น ะ ข อ ง pin D5 (swPin) ม ี ค่ า เ ป ็ น LOW digitalWrite(ledPin, HIGH); //ส่งค่าลอจิก HIGH (1) ออกที่ pin D13 (ledPin) //ถ้าสถานะของ pin D5 มีค่าไม่เป็น LOW } else { digitalWrite(ledPin, LOW); }//ส่งค่ลอจิก LOW (0) ออกที่ pin D13 } ข้อควรระวัง การพิมพ์ digitalRead ตัว R ต้องเป็นตัวพิมพ์ใหญ่ และ digtalWite ตัว W ต้อง เป็น ตัวพิมพ์ใหญ่เช่นกัน else 4.2 กลุ่มฟังก์ชันการหน่วงเวลา การหน่วงเวลาคือการสั่งงานให้ ไม่โครคอนโทรลเลอร์ หยุด ทำงานตามช่วงเวลาที่เรากำหนด และเมื่อ ครบตามกำหนดนั้นแล้ว ไมโครคอนโทรลเลอร์ก็จะเริ่มทำงาน ต่อไป ฟังก์ชันสำหรับการหน่วงเวลา C++ สำหรับ Arduino ประกอบด้วยฟังก์ชัน sleep(t), delay(t) รูปแบบการใช้งานเป็นดังนี้ 4.2.1 sleep(t) เป็นฟังก์ชันหน่วงเวลาโดยกำหนดให้ CPU หยุดการทำงานเป็นเวลาสั้น ๆ ตามที่ กำหนดโดยค่า ตัวเลขในวงเล็บ ซึ่งจะมีค่าเป็นมิลลิวินาที (ms) เช่น sleep(10), เป็นฟังก์ชันให้ CPU หยุด


53 ทำงานเป็นเวลา 10 มิลลิวินาที sleep(100), เป็นฟังก์ชันให้ CPU หยุดทำงานเป็นเวลา 100 มิลลิวินาที หรือ 0.1 วินาที 4.2.2 delay(t) เป็นฟังก์ชันหน่วงเวลาหมายถึงให้โปรแกรมที่กระทำนั้น ๆ ทำงานเดิมเป็นเวลา ตามที่กำหนด โดยค่าตัวเลขในวงเล็บ ซึ่งจะมีค่าเป็นมิลสิวินาที (ms) เช่น delay(100), เป็นฟังก์ชันหน่วง เวลาเป็นเวลา 100 มิลลิวินาที delay(2000), เป็นฟังก์ชันหน่วงเวลาเป็นเวลา 2000 มิลลิวินาที หรือ 2 วินาที ค่าตัวเลข t เป็นค่าตัวเลข 16 บิต ดังนั้นจึงมีค่าเท่ากับ 2'" คือมีค่าตั้งแต่ 0 ถึง 65535 4.2.3 delayus(t) เป็นฟิงก์ชันหน่วงเวลาหมายถึงให้โปรแกรมที่กระทำนั้น ๆ ทำงานเดิมเป็นเวลา ตามที่กำหนด โดยคำตัวเลขในวงเล็บ ซึ่งจะมีค่าเป็นไมโครวินาที (uS) เช่น delayus(10), เป็นฟังก์ชัน หน่วงเวลาเป็นเวลา 10 ไมโครวินาที delay(150), เป็นฟังก์ชันหน่วงเวลาเป็นเวลา 150 ไมโครวินาที่ หรือ 0.15 มิลลิวินาที ค่าตัวเลข t เป็นค่าตัวเลข 16 บิด ดังนั้นจึงมีค่เท่ากับ 2"' คือมีค่าตั้งแต่ 0 ถึง 65535 4.2.4 millis() Millis0 เป็นฟังก์ชันสำหรับการนับเวลา (timer) ซึ่งไมโครคอนโทรลเลอร์ทุกตัวจะ มี timer เป็น ตัวนับเวลา มีประโยชน์สำหรับการทำงานของโปรแกรมหน่วงเวลา เพราะบางโปรแกรมไม่ สามารถใช้คำสั่ง sleep(t), delay(t) และ delayus(t) ได้ เนื่องจาก CPU จะหยุดทำงานหากใช้ฟังก์ชัน ดังกล่าว ดังนั้นจึง จำเป็นต้องใช้ฟังก์ชัน millis แทน ซึ่งฟังก์ชัน mills ใช้ timer ขนาด 32 บิต ดังนั้นจึง สามารถนับเวลาได้ 2"2 คือค่า 0 ถึง 4,294967,295 มิลลิวินาที เมื่อถึงค่สูงสุดจะเริ่มตันที่ 0 ใหม่ 4.3 จงจรสวิตช์และวงจรแสดงผลด้วย LED สวิตช์ที่ใช้ในไมโครคอนโทรลเลอร์ส่วนใหญ่จะเป็น คาร์บอนสวิตช์ เพราะสามารถลดสัญญาณรบกวนที่ เกิดจากหน้าสัมผัสได้ มีขนาดเล็ก ราคาถูก 4.3.1 รูปแบบของวงจรสวิตช์อินพุต การต่อสวิตช์อินพุดสามารถต่อได้ลักษณะการต่อ 2 รูปแบบได้แก่ 1. ต่อตัวต้านทานจากแหล่งจ่ายอนุกรมกับสวิตช์อีกด้านหนึ่งของสวิตช์ต่อลงกราวด์ จุดต่อ ระหว่างตัวต้านทานกับสวิตช์เป็นสัญญาณไปต่อกับไมโครคอนโทรลเลอร์ การต่อสวิตช์ในลักษณะนี้จะทำ ให้เมื่อ ไม่กดสวิตช์จะให้ลอจิก I เมื่อกดสวิตช์จะให้ลอจิก 0 2. ต่อสวิตช์จากแหล่งจ่ายอนุกรมกับตัวต้านทาน อีกด้านหนึ่งของตัวต้านทานต่อลงกราวด์ จุด ต่อระหว่างสวิตช์กับตัวต้านทานเป็นสัญญาณไปต่อกับไมโครคอนโทรลเลอร์ การต่อสวิตช์ในลักษณะนี้ทำ ให้ เมื่อไม่กดสวิตช์จะให้ลอจิก 0 เมื่อกดสวิตช์จะให้ลอจิก 1 4.3.2 การลดสัญญาณรบกวนที่เกิดจากหน้าสัมผัสของสวิตช์


54 สัญญาณรบกวนที่เกิดจากหน้าสัมผัสของคาร์บอนสวิตช์ขณะถูกกตหรือปล่อยนั้น มีคาบเวลา น้อยกว่า 50 มิลลิวินาที ดังนั้นสามารถตัดสัญญาณรบกวนนี้ทั้งไป โดยให้ไมโครคอนโทรลเลอร์ไม่รับ สัญญาณ ใด ๆ ในช่วงเวลาดังกล่าว เช่นใช้คำสั่ง delay (60) เป็นการแก้ไขสัญญาณรบกวนที่เกิดจาก หน้าสัมผัสของสวิตช์ได้ นอกจากนี้ยังสามารถใช้โปรแกรมแก้สัญญาณรบกวนจากหน้าสัมผัส 4.3.3 การใช้คำสั่ง pull-up และ pull-down นวงจรสวิตช์ปกติวจรสวิตช์อินพุดต้องมีตัว ต้านทานต่อระหว่างสวิตช์ไปยังแหล่งจ่ายไฟฟ้า หรือจากสวิตช์ลง กราวด์ สำหรับไมโครคอนโทรลเสอร์ AVR ที่ใช้ในบอร์ด Arduino นั้นสามารถใช้ R pull-up และ R pull- down ที่อยู่ภายใน ไมโครคอนโทรลเลอร์ การใช้ R pull-up รูปแบบ pinMode(pin, INPUT_PULLUP); pinMode(pin, INPUT_PULLDOWN); 4.3.4 วงจรแสดงผลด้วย LED ไดโอดเปล่งแสงหรือ LED นำมาใช้งานในการแสดงผลแทนค่า เครื่องวัดทางไฟฟ้าหรือแสดงผลใน ลักษณะมอนิตอร์ เมื่อมีกระสไหลผ่านตัวมันจะทำให้เกิดแสงที่รอยต่อ PN แสงที่เกิดขึ้นที่ตัว LED ขึ้นอยู่กับสาร ที่นำมาใช้ผลิต ปริมาณของกระแสที่เหมาะสมประมาณ 10 mA การใช้งาน LED จะต้องมีตัวต้านทานต่อ อนุกรมกับไดโอดเปล่งแสง การต่อ LED ในลักษณะคอมมอน Cathode คือต่อซั้ว Anode ของ LED เข้ากับ พอร์ตของ MCU ขา Cathode ของ LED ต่อเข้ากับกราวด์ การต่อ LED ในลักษณะคอมมอน Anode คือต่อขั้ว Anode ของ LED เข้ากับไฟ +5V ขา Cathode ของ LED ต่อเข้ากับพอร์ตของไมโครคอนโทรลเลอร์


55 จุดประสงค์การมอบหมายงานให้ 1. อธิบายการใช้งานฟังก์ชัน pinMode(pin, mode) ได้ 2. อธิบายการใช้งานฟังก์ชัน digitalRead(pin) ได้ 3. อธิบายการใช้งานฟังก์ชัน delay(t) ได้ 4. อธิบายการใช้งานฟังก์ชัน millis() ได้ 5. อธิบายการต่อวงจรสวิตช์อินพุตสำหรับไมโครคอนโทรลเลอร์ได้ 6. อธิบายวิธีแก้ไขปัญหาที่เกิดจากสัญญาณรบกวนที่สวิตช์ได้ 7. อธิบายการต่อวงจรแสดงผลด้วยแอลอีดีสำหรับไมโครคอนโทรลเลอร์ได้ 8. เขียนโปรแกรมภาษา C สำหรับปรับค่าการกดสวิตช์ได้ 9. เขียนโปรแกรมภาษา C สำหรับควยคุมการทำงานของแอลอีดีได้ 10. แก้ไขโปรแกรมภาษา C ที่มีวงจรสวิตช์และแอลอีดีให้ทำงานตามที่กำหนดได้ แนวทางปฏิบัติงาน ก่อนเรียน ครูแนะแนวทางคำถาม ชี้แนวทางการหาคำตอบ ขณะเรียน ให้นักศึกษาอภิปรายและสรุปเกี่ยวกับฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino หลังเรียน ให้นักเรียนไปค้นคว้าเพิ่มเติมเกี่ยวกับฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino และทำใบงานหน่วยเรียนหน่วยที่ 4 ส่งท้ายชั่วโมง แหล่งค้นคว้า/อ้างอิง สุชิน ชินสีห์(2563). ไมโครคอนโทรลเลอร์. นนทบุรี : โรงพิมพ์ บริษัท ศูนย์หนังสือเมืองไทยจำกัด. ใบมอบหมายงานที่ 4 ระดับชั้น ปวช.3 กลุ่ม ทส.3 สัปดาห์ที่6 ชื่อวิชา การโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น ชื่อเรื่อง ฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino จำนวนชั่วโมง 3 ชั่วโมง


56 กำหนดเวลาส่งงาน - ท้ายชั่วโมงเรียน การประเมินผล 1. การประเมินผลโดยใช้ใบงานหน่วยที่ 4 2. สังเกตการมีส่วนร่วมในการเรียน 3. สังเกตจากการตอบคำถาม / การอภิปราย


57 ใบงานหน่วยที่ 4 ฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino คำชี้แจง จงตอบคำถามต่อไปนี้ให้ถูกต้อง 1. เขียนคำสั่งหรือฟังก์ชันเกี่ยวกับ Arduino พร้อมความหมายมา 10 คำสั่ง


58 ข้อสรุปหลังการจัดการเรียนรู้ .............................................................................................................................................................................. .............................................................................................................................................................................. .................................................................................................................................................................................... .................................................................................................................................................................................... ปัญหาที่พบ .................................................................................................................................................................................... .................................................................................................................................................................................... .................................................................................................................................................................................... แนวทางการแก้ปัญหา .................................................................................................................................................................................... .................................................................................................................................................................................... (นายพลวัฒน์ ผ่องแก้ว) ครูผู้สอน (นางสาวมยุรี พงษ์อาภา) หัวหน้าแผนกวิชาคอมพิวเตอร์ (นางสาวศิริวรรณ เนาว์ประโคน) รองผู้อำนวยงานฝ่ายวิชาการ บันทึกหลังการจัดการเรียนรู้ ระดับชั้น ปวช.3 กลุ่ม ทส.3 สัปดาห์ที่6 ชื่อวิชา การโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น วันเดือนปี ชื่อเรื่อง ฟังก์ชันพื้นฐานของโปรแกรมภาษา C สำหรับ Arduino จำนวนชั่วโมง 3 ชั่วโมง


59 แผนการจัดการเรียนรู้ หน่วยที่ 5 ชื่อวิชา การโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น สอนครั้งที่ 7-8 ชื่อหน่วย การควบคุมการทำงานของอินพุตและเอาต์พุต ชั่วโมงรวม 6 ชั่วโมง ชื่อเรื่อง การควบคุมการทำงานของอินพุตและเอาต์พุต จำนวน 6 ชั่วโมง สาระสำคัญ Active Low อุปกรณ์แบบนี้จะทำงาน ในกรณีที่สัญญาณมีค่าต่ำ ซึ่งหมายถึงสัญญาณ 0 หรือต่อ สายสัญญาณลง GND Active High อุปกรณ์แบบนี้จะทำงาน ในกรณีที่สัญญาณมีค่าสูง ซึ่งหมายถึงสัญญาณ 1 หรือต่อ สายสัญญาณกับ Vcc หลอด LED 7-Segment โดยทั่วไปจะมีหลอด LED ตัวเลข 7 หลอด มาต่อร่วมกันเหมือนกับเลข 8 โดย แต่ละตำแหน่งจะมีสัญลักษณ์บอกประจำตำแหน่งคือ อ, b, c. d. e. 1. g และ dp (จุดทศนิยม) เพื่อแสดงผลเป็น ตัวเลข หลอด LED 7- Segment จะนำขาทั้ง 7 หลอดมาต่อร่วมกันแบ่งออกเป็น 2 ลักษณะคือ 1. ต่อแบบแอโนดร่วม (Common Anode 7-Segment) 2. ต่อแบบแค่โทตร่วม (Common Cathode 7-Segment) การต่อแบบแอโนดร่วม (Common Anode) จะต้องจ่ายไฟชั่วบวกที่ขาร่วม และต้องจ่ายไฟขั้วลบเข้าที่ขา แคโทด ส่วนการต่อแบบแคโทดร่วม (Common Cathode) จะต้องจ่ายไฟขั้วลบเข้าที่ขาร่วม แล้วจ่ายไฟขั้วบวก เช้า ที่ขาแอโนด คีย์สวิตช์แบบแมทริกซ์ (Keypad)เมื่อนำมาเชื่อมต่อกับไมโครคอนโทรลเลอร์ จะทำให้ประหยัดพอร์ต อย่างมาก โดยในหัวข้อนี้จะขอยกตัวอย่างการใช้ Keypad แบบ 4X4 ซึ่งจะใช้บิตจากไมโครคอนโทรลเลอร์เพียง บิดเท่านั้นเอง สามารถกดตัวเลขบน Keypad ได้ทั้งหมด 12 ปุ่มกด ทั้งแนว Row และ: Column โดยการอ่านค่จะ ถูกต้องแม่นยำ


60 สมรรถนะประจำหน่วย 1. แสดงความรู้เกี่ยวกับการควบคุมการทำงานอินพุตเอาต์พุต 2. เขียนโปรแกรมภาษา C ควบคุมอุปกรณ์ให้ทำงานตามที่กำหนด 3. ต่อวงจรที่กำหนดเข้ากับบอร์ดไมโครคอนโทรลเลอร์ Arduino 4. แก้ไขโปรแกรมภาษา C ตามเงื่อนไขที่กำหนด จุดประสงค์การเรียนรู้ประจำหน่วย จุดประสงค์ทั่วไป 1. เพื่อให้นักเรียนอธิบายการทำงานของ LED 2. เพื่อให้นักเรียนอธิบายการทำงานของ LED 7-Segment 3. เพื่อให้นักเรียนอธิบายการทำงานของ Keypad 4. เพื่อให้นักเรียนต่อวงจรควบคุมการทำงาน LED 5. เพื่อให้นักเรียนต่อวงจรควบคุมการทำงาน LED 7-Segment 6. เพื่อให้นักเรียนต่อวงจรควบคุมการทำงาน Keypad 7. เพื่อให้นักเรียนเขียนโปรแกรมควบคุมการทำงาน LED 8. เพื่อให้นักเรียนเขียนโปรแกรมควบคุมการทำงาน LED 7-Segment 9. เพื่อให้นักเรียนเขียนโปรแกรมควบคุมการทำงาน Keypad จุดประสงค์เชิงพฤติกรรม 1. อธิบายการทำงานของ LED ได้ 2. อธิบายการทำงานของ LED 7-Segment ได้ 3. อธิบายการทำงานของ Keypad ได้ 4. ต่อวงจรควบคุมการทำงาน LED ได้ 5. ต่อวงจรควบคุมการทำงาน LED 7-Segment ได้ 6. ต่อวงจรควบคุมการทำงาน Keypad ได้ 7. เขียนโปรแกรมควบคุมการทำงาน LED ได้ 8. เขียนโปรแกรมควบคุมการทำงาน LED 7-Segment ได้ 9. เขียนโปรแกรมควบคุมการทำงาน Keypad ได้


61 กิจกรรมการเรียนรู้ ขั้นตอนการสอน (กิจกรรมของครู) ขั้นตอนการเรียน (กิจกรรมผู้เรียน) เครื่องมือ/การวัดผล ประเมินผล 1.ขั้นนำเข้าสู่บทเรียน 1.1 ครูบอกจุดประสงค์ของการเรียนใน บทเรียนนี้ 1.2 ครูเปิดประเด็นคำถามเกี่ยวกับ การ ควบคุมการทำงานของอินพุตและ เอาต์พุต 1.1 นักเรียนรับฟังจุดประสงค์ของการ เรียนในบทเรียนนี้ 1.2 นักเรียนตอบคำถามการควบคุมการ ทำงานของอินพุตและ เอาต์พุต 1. คำถามประจำหน่วย - การตอบคำถามแบบสุ่มถามเพื่อ กระตุ้นผู้เรียน 2. ขั้นสอนทฤษฎี 2.1 ครูอธิบายการควบคุมการทำงาน ของอินพุตและ เอาต์พุต 2.2 ซักถามปัญหาเกี่ยวกับการควบคุม การทำงานของอินพุตและ เอาต์พุต 2.1 รับฟังคำบรรยาย 2.2 ตอบคำถามและแสดงความคิดเห็น 1.สื่อนำเสนอ Canva หน่วยที่ 5 2. คำถามหน่วยที่ 5 3. ขั้นสรุป 3.1 ครูและนักเรียนช่วยกันสรุปและ ครูซักถามปัญหาข้อสงสัย 3.1 นักเรียนช่วยครูสรุปและตอบคำถาม 3.2 จดบททึกย่อ 1. ใบสรุปหน่วยที่ 5 4. ขั้นสอนปฏิบัติ 4.1 ครูสาธิตเขียนโปรแกรมเกี่ยวกับ การควบคุมการทำงานของอินพุตและ เอาต์พุต 4.1 นักเรียนปฏิบัติตาม 1. สังเกตและสอบถาม 5. ขั้นการประเมินผล 5.1 ครูแจกใบประเมินผลหลังเรียน หน่วยที่ 5 5.2 ดูแลนักเรียนไม่ให้ทุจริต 5.3 เมื่อครบเวลาที่กำหนดรับ แบบทดสอบคืน 5.1 รับใบประเมินผลหลังเรียนหน่วยที่ 5 5.2 ทำแบบทดสอบหลังเรียน 5.3 เมื่อครบเวลาที่กำหนดส่งแบบทดสอบคืน 1. แบบทดสอบหลังเรียน หน่วยที่ 5 6. ขั้นมอบหมายงาน 6.1 ให้นักเรียนไปค้นคว้าเพิ่มเติม เกี่ยวกับการควบคุมการทำงานของ อินพุตและ เอาต์พุต 6.1 รับมอบหมายงาน 1. ใบมอบงานหน่วยที่ 5 7. ขั้นตรวจสอบความเรียบร้อย 7.1 ตรวจความเรียบร้อยและความ เรียบร้อยของห้องเรียนห้องปฏิบัติงาน 7.1 ช่วยกันจัดเก็บและทำความสะอาด ห้องเรียนห้องปฏิบัติงานให้เรียบร้อย 1.ใบตรวจสอบความ เรียบร้อย


62 สื่อการเรียนรู้และแหล่งการเรียนรู้ สื่อสิ่งพิมพ์ - สุชิน ชินสีห์(2563). ไมโครคอนโทรลเลอร์. นนทบุรี : โรงพิมพ์ บริษัท ศูนย์หนังสือเมืองไทย จำกัด. สื่ออื่นๆ - สื่อนำเสนอ Canva หลักฐานการเรียนรู้ที่ต้องการ หลักฐานความรู้ ใบงานหน่วยที่ 5 ใบปฏิบัติหน่วยที่ 5 การต่อวงจรและเขียนโปรแกรมควบคุมการทำงาน หลักฐานการปฏิบัติงาน คะแนนใบปฏิบัติหน่วยที่ 5 คะแนนใบงานหน่วยที่ 5 วงจรและโปรแกรมควบคุมการทำงาน การวัดและประเมินผล การวัดผล (ใช้เครื่องมือ) การประเมินผล (นำผลเทียบกับเกณฑ์และแปลความหมาย) 1. ใบงานหน่วยที่ 5 เกณฑ์ผ่าน 50% 2. ใบปฏิบัติหน่วยที่ 5 เกณฑ์ผ่าน 100% 2. แบบประเมินคุณธรรม จริยธรรม ตามสภาพจริง เกณฑ์ผ่าน 50% การบูรณาการหลักปรัชญาเศรษฐกิจพอเพียงสู่แผนการจัดการเรียนรู้ การถอดรหัสปรัชญาของเศรษฐกิจพอเพียง การพัฒนาโปรแกรมด้วยเทคโนโลยีดอตเน็ต พอประมาณ มีเหตุผล มีภูมิคุ้มกัน - นักศึกษามีความพอประมาณใน การใชอุปกรณการเรียน - นักศึกษาใชเหตุผลในการ ทำกิจกรรม - นักศึกษาทำงานอยางมีระเบียบวินัยในการ เรียนไมกอความวุนวาย เงื่อนไขความรู้ เงื่อนไขคุณธรรม


63 - นักศึกษามีความรูเกี่ยวกับเนื้อหาในบทเรียน - นักศึกษารูจักความรักและความสามัคคีในเพื่อนรวมหอง เวลามีปญหาในการทำงาน - ชวยกันแกไขขอผิดพลาดที่เกิดขึ้นเบื้องตนกอนถาแกไขไม ไดจึงเรียกอาจารย ครอบคลุม 4 มิติ วัตถุ สังคม สิ่งแวดล้อม วัฒนธรรม - สื่อ วัสดุ อุปกรณ์ - แบบทดสอบ - ใบมอบหมายงาน - ใบปฏิบัติงาน - การช่วยเหลือ เพื่อนในกลุ่ม - การแลกเปลี่ยน เรียนรู้ในชั้นเรียน - การร่วมกิจกรรม - รักษาความสะอาด ของห้องเรียน - จัดโต๊ะให้เหมาะสม - ปิดไฟ พัดลม ก่อนออกจากห้อง - อนุรักษ์ สิ่งแวดล้อม - การอยู่ร่วมกัน ในสังคม


64 เนื้อหาสาระ หน่วยที่ 5 ชื่อวิชา การโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น สอนครั้งที่ 7-8 ชื่อหน่วย การควบคุมการทำงานของอินพุตและเอาต์พุต ชั่วโมงรวม 6 ชั่วโมง ชื่อเรื่อง การควบคุมการทำงานของอินพุตและเอาต์พุต จำนวน 6 ชั่วโมง หน่วยที่ 5 การควบคุมการทำงานของอินพุตและเอาต์พุต การเชื่อมต่อไมโครคอนโทรลเลอร์ Arduino กับหลอด LED สำหรับการต่ออุปกรณ์อินพุตและเอาต์พุตแบบดิจิตอล (Digital I/O) ในวงจรอิเล็กทรอนิกส์เพื่อให้ทำงาน ตามต้องการนั้น การต่ออุปกรณ์เหล่านี้จะมีอยู่ 2 รูปแบบคือ Active Low หรือ Pull-up และ Active High หรือ Pull-down โดยการต่อวงจรของแต่ละแบบก็ต่างกัน และให้คำสัญญาณแบบดิจิตอลที่ต่างกันด้วย อุปกรณ์แบบนี้จะทำงาน (Active Low) ในกรณีที่สัญญาณมีค่าต่ำ ซึ่งหมายถึงสัญญาณ 0 หรือต่อ สายสัญญาณลง GND ยกตัวอย่างเช่น สวิตช์แบบ Active Low เริ่มด้วยการใช้ตัวต้านทานต่อระหว่างขา I/O และ Vcc (Pull-up Resistor) จากนั้นต่อสวิตช์ไว้ระหว่างขา I/O และ GND ในกรณีไม่กดสวิตช์ไฟจาก Vcc จะไปเลี้ยง ยังขา I/O ตลอดเวลา หรือสัญญาณที่ได้จะมีค่าเป็น 1 หรือ High เมื่อกดสวิตช์ขา I/O จะถูกต่อลง GND ซึ่งจะทำ ให้สัญญาณที่ได้รับมีค่าเป็น 0 หรือ Low นั่นเอง อุปกรณ์แบบนี้จะทำงาน (Active High) ในกรณีที่สัญญาณมีค่าสูง ซึ่งหมายถึงสัญญาณ 1 หรือต่อ สายสัญญาณกับ Vcc ยกตัวอย่างเช่น สวิตช์แบบ Active High เริ่มด้วยการใช้ตัวต้านทานต่อระหว่างขา I/O และ GND (Pull-down Resistor) จากนั้นต่อสวิตช์ไว้ระหว่างขา I/O และ Vcc ในกรณีไม่กดสวิตช์ไฟขา I/O จะต่อกับ GND ตลอดเวลา หรือสัญญาณที่ได้จะมีค่าเป็น 0 หรือ Low เมื่อกดสวิตช์ขา I/O จะถูกต่อกับ Vcc ซึ่งจะทำให้ สัญญาณที่ได้รับมีค่าเป็น 1 หรือ High นั่นเอง


65 การควบคุมหลอดไฟฟ้า LED ด้วยการสั่งงานผ่านปุ่มกด เพื่อให้หลอด LED เปิด/ปิด โดยในส่วนด้าน อินพุตจะใช้ ขา Pin 5 จากไมโครคอนโทรลเลอร์ ต่อกับปุ่มกด ผ่านตัวต้านทานขนก 10 กิโลโอห์ม และในส่วนด้าน เอาต์พุตจะใช้ ขา Pin 6 จากไมโครคอนโทรลเลอร์ ต่อกับหลอด LED ผ่านตัวต้านทานขนาด 220 โอห์ม เป็น ตัวกำหนดทิศทางของพอร์ตตามลำดับ การทดลองหลอด LED เพื่อให้หลอด LED ทั้ง 8 หลอด สว่างและดับ (ไฟกระพริบ) พร้อมกันโดยใช้ ไมโครคอนโทรลเลอร์ Arduino UNO ที่บิต 2 – 9 เป็นบิตควบคุมการทำงาน 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. #define led1 9 #define led2 8 #define led3 7 #define led4 6 #define led5 5 #define led6 4 #define led7 3 #define led8 2 void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT);


66 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); pinMode(led7, OUTPUT); pinMode(led8, OUTPUT); } void loop() { digitalWrite(led1, 1); digitalWrite(led2, 1); digitalWrite(led3, 1); digitalWrite(led4, 1); digitalWrite(led5, 1); digitalWrite(led6, 1); digitalWrite(led7, 1); digitalWrite(led8, 1); delay(1000); digitalWrite(led1, 0); digitalWrite(led2, 0);


67 33. 34. 35. 36. 37. 38. 39. 40. digitalWrite(led3, 0); digitalWrite(led4, 0); digitalWrite(led5, 0); digitalWrite(led6, 0); digitalWrite(led7, 0); digitalWrite(led8, 0); delay(1000); } อธิบายวงจร บรรทัด ที่ 1-8 ประกาศตัวแปร define ของหลอดไฟ Led1-8 บรรทัดที่ 9-19 เขียนฟังก์ชัน void setup ( ) ในฟังก์ชันนี้จะใช้คำสั่ง pinMode เพื่อประกาศให้ทุกบิตมี สถานะ Output บรรทัดที่ 22-29 คำสั่ง digitalWrite ส่งค่า Data ให้ทุกบิต เป็น 1 หรือ High เพื่อให้หลอด LED สว่าง


68 บรรทัดที่ 30 หน่วงเวลา 1000 ms บรรทัดที่ 31-38 คำสั่ง digitalWrite ส่งค่า Data ให้ทุกบิต เป็น 0 หรือ Low เพื่อให้หลอด LED ดับ บรรทัดที่ 39 หน่วงเวลา 1000 ms บรรทัดที่ เมื่อครบลูปทำงานโปรแกรมจะกลับไปวนลูปการทำงานตลอดจากบรรทัดที่ 21-40 2.2 การเชื่อมต่อไมโครคอนโทรลเลอร์Arduino กับ LED 7-Segment หลอด LED 7-Segment โดยทั่วไปจะมีหลอด LED ตัวเลข 7 หลอด มาต่อร่วมกันเหมือนกับเลข 8 โดย แต่ละตำแหน่งจะมีสัญลักษณ์บอกประจำตำแหน่งคือ อ, b, c. d. e. 1. g และ dp (จุดทศนิยม) เพื่อแสดงผลเป็น ตัวเลข หลอด LED 7- Segment จะนำขาทั้ง 7 หลอดมาต่อร่วมกันแบ่งออกเป็น 2 ลักษณะคือ 1. ต่อแบบแอโนดร่วม (Common Anode 7-Segment) 2. ต่อแบบแค่โทตร่วม (Common Cathode 7-Segment) การต่อแบบแอโนดร่วม (Common Anode) จะต้องจ่ายไฟขั้วบวกที่ขาร่วม และต้องจ่ายไฟขั้วลบเข้าที่ขา แคโทด ส่วนการต่อแบบแคโทดร่วม (Common Cathode) จะต้องจ่ายไฟขั้วลบเข้าที่ขาร่วม แล้วจ่ายไฟขั้วบวก เช้า ที่ขาแอโนด การใช้ไมโครคอนโทรลเลอร์ Arduino เป็นบิตเอาต์พุต ควรใช้ไอซีบัฟเฟอร์ (74LS245) ต่อร่วม เพื่อขับ กระแสให้หลอด LED 7-Segment สว่างได้


69 การทดลองต่อวงจรหลอด LED 7-Segment แสดงผลตัวเลข 0 – 9 เพิ่ม/ลดค่า ร่วมกับสวิตช์กด 1. #define a 4 2. #define b 5 3. #define c 6 4. #define d 7 5. #define e 8 6. #define f 9 7. #define g 10 8. #define sw_A 13 9. #define sw_B 12 10. int i = 0; 11. void setup() 12. { 13. pinMode(a, OUTPUT); 14. pinMode(b, OUTPUT); 15. pinMode(c, OUTPUT); 16. pinMode(d, OUTPUT); 17. pinMode(e, OUTPUT); 18. pinMode(f, OUTPUT); 19. pinMode(g, OUTPUT); 20. pinMode(sw_A, INPUT); 21. pinMode(sw_B, INPUT); 22. } 23. void zero() 24. {


70 25. digitalWrite(a, HIGH); 26. digitalWrite(b, HIGH); 27. digitalWrite(c, HIGH); 28. digitalWrite(d, HIGH); 29. digitalWrite(e, HIGH); 30. digitalWrite(f, HIGH); 31. digitalWrite(g, LOW); 32. } 33. void one() 34. { 35. digitalWrite(a, LOW); 36. digitalWrite(b, HIGH); 37. digitalWrite(c, HIGH); 38. digitalWrite(d, LOW); 39. digitalWrite(e, LOW); 40. digitalWrite(f, LOW); 41. digitalWrite(g, LOW); 42. } 43. void two() 44. { 45. digitalWrite(a, HIGH); 46. digitalWrite(b, HIGH); 47. digitalWrite(c, LOW); 48. digitalWrite(d, HIGH); 49. digitalWrite(e, HIGH); 50. digitalWrite(f, LOW); 51. digitalWrite(g, HIGH); 52. }


71 53. void three() 54. { 55. digitalWrite(a, HIGH); 56. digitalWrite(b, HIGH); 57. digitalWrite(c, HIGH); 58. digitalWrite(d, HIGH); 59. digitalWrite(e, LOW); 60. digitalWrite(f, LOW); 61. digitalWrite(g, HIGH); 62. } 63. void four() 64. { 65. digitalWrite(a, LOW); 66. digitalWrite(b, HIGH); 67. digitalWrite(c, HIGH); 68. digitalWrite(d, LOW); 69. digitalWrite(e, LOW); 70. digitalWrite(f, HIGH); 71. digitalWrite(g, HIGH); 72. } 73. void five() 74. { 75. digitalWrite(a, HIGH); 76. digitalWrite(b, LOW); 77. digitalWrite(c, HIGH); 78. digitalWrite(d, HIGH); 79. digitalWrite(e, LOW); 80. digitalWrite(f, HIGH);


72 81. digitalWrite(g, HIGH); 82. } 83. void six() 84. { 85. digitalWrite(a, LOW); 86. digitalWrite(b, LOW); 87. digitalWrite(c, HIGH); 88. digitalWrite(d, HIGH); 89. digitalWrite(e, HIGH); 90. digitalWrite(f, HIGH); 91. digitalWrite(g, HIGH); 92. } 93. void seven() 94. { 95. digitalWrite(a, HIGH); 96. digitalWrite(b, HIGH); 97. digitalWrite(c, HIGH); 98. digitalWrite(d, LOW); 99. digitalWrite(e, LOW); 100. digitalWrite(f, LOW); 101. digitalWrite(g, LOW); 102. } 103. void eight() 104. { 105. digitalWrite(a, HIGH); 106. digitalWrite(b, HIGH); 107. digitalWrite(c, HIGH); 108. digitalWrite(d, HIGH);


73 109. digitalWrite(e, HIGH); 110. digitalWrite(f, HIGH); 111. digitalWrite(g, HIGH); 112. } 113. void nine() 114. { 115. digitalWrite(a, HIGH); 116. digitalWrite(b, HIGH); 117. digitalWrite(c, HIGH); 118. digitalWrite(d, LOW); 119. digitalWrite(e, LOW); 120. digitalWrite(f, HIGH); 121. digitalWrite(g, HIGH); 122. } 123. void loop() 124. { 125. bool A = digitalRead(sw_A); 126. bool B = digitalRead(sw_B); 127. if (B == 0) 128. { 129. delay(200); 130. i = i - 1; 131. } 132. if (A == 0) 133. { 134. delay(200); 135. i = i + 1; 136. }


74 137. switch (i) 138. { 139. case 0: 140. zero(); break; 141. case 1: 142. one(); break; 143. case 2: 144. two(); break; 145. case 3: 146. three(); break; 147. case 4: 148. four(); break; 149. case 5: 150. five(); break; 151. case 6: 152. six(); break; 153. case 7: 154. seven(); break; 155. case 8: 156. eight(); break; 157. case 9: 158. nine(); break; 159. } 160. } อธิบายวงจรการทำงาน การทำงานของโปรแกรมหลอด LED 7-Segment จะแสดงผลตัวเลข 0 1 2 3 4 5 6 7 8 9 ด้วยการกด ปุ่มกดที่ 1 และจะแสดงผลตัวเลข 9 8 7 6 5 4 3 2 1 0 ด้วยการกดปุ่มกดที่ 2 ตามลำดับ บรรทัดที่ 1-9 ประกาศตัวแปรแบบ int หรือ Integer ทั้ง 9 บิต (2-10)


75 บรรทัดที่ 11-22 เขียนฟังก์ชัน void setup () ในฟังก์ชันนี้จะใช้คำสั่ง pinMode เพื่อประกาศค่า sw_A, sw_B เป็นแบบ INPUT และ ประกาศค่า a - g เป็นแบบ OUTPUT บรรทัดที่ 132 เขียนฟังก์ชัน IF เมื่อมีการกด sw_A จะทำการนับค่าตัวเลขบวกเพิ่มทีละ 1 (0 - 9) บรรทัดที่ 127 เขียนฟังก์ชัน IF เมื่อมีการกด sw_B จะทำการนับค่าตัวเลขลบลงทีละ 1 (9 - 0) 2.3 การเชื่อมต่อไมโครคอนโทรลเลอร์ Arduino กับคีย์สวิตช์แบบแมทริกซ์ (Keypad) คีย์สวิตช์แบบแมทริกซ์ (Keypad)เมื่อนำมาเชื่อมต่อกับไมโครคอนโทรลเลอร์ จะทำให้ประหยัดพอร์ต อย่างมาก โดยในหัวข้อนี้จะขอยกตัวอย่างการใช้ Keypad แบบ 4X3 ซึ่งจะใช้บิตจากไมโครคอนโทรลเลอร์เพียง บิดเท่านั้นเอง สามารถกดตัวเลขบน Keypad ได้ทั้งหมด 12 ปุ่มกด ทั้งแนว Row และ: Column ดังแสดงในรูปที่ 2.17 ซึ่งเป็นการต่อ Keypad 4X3 (Row and Column) โดยการอ่านค่จะถูกต้องแม่นยำ ไม่ว่าเราจะก Keypad ปุ่มไหนก็อ่านได้ เพราะถ้าเรากด Keypad ปุ่มใดปุ่มหนึ่งจะสแกนค่ความสัมพันธ์ระหว่างค่าบิตที่อ่านเข้ามาและ คำ บิดที่ส่งออกนั่นเอง สำหรับฮาร์ดแวร์ของ Keypad จะประกอบด้วย 8 Pins การใช้ Keypad 4X3 จะใช้ ทั้งหมด 7 Pins การทดลองการเชื่อมต่อควบคุมการทำงาน Keypad แสดงผลการรับค่า 1. #include "Keypad.h" 2. const byte ROWS = 4; 3. const byte COLS = 4;


76 4. char keys[ROWS][COLS] = { {'1','2','3','A'}, 5. {'4','5','6','B'}, 6. {'7','8','9','C'}, 7. {'*','0','#','D'} }; 8. byte rowPins[ROWS] = {9,8,7,6}; 9. byte colPins[COLS] = {5,4,3,2}; 10. Keypad keypad = Keypad(makeKeymap(keys),rowPins, colPins, 11. ROWS, COLS); 12. void setup() { 13. Serial.begin(9600); 14. } 15. void loop() { 16. char key = keypad.getKey(); 17. if( key != NO_KEY ) { 18. Serial.print(key); 19. } 20. }


77 อธิบายวงจร บรรทัดที่ 1 เรียกใช้ไลบรารี Keypad.h บรรทัดที่ 2-3 กำหนดจำนวนปุ่มแถวและคอลัม บรรทัดที่ 4-7 กำหนดค่าของแต่ละปุ่ม บรรทัดที่ 8-9 กำหนดขาที่เชื่อมกับ Keypad บรรทัดที่ 16-17 รับค่าจาก Keypad และตรวจสอบว่ามีค่าที่รับเข้ามาหรือไม่ บรรทัดที่ 18 แสดงค่าที่ได้รับมา


78 จุดประสงค์การมอบหมายงานให้ 1. อธิบายการทำงานของ LED ได้ 2. อธิบายการทำงานของ LED 7-Segment ได้ 3. อธิบายการทำงานของ Keypad ได้ 4. ต่อวงจรควบคุมการทำงาน LED ได้ 5. ต่อวงจรควบคุมการทำงาน LED 7-Segment ได้ 6. ต่อวงจรควบคุมการทำงาน Keypad ได้ 7. เขียนโปรแกรมควบคุมการทำงาน LED ได้ 8. เขียนโปรแกรมควบคุมการทำงาน LED 7-Segment ได้ 9. เขียนโปรแกรมควบคุมการทำงาน Keypad ได้ แนวทางปฏิบัติงาน ก่อนเรียน ครูแนะแนวทางคำถาม ชี้แนวทางการหาคำตอบ ขณะเรียน ให้นักศึกษาอภิปรายและสรุปเกี่ยวกับการควบคุมการทำงานของอินพุตและเอาต์พุต หลังเรียน ให้นักเรียนไปค้นคว้าเพิ่มเติมเกี่ยวกับการควบคุมการทำงานของอินพุตและเอาต์พุต แล้วทำใบ งานและใบปฏิบัติหน่วยเรียนหน่วยที่ 5 ส่งท้ายชั่วโมง แหล่งค้นคว้า/อ้างอิง สุชิน ชินสีห์(2563). ไมโครคอนโทรลเลอร์. นนทบุรี : โรงพิมพ์ บริษัท ศูนย์หนังสือเมืองไทยจำกัด. กำหนดเวลาส่งงาน - ท้ายชั่วโมงเรียน ใบมอบหมายงานที่ 5 ระดับชั้น ปวช.3 กลุ่ม ทส.3 สัปดาห์ที่7-8 ชื่อวิชา การโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น ชื่อเรื่อง การควบคุมการทำงานของอินพุตและเอาต์พุต จำนวนชั่วโมง 6 ชั่วโมง


79 การประเมินผล 1. การประเมินผลโดยใช้ใบงานและใบปฏิบัติหน่วยที่ 5 2. สังเกตการมีส่วนร่วมในการเรียน 3. สังเกตจากการตอบคำถาม / การอภิปราย 4. ผลการทำงานการต่อวงจรและการเขียนโปรแกรมควบคุมการทำงาน


80 ใบงานหน่วยที่ 5 การควบคุมการทำงานของอินพุตและเอาต์พุต คำชี้แจง จงตอบคำถามต่อไปนี้ให้ถูกต้อง 1. อธิบายการทำงานของ LED 2. อธิบายการทำงานของ LED 7-Segment 3. อธิบายการทำงานของ Keypad


81 ใบปฏิบัติ หน่วยที่ 5 การควบคุมการทำงานของอินพุตและเอาต์พุต รายการปฏิบัติ คะแนน รายการประเมิน ได้ ไม่ได้ ต่อวงจรเชื่อมต่อ LED ได้ 1 เขียนโปรแกรมควบคุมการทำงาน LED ได้ 1 ต่อวงจรเชื่อมต่อ LED 7-Segment ได้ 2 เขียนโปรแกรมควบคุมการทำงาน LED 7-Segment ได้ 2 ต่อวงจรเชื่อมต่อ Keypad ได้ 2 เขียนโปรแกรมควบคุมการทำงาน Keypad ได้ 2 รวม


82 ข้อสรุปหลังการจัดการเรียนรู้ .............................................................................................................................................................................. .............................................................................................................................................................................. .................................................................................................................................................................................... .................................................................................................................................................................................... ปัญหาที่พบ .................................................................................................................................................................................... .................................................................................................................................................................................... .................................................................................................................................................................................... แนวทางการแก้ปัญหา .................................................................................................................................................................................... .................................................................................................................................................................................... (นายพลวัฒน์ ผ่องแก้ว) ครูผู้สอน (นางสาวมยุรี พงษ์อาภา) หัวหน้าแผนกวิชาคอมพิวเตอร์ (นางสาวศิริวรรณ เนาว์ประโคน) รองผู้อำนวยงานฝ่ายวิชาการ บันทึกหลังการจัดการเรียนรู้ ระดับชั้น ปวช.3 กลุ่ม ทส.3 สัปดาห์ที่7-8 ชื่อวิชา การโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น วันเดือนปี ชื่อเรื่อง การควบคุมการทำงานของอินพุตและเอาต์พุต จำนวนชั่วโมง 6 ชั่วโมง


83 แผนการจัดการเรียนรู้ หน่วยที่ 6 ชื่อวิชา การโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น สอนครั้งที่ 9-10 ชื่อหน่วย จอแสดงผลสำหรับใช้งานร่วมกับบอร์ด Arduino ชั่วโมงรวม 6 ชั่วโมง ชื่อเรื่อง จอแสดงผลสำหรับใช้งานร่วมกับบอร์ด Arduino จำนวน 6 ชั่วโมง สาระสำคัญ การสื่อสารข้อมูลระหว่างบอร์ด Arduino กับไมโครคอมพิวเตอร์นั้น ภายใน Arduino จะมีโมดูล สื่อสาร ข้อมูลอนุกรมที่มาพร้อมกับ Arduino software ที่เรียกว่า UART การแสดงผลด้วย Character LCD เป็นที่นิยมใช้ สำหรับการแสดงผลของบอร์ด Arduino เนื่องจากมีราคาถูกและใช้งานง่าย สามารถต่อได้ทั้งแบบ 4 bit แบบ 8 Bit และแบบ 2c นอกจากนี้ยังมีผู้พัฒนา Software สำหรับการพัฒนาการใช้งาน Character LCD ไว้เป็นจำนวน มาก หากใช้การสื่อสารแบบ i2C จะมี Chip เบอร์ PCF8574 เป็นตัวจัดการระบบ เป็นผล ให้สายที่ต่อกับ Arduino ใช้เพียง 2 เส้น คือ Serial Data และ Serial clock การแสดงผลด้วยจอ TFT LCD สามารถใช้ใน ไมโครคอนโทรลเลอร์ Arduino ได้เช่นกัน ครึ่งจอแสดงผล TFT L CD มีหลายชนิดสามารถใช้งาน ได้ตามความ เหมาะสมของผู้ใช้งาน ซึ่ง Driver ที่มีราคาถูกจะเป็น chipset เบอร์ ST7735 ใช้การติดต่อสื่อสาร แบบ SP! จะต้องไปตั้ง Libraries ของจอแสดงผลนั้น ๆ ด้วย จอแสดงผลแบบ OLED ที่นิยมใช้มีทั้งขนาดมี ตั้งแต่ขนาด 0.96 นิ้วและ 1.3 นิ้ว ให้สีขาว สีน้ำเงิน สีเหลืองน้ำเงิน สมรรถนะประจำหน่วย 1. แสดงความรู้เกี่ยวกับการแสดงผลที่หน้าจอคอมพิวเตอร์ด้วย Software serial 2. แสดงความรู้เกี่ยวกับการแสดงผลด้วยจอ Character LCD 3. แสดงความรู้เกี่ยวกับการแสดงผลด้วยจอ TFT LCD 4. แสดงความรู้เกี่ยวกับการแสดงผลด้วยจอ OLED 5. เขียนโปรแกรมและแก้ไขโปรแกรมภาษา C ที่เกี่ยวข้องกับการแสดงผลที่หน้าจอคอมพิวเตอร์ด้วย Software serial, Character LCD, TFT LCD และ OLED จุดประสงค์การเรียนรู้ประจำหน่วย จุดประสงค์ทั่วไป 1. เพื่อให้นักเรียนอธิบายการทำงานของการแสดงผลที่หน้าจอคอมพิวเตอร์ 2. เพื่อให้นักเรียนอธิบายฟังก์ชันที่ใช้งาน Software serial 3. เพื่อให้นักเรียนอธิบายโครงสร้างของ Character LCD 4. เพื่อให้นักเรียนต่อวงจรจอ Character LCD


84 5. เพื่อให้นักเรียนเขียนโปรแกรมเพื่อใช้งานจอ character LCD การเชื่อมต่อแบบ I2C 6. เพื่อให้นักเรียนเขียนโปรแกรมเพื่อใช้งาน character LCD 7. เพื่อให้นักเรียนอธิบายการใช้งานจอแสดงผลชนิด TFT LCD 8. เพื่อให้นักเรียนเขียนโปรแกรมเพื่อใช้งาน TFT LCD 9. เพื่อให้นักเรียนอธิบายการใช้งานจอแสดงผลชนิด OLED 10. เพื่อให้นักเรียนเขียนโปรแกรมเพื่อมใช้งานจอ OLED จุดประสงค์เชิงพฤติกรรม 1. อธิบายการทำงานของการแสดงผลที่หน้าจอคอมพิวเตอร์ 2. อธิบายฟังก์ชันที่ใช้งาน Software serial 3. อธิบายโครงสร้างของ Character LCD 4. ต่อวงจรจอ Character LCD 5. เขียนโปรแกรมเพื่อใช้งานจอ character LCD การเชื่อมต่อแบบ I2C 6. เขียนโปรแกรมเพื่อใช้งาน character LCD 7. อธิบายการใช้งานจอแสดงผลชนิด TFT LCD 8. เขียนโปรแกรมเพื่อใช้งาน TFT LCD 9. อธิบายการใช้งานจอแสดงผลชนิด OLED 10. เขียนโปรแกรมเพื่อมใช้งานจอ OLED


85 กิจกรรมการเรียนรู้ ขั้นตอนการสอน (กิจกรรมของครู) ขั้นตอนการเรียน (กิจกรรมผู้เรียน) เครื่องมือ/การวัดผล ประเมินผล 1.ขั้นนำเข้าสู่บทเรียน 1.1 ครูบอกจุดประสงค์ของการเรียนใน บทเรียนนี้ 1.2 ครูเปิดประเด็นคำถามเกี่ยวกับ จอแสดงผลสำหรับใช้งานร่วมกับ บอร์ดArduino 1.1 นักเรียนรับฟังจุดประสงค์ของการ เรียนในบทเรียนนี้ 1.2 นักเรียนตอบคำถามจอแสดงผลสำหรับใช้ งานร่วมกับ บอร์ดArduino 1. คำถามประจำหน่วย - การตอบคำถามแบบสุ่มถามเพื่อ กระตุ้นผู้เรียน 2. ขั้นสอนทฤษฎี 2.1 ครูอธิบายการควบคุมการทำงาน ของอินพุตและ เอาต์พุต 2.2 ซักถามปัญหาเกี่ยวกับจอแสดงผล สำหรับใช้งานร่วมกับ บอร์ดArduino 2.1 รับฟังคำบรรยาย 2.2 ตอบคำถามและแสดงความคิดเห็น 1.สื่อนำเสนอ Canva หน่วยที่ 6 2. คำถามหน่วยที่ 6 3. ขั้นสรุป 3.1 ครูและนักเรียนช่วยกันสรุปและ ครูซักถามปัญหาข้อสงสัย 3.1 นักเรียนช่วยครูสรุปและตอบคำถาม 3.2 จดบททึกย่อ 1. ใบสรุปหน่วยที่ 6 4. ขั้นสอนปฏิบัติ 4.1 ครูสาธิตเขียนโปรแกรมเกี่ยวกับ จอแสดงผลสำหรับใช้งานร่วมกับ บอร์ด Arduino 4.1 นักเรียนปฏิบัติตาม 1. สังเกตและสอบถาม 5. ขั้นการประเมินผล 5.1 ครูแจกใบประเมินผลหลังเรียน หน่วยที่ 6 5.2 ดูแลนักเรียนไม่ให้ทุจริต 5.3 เมื่อครบเวลาที่กำหนดรับ แบบทดสอบคืน 5.1 รับใบประเมินผลหลังเรียนหน่วยที่ 6 5.2 ทำแบบทดสอบหลังเรียน 5.3 เมื่อครบเวลาที่กำหนดส่งแบบทดสอบคืน 1. แบบทดสอบหลังเรียน หน่วยที่ 6 6. ขั้นมอบหมายงาน 6.1 ให้นักเรียนไปค้นคว้าเพิ่มเติม เกี่ยวกับจอแสดงผลสำหรับใช้งาน ร่วมกับ บอร์ดArduino 6.1 รับมอบหมายงาน 1. ใบมอบงานหน่วยที่ 6 7. ขั้นตรวจสอบความเรียบร้อย 7.1 ตรวจความเรียบร้อยและความ เรียบร้อยของห้องเรียนห้องปฏิบัติงาน 7.1 ช่วยกันจัดเก็บและทำความสะอาด ห้องเรียนห้องปฏิบัติงานให้เรียบร้อย 1.ใบตรวจสอบความ เรียบร้อย


86 สื่อการเรียนรู้และแหล่งการเรียนรู้ สื่อสิ่งพิมพ์ - สุชิน ชินสีห์(2563). ไมโครคอนโทรลเลอร์. นนทบุรี : โรงพิมพ์ บริษัท ศูนย์หนังสือเมืองไทย จำกัด. สื่ออื่นๆ - สื่อนำเสนอ Canva หลักฐานการเรียนรู้ที่ต้องการ หลักฐานความรู้ ใบงานหน่วยที่ 6 ใบปฏิบัติหน่วยที่ 6 การต่อวงจรและเขียนโปรแกรมควบคุมการทำงาน หลักฐานการปฏิบัติงาน คะแนนใบงานหน่วยที่ 6 คะแนนใบปฏิบัติหน่วยที่ 6 วงจรและเขียนโปรแกรมควบคุมการทำงาน การวัดและประเมินผล การวัดผล (ใช้เครื่องมือ) การประเมินผล (นำผลเทียบกับเกณฑ์และแปลความหมาย) 1. ใบงานหน่วยที่ 6 เกณฑ์ผ่าน 50% 2. ใบปฏิบัติหน่วยที่ 6 เกณฑ์ผ่าน 100% 3. แบบประเมินคุณธรรม จริยธรรม ตามสภาพจริง เกณฑ์ผ่าน 50% การบูรณาการหลักปรัชญาเศรษฐกิจพอเพียงสู่แผนการจัดการเรียนรู้ การถอดรหัสปรัชญาของเศรษฐกิจพอเพียง การพัฒนาโปรแกรมด้วยเทคโนโลยีดอตเน็ต พอประมาณ มีเหตุผล มีภูมิคุ้มกัน - นักศึกษามีความพอประมาณใน การใชอุปกรณการเรียน - นักศึกษาใชเหตุผลในการ ทำกิจกรรม - นักศึกษาทำงานอยางมีระเบียบวินัยในการ เรียนไมกอความวุนวาย เงื่อนไขความรู้ เงื่อนไขคุณธรรม


87 - นักศึกษามีความรูเกี่ยวกับเนื้อหาในบทเรียน - นักศึกษารูจักความรักและความสามัคคีในเพื่อนรวมหอง เวลามีปญหาในการทำงาน - ชวยกันแกไขขอผิดพลาดที่เกิดขึ้นเบื้องตนกอนถาแกไขไม ไดจึงเรียกอาจารย ครอบคลุม 4 มิติ วัตถุ สังคม สิ่งแวดล้อม วัฒนธรรม - สื่อ วัสดุ อุปกรณ์ - แบบทดสอบ - ใบมอบหมายงาน - ใบปฏิบัติงาน - การช่วยเหลือ เพื่อนในกลุ่ม - การแลกเปลี่ยน เรียนรู้ในชั้นเรียน - การร่วมกิจกรรม - รักษาความสะอาด ของห้องเรียน - จัดโต๊ะให้เหมาะสม - ปิดไฟ พัดลม ก่อนออกจากห้อง - อนุรักษ์ สิ่งแวดล้อม - การอยู่ร่วมกัน ในสังคม


88 เนื้อหาสาระ หน่วยที่ 6 ชื่อวิชา การโปรแกรมไมโครคอนโทรลเลอร์เบื้องต้น สอนครั้งที่ 9-10 ชื่อหน่วย จอแสดงผลสำหรับใช้งานร่วมกับบอร์ด Arduino ชั่วโมงรวม 6 ชั่วโมง ชื่อเรื่อง จอแสดงผลสำหรับใช้งานร่วมกับบอร์ด Arduino จำนวน 6 ชั่วโมง หน่วยที่ 6 จอแสดงผลสำหรับใช้งานร่วมกับบอร์ด Arduino การแสดงผลที่หน้าจอคอมพิวเตอร์ การสื่อสารข้อมูลระหว่างบอร์ด Arduino กับไมโครคอมพิวเตอร์นั้น ภายใน Arduino จะมีโมดูลสื่อสาร ข้อมูลอนุกรมที่มาพร้อมกับ Arduino software ที่เรียกว่า UART กำหนดไว้ที่พอร์ต 0 และ 1 ของ Arduino ใช้ใน การเชื่อมต่อกับคอมพิวเตอร์ผ่ายพอร์ต USB เพื่อการอัปโหลดโปรแกรมและการสื่อสารข้อมูลระหว่าง บอร์ด Arduino กับคอมพิวเตอร์ สำหรับไลบารี Software Serial ถูกพัฒนาขึ้นเพื่อจำลองการทำงานของ พอร์ตอนุกรม ทาวฮาร์ดแวร์ด้วยกระบวนการซอฟต์แวร์ ไลบรารี Software Serial ที่ใช้งานมีดังนี้ SoftwareSerial (rxPin,txPin) เป็นฟังก็ชันสำหรับกำหนดขาพอร์ตที่ใช้สำหรับรับส่งข้อมูลของ Software Serial โดย RxPin หมายถึงขาพอร์ตรับข้อมูล และ txPin หมายถึงขาพอร์ตส่งข้อมูล Avaliable() เป็นฟังก์ชันตรวจสอบจำนวนไบต์ของข้อมูลที่อ่านจากพอร์ต Software Serial begin(speed) เป็นฟังก์ชันกำหนดความเร็วในการรับส่งข้อมูล (baud rate) ของ Software Serial ซึ่งมี ค่าความเร็ว 300, 600, 1200, 2400, 4800,9600, 14400, 19200, 28800, 31250,38400,57600 และ 115200 isListening() ฟังก์ชันทดสอบพอร์ตอนุกรมว่ายังคงทำงานอยู่หรือไม่ โดยส่งกลับค่าเป็น boolean True หรือ Fale ฟังก์ชันตรวจสอบ Buffer รับข้อมูลโอเวร์โฟลว์หรือไม่ โดยส่งกลับค่าเป็น boolean peek() เป็นฟังก์ชันอ่านข้อมูลจากบัฟเฟอร์รับข้อมูลตำแหน่งล่าสุด ส่งกลับค่าเป็นตัวอักษร ถ้าหากไม่มี การส่งข้อมูลค่าจะเป็น -1 Read 0 เป็นฟังก์ซันอ่านข้อมูลจาก Buffer รับข้อมูลโดยส่งกลับค่าเป็นตัวอักษร หากไม่ มีการส่ง ข้อมูล print Data0 เป็นฟังก์ชันส่งข้อมูลไปยังขาส่งออกของ Software Serial ด้วยรูปแบบที่กำหนดได้ println (Data) เป็นฟังก์ชันส่งข้อมูลไปที่ขา tx ของ Software Seial ด้วยรูปแบบที่กำหนดได้พร้อม กับ ขึ้นบรรทัดใหม่


89 listen() เป็นฟังก์ชันที่กำหนดให้ Software serial หาพอร์ตที่ต้องการให้ทำงานมีขา SoftwareSerial มากกว่า 1 พอร์ต write (data) เป็นฟังก์ชันสำหรับส่งข้อมูลไปที่ขา Software Serial ด้วยข้อมูลจริงตามที่กำหนดไว้ #include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); void setup() { Serial.begin(9600); while (!Serial) Serial.println("Hi….); mySerial.begin(9600); Serial.println("TEST SoftwareSerial?"); } void loop() { if (mySerial.available()) { Serial.write(mySerial.read()); } if (Serial.available()) { mySerial.write(Serial.read());


90 Serial.println("can Read data"); } }


91 การแสดงผลด้วยจอ Character LCD โครงสร้างและการทำงานของ LCD จอแอลซีดี (LCD : Liquid Crystal Display) เป็นอุปกรณ์ที่ใช้ในการแสดงผล มีหลายชนิด เช่น character LCD เป็นแบบที่แสดงผลเป็นอักขระเพียงอย่างเดียว Graphic LCD เป็นจอ LCD ที่แสดงผลเป็นอักขระรูปภาพหรือ สัญลักษณ์ได้ จอแอลซีดีแบบนี้สามารถแสดงอักขระของภาษาที่กำหนดมาจาก เช่น ภาษาไทย ภาษาอังกฤษ ภาษาจีน เป็นต้น ปกติโครงสร้างของจอ LCD ประกอบขึ้นด้วย แผ่นประกบกันอยู่ โดยเว้นช่องว่างตรงกลางไว้ ไมโครเมตร ถึง 10 ไมโครเมตร ผิวด้านในของแผ่นแก้วจะเคลือบด้วยตัวนำไฟฟ้าชนิดใส เพื่อใช้แสดงตัวอักษร ระหว่างตัวนำไฟฟ้าใสกับผลึกเหลวจะมีชั้นสารที่ทำให้ โมเลกุลของผลึกรวมตัวกันในทิศทางที่แสงส่องมากระทบซึ่ง เรียกว่า Alignment Layer และผลึกเหลวที่ใช้ โดยทั่วไปจะเป็นแบบ Magnetic จอ LCD ชนิด Character LCD ที่นิยมใช้ในงานร่วมกับ MCU คือ ขนาด 16x2, 20x2, 24x2, 20x4 และ 40x4 สำหรับจอ LCD ขนาด 16x2 ที่ สามารถแสดงได้ 16 ตัวอักษร 2 บรรทัด มีตำแหน่งแอสเดรสและโครงสร้างภายนอก จอ character LCD เป็นจอแสดงผลแบบอนาล็อก ที่นิยมใช้ในงานอิเล็กทรอนิกส์ทั่วไป เช่น แสดง ข้อความ ตัวเลข หรือกราฟิก เป็นต้น จอ LCD แต่ละประเภทจะมีการเชื่อมต่อที่แตกต่างกันออกไป ในที่นี้จะ กล่าวถึงการเชื่อมต่อจอ LCD แบบ character กับ Arduino เป็นหลัก การเชื่อมต่อจอ LCD กับ Arduino สามารถแบ่งออกเป็น 2 รูปแบบหลัก ๆ คือ • การเชื่อมต่อแบบขนาน (Parallel) • การเชื่อมต่อแบบอนุกรม (Serial) การเชื่อมต่อแบบขนาน การเชื่อมต่อแบบขนานเป็นการเชื่อมต่อที่ส่งข้อมูลทั้งหมดไปยังจอ LCD พร้อมกัน โดยใช้สายสัญญาณจำนวน 8 เส้น หรือ 4 เส้น ขึ้นอยู่กับคุณสมบัติของจอ LCD แต่ละรุ่น การเชื่อมต่อแบบขนานมีข้อดีคือ ความเร็วในการส่ง ข้อมูลสูง แต่ข้อเสียคือต้องใช้สายสัญญาณจำนวนมากกว่าการเชื่อมต่อแบบอนุกรม การเชื่อมต่อแบบขนานของจอ LCD กับ Arduino มีรายละเอียดดังนี้ • ขา VCC เชื่อมต่อกับขา 5V ของ Arduino


92 • ขา GND เชื่อมต่อกับขา GND ของ Arduino • ขา DB0-DB7 เชื่อมต่อกับขา D0-D7 ของ Arduino (การเชื่อมต่อแบบ 8 บิต) หรือ ขา D4-D7 ของ Arduino (การเชื่อมต่อแบบ 4 บิต) การเชื่อมต่อแบบอนุกรม การเชื่อมต่อแบบอนุกรมเป็นการเชื่อมต่อที่ส่งข้อมูลไปยังจอ LCD ทีละบิต โดยใช้สายสัญญาณเพียง 2 เส้นเท่านั้น การเชื่อมต่อแบบอนุกรมมีข้อดีคือ ใช้สายสัญญาณจำนวนน้อยกว่าการเชื่อมต่อแบบขนาน แต่ข้อเสียคือความเร็ว ในการส่งข้อมูลต่ำกว่าการเชื่อมต่อแบบขนาน การเชื่อมต่อแบบอนุกรมของจอ LCD กับ Arduino มีรายละเอียดดังนี้ • ขา VCC เชื่อมต่อกับขา 5V ของ Arduino • ขา GND เชื่อมต่อกับขา GND ของ Arduino • ขา SDA เชื่อมต่อกับขา A4 ของ Arduino • ขา SCL เชื่อมต่อกับขา A5 ของ Arduino ตัวอย่างการเชื่อมต่อจอ LCD กับ Arduino ตัวอย่างการเชื่อมต่อจอ LCD 1602 แบบขนานกับ Arduino Uno มีดังนี้ จอ LCD 1602 | VCC | GND | DB0 | DB1 | DB2 | DB3 | DB4 | DB5 | DB6 | DB7 | |---|---|---|---|---|---|---|---|---|---| | 5V | GND | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 |


93 ตัวอย่างการเชื่อมต่อจอ LCD 1602 แบบอนุกรมกับ Arduino Uno มีดังนี้ จอ LCD 1602 | VCC | GND | SDA | SCL | |---|---|---|---| | 5V | GND | A4 | A5 | การเขียนโปรแกรมควบคุมจอ LCD หลังจากเชื่อมต่อจอ LCD กับ Arduino เรียบร้อยแล้ว ขั้นตอนต่อไปคือการเขียนโปรแกรมเพื่อควบคุมการทำงาน ต่าง ๆ ของจอ LCD สามารถทำได้โดยใช้ library ของ Arduino ที่ชื่อว่า LiquidCrystal


94 ตัวอย่างการเขียนโปรแกรมแสดงข้อความ "Hello, world!" บนจอ LCD แบบขนาน มีดังนี้ #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // กำหนดขาสัญญาณของจอ LCD void setup() { lcd.begin(16, 2); // กำหนดขนาดของจอ LCD lcd.print("Hello, world!"); // แสดงข้อความ "Hello, world!" } void loop() { } ตัวอย่างการเขียนโปรแกรมแสดงข้อความ "Hello, world!" บนจอ LCD แบบอนุกรม มีดังนี้


95 #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x25, 16, 2); // กำหนดขาสัญญาณของจอ LCD void setup() { lcd.begin(16,2); // กำหนดขนาดของจอ LCD lcd.init(); lcd.backlight(); lcd.clear(); lcd.setCursor(0,0); lcd.print("Hello, world!"); // แสดงข้อความ "Hello, world!" } void loop() {} TFT LCD หรือ Thin-Film Transistor Liquid Crystal Display เป็นจอแสดงผลแบบอนาล็อกที่ ได้รับความนิยมอย่างมากในปัจจุบัน เนื่องจากสามารถแสดงภาพสีสันสดใสและคมชัด TFT LCD แต่ละประเภทจะ มีการเชื่อมต่อที่แตกต่างกันออกไป ในที่นี้จะกล่าวถึงการเชื่อมต่อ TFT LCD สำหรับ Arduino เป็นหลัก การเชื่อมต่อ TFT LCD สำหรับ Arduino สามารถแบ่งออกเป็น 2 รูปแบบหลัก ๆ คือ • การเชื่อมต่อแบบ SPI • การเชื่อมต่อแบบ I²C การเชื่อมต่อแบบ SPI การเชื่อมต่อแบบ SPI เป็นการเชื่อมต่อที่ส่งข้อมูลไปยังจอ LCD ทีละบิต โดยใช้สายสัญญาณเพียง 4 เส้นเท่านั้น การเชื่อมต่อแบบ SPIมีข้อดีคือ ใช้สายสัญญาณจำนวนน้อยกว่าการเชื่อมต่อแบบ I²C แต่ข้อเสียคือความเร็วในการ ส่งข้อมูลต่ำกว่าการเชื่อมต่อแบบ I²C การเชื่อมต่อแบบ SPI ของ TFT LCD สำหรับ Arduino มีรายละเอียดดังนี้ • ขา VCC เชื่อมต่อกับขา 5V ของ Arduino


Click to View FlipBook Version