Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore ວິຊາ ไมโครคอนโทรลเลอร์และการประยุกต์

ວິຊາ ไมโครคอนโทรลเลอร์และการประยุกต์

Published by lavanh5579, 2021-08-24 08:41:58

Description: ວິຊາ ไมโครคอนโทรลเลอร์และการประยุกต์

Search

Read the Text Version

430 4. ปรับแกวงจรโดยสลับชนดิ ของแอลอีดี 7 สว นจากคอมมอนแคโทดเปน แบบคอมมอนแอโนด และ ทดสอบเขียนโปรแกรมใหผลทำงานเปน ไปในลักษณะเดมิ 5. สรุป ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………

ใบงานท่ี 4 เร่ือง การควบคุมหลอดแอลอดี แี บบ วชิ า ไมโครคอนโทรลเลอรและการประยกุ ตใชงาน เมตรกิ ซ ชื่อ – สกลุ …………………………………………… รหสั นักศึกษา……………………………………………….. ชอื่ – สกลุ ………………………………………….. รหัสนกั ศกึ ษา……………………………………………….. ชอื่ – สกุล ………………………………………….. รหัสนักศึกษา……………………………………………….. วตั ถปุ ระสงค เพ่อื ใหผเู รียนมีความรแู ละทักษะดังนี้ 1. เพอื่ เรียนรูตำแหนง ขาบนบอรด Arduino Uno R3 ทสี่ ามารถเชอื่ มตอกบั แอลอีดแี บบ เมตรกิ ซได 2. เพ่อื เรยี นรูการเขยี นโปรแกรมโดยใช Arduino IDE เพ่ือควบคุมแอลอีดแี บบเมตริกซ 3. เพอื่ ใชโปรแกรม Proteus ในการจำลองพฤติกรรมการทำงานของวงจรทดลอง ทฤษฎี แอลอีดีแบบเมตริกซคือ การนำหลอดแอลอีดีมาวางเรียงตอกันแบบเมตริกซทำใหสามารถ แสดงผลออกมาเปนตัวเลข ตัวอักษร หรือแมแตรูปภาพได ซึ่งจะแสดงผลไดละเอียดและหลากหลาย กวาแอลอีดี 7 สวนเนื่องจากมีจำนวนหลอดแอลอีดีที่มากกวา โดยใชไมโครคอนโทรลเลอรรวมกับ อปุ กรณด โี คด เดอรแ ละไดฟเวอรมาควบคุมการทำงาน ตวั อยา งของการนำไปใชงานเชน บอรดโฆษณา หรือ บอรด ประชาสมั พนั ธต างๆ เปนตน รูปที่ 1 ตวั อยางและโครงสรางของแอลอดี ีแบบเมตริกซขนาด 8x8 ทีม่ า: ทมี งานสมารทเลิรนน่ิง, 2553

432 แอลอีดีแบบเมตริกซขนาด 8 x 8 มีหลอดแอลอีดีตอรวมกัน 64 ตัว ดังนั้นหากตองการให หลอดแอลอีดี มีการทำงานอิสระตอกันตองใชสัญญาณควบคุมทั้งหมด 64 เสน ซึ่งเปนการใชจำนวน พอรตมากเกินความจำเปน เพราะฉะนั้นจึงตอใชงานในลักษณะแบบวงจรแบบรวมแถว (Common row และแบบรวม คอลัมน (Common column ทำใหใชสายสัญญาณเพียง ใชสายสัญญาณ 16 เสน (แถว 8 เสน และ หลัก 8 เสน รูปที่ 2 วงจรสำหรับการทดลอง ทม่ี า: ผเู ขยี น ขั้นตอนการทดลอง 1. ออกแบบวงจรเพื่อใชในการแสดงการติด – ดับ ของแอลอีดีแบบเมตริกซเพื่อใหแสดงรูปดังน้ี “” 2. เขยี นโปรแกรมเพ่อื ใหเ กดิ ผลลัพธ ดังท่กี ลา วไวในขนั้ ตอนที่ 1 3. สังเกตและอธิบายสว นของโปรแกรมทีเ่ ขยี นข้นึ อยา งละเอียด คำอธิบาย ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… 4. ปรับแกโ ปรแกรมเพ่อื ปรบั รูปแบบการแสดงผลเปน ดงั น้ี “”

433 5. สรปุ ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………

ใบงานที่ 5 เรื่อง การรับขอมูลจากอุปกรณรบั ขอมูล วชิ า ไมโครคอนโทรลเลอรและการประยกุ ตใชงาน แบบเมตริกซ ชือ่ – สกุล …………………………………………… รหสั นักศกึ ษา……………………………………………….. ชื่อ – สกลุ ………………………………………….. รหัสนกั ศกึ ษา……………………………………………….. ช่ือ – สกุล ………………………………………….. รหสั นกั ศึกษา……………………………………………….. วตั ถปุ ระสงค เพอ่ื ใหผ ูเรียนมีความรูแ ละทักษะดงั นี้ 1. เพื่อเรยี นรตู ำแหนง ขาบนบอรด Arduino Uno R3 ทสี่ ามารถเช่ือมตอกับอุปกรณร ับ ขอมูลแบบเมตริกซไ ด 2. เพอ่ื เรียนรูการเขยี นโปรแกรมรับขอ มลู จากอปุ กรณร บั ขอมูลแบบเมตริกซสูบ อรด Arduino 3. เพ่ือใชโ ปรแกรม Proteus ในการจำลองพฤติกรรมการทำงานของวงจรทดลอง ทฤษฎี การใชสวิตซเปนอุปกรณอินพุต โดยทั่วไปนิยมตอสวิตซเขาไปยังตำแหนงขาของบอรด Arduino โดยตรง โดยที่ สวิตซ 1 ตัวใชขาของบอรดจำนวน 1 ขาเพราะฉะนั้นหากตองการใชสวิตซ จำนวนมากกจ็ ำเปน ตองใชขาของบอรด มากขึ้นตามไปดวย และอาจจะทำใหไมเพียงพอตอการใชงาน การนำสวิตซมาตอใชงานในลักษณะเมตริกซ ซึ่งมีการตอวงจรในลักษณะแถว และคอลัมน โดยมีจำนวนสวิตซทั้งหมดเทากบั จำนวนแถวคูณดว ยจำนวนคอลัมน ทำใหประหยัดการใชง านขาของ บอรด Arduino ไดเปนอยางมาก เชน เมตริกซขนาด 4 แถว 4 คอลัมน สามารถรับสวิตซไดทั้งหมด 4x4 เทากบั 16 ตัว โดยใชขาของพอรต เพียง 8 ขาเทา นนั้

436 รปู ท่ี 1 อุปกรณรบั ขอ มูลแบบเมตรกิ ซ ทม่ี า: ผเู ขียน การตรวจสอบการกดเมตริกซสวติ ซ - สง สัญญาณออกไปที่สายสัญญาณแถวท่ี n - ตรวจสอบสายสญั ญาณของคอลมั นท ัง้ หมดในแถวที่ n วา สญั ญาณไหนเปน ลอจิก 0 ซ่ึงเปน ตำแหนงของปมุ กด ไลบรารีสำหรบั อุปกรณรับขอ มูลแบบเมตรกิ ซ เนื่องจากโปรแกรม Arduino IDE มีไลบรารีสำหรับควบคุมการทำงานของแอลอีดีแบบ เมตริกซแลว ดังนั้นผูใชงานสามารถเรียกใชงานฟงกชันทั้งหมดที่อยูภายในไลบรารีดังกลาวนี้ได โดย จำเปนตองดาวโหลดไลบรารีจาก “http://playground.arduino.cc/Code/Keypad” โดยการใช งานไลบรารดี ังกลา วน้ีจำเปน ตองสรา งออปเจคสำหรับคลาส Keypad ขน้ึ มากอ นซึ่งมีรูปแบบดังนี้ รูปแบบ Keypad ชอื่ ตวั แปร (อ็อบเจค) = Keypad(makeKeymap(keys), int[] rowPins, int[] colPins, int ROWS, int COLS ) ความหมาย เปนคำสง่ั ทีใ่ ชใ นการกำหนดใหตำแหนง ของตัวอกั ษรของตัวแปร keys ที่เปนตัวแปรแบบ อารเรยมีคาตรงกับตำแหนงของ keypad ที่ถูกเชื่อมตอกับวงจรทดลองโดยตองสรางอ็อบเจคสำหรบั คลาส Keypad เพ่อื เกบ็ คาดังกลา ว พารามเิ ตอร 1.1 makeKeymap(keys) คือสั่งใหตัวแปร keys ซึ่งเก็บชื่อตัวอักษรของแตละตำแหนง มีคา ตรงตามแถวและคอลัมนของ keypad 1.2 rowPins คอื ตำแหนงขาของวงจรทดลองทเ่ี ช่ือมตอกับแถวของ keypad ท้ังหมด

437 1.3 colPins คือ ตำแหนงขาของวงจรทดลองทเ่ี ชอ่ื มตอ กับคอลมั นของ keypad ท้งั หมด 1.4 ROWs คอื จำนวนแถวของ keypad 1.5 Cols คือ จำนวนคอลัมนของ keypad หลังจากสรางตัวแปรสำหรับคลาสแลวจะสามารถเรียกใชงานคำสั่งของคลาสดังกลาวนี้ได โดยมีเมธอดที่สำคญั คือ getkey() ซงึ่ จะคืนคาเปน ตวั อักขระที่ตรงตามตำแหนงบน keypad รูปท่ี 2 วงจรสำหรบั การทดลอง ที่มา: ผเู ขียน ข้ันตอนการทดลอง 1. ออกแบบวงจรเพือ่ ใช keypad สำหรับควบคุมแอลอดี ี 7 สวน เพ่อื ใหท ำงานเปนดงั น้ี กด “1” สวน a มสี ถานะ “ติด” เพียงสวนเดยี ว กด “2” สว น b มีสถานะ “ตดิ ” เพียงสวนเดยี ว กด “3” สวน c มีสถานะ “ตดิ ” เพยี งสวนเดียว กด “4” สว น d มีสถานะ “ตดิ ” เพียงสวนเดยี ว กด “5” สว น e มีสถานะ “ติด” เพียงสวนเดยี ว กด “6” สว น f มสี ถานะ “ตดิ ” เพยี งสวนเดยี ว 2. เขยี นโปรแกรมเพือ่ ใหเ กดิ ผลลพั ธ ดังทกี่ ลา วไวในขนั้ ตอนที่ 1 3. สงั เกตและอธบิ ายสว นของโปรแกรมท่ีเขยี นขึ้นอยางละเอียด

438 คำอธิบาย ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… 4. ปรับแกโ ปรแกรมใหมใ หผลทำงานเปนดงั นี้ กด “7” สวน f มสี ถานะ “ติด” เพียงสว นเดียว กด “8” สวน e มสี ถานะ “ติด” เพียงสว นเดยี ว กด “9” สว น d มีสถานะ “ตดิ ” เพยี งสว นเดยี ว กด “*” สว น c มสี ถานะ “ตดิ ” เพยี งสวนเดยี ว กด “0” สวน b มสี ถานะ “ตดิ ” เพยี งสว นเดียว กด “#” สวน a มีสถานะ “ติด” เพยี งสวนเดยี ว 5. สรุป ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………

ใบงานท่ี 6 เร่ือง การควบคมุ แอลซดี ี วิชา ไมโครคอนโทรลเลอรแ ละการประยุกตใชง าน ชื่อ – สกลุ …………………………………………… รหัสนักศกึ ษา……………………………………………….. ชื่อ – สกลุ ………………………………………….. ชื่อ – สกลุ ………………………………………….. รหสั นกั ศึกษา……………………………………………….. รหัสนักศึกษา……………………………………………….. วัตถปุ ระสงค เพอ่ื ใหผเู รียนมคี วามรูและทักษะดงั น้ี 1. เพ่อื เรียนรตู ำแหนงขาบนบอรด Arduino Uno R3 ท่สี ามารถเชอ่ื มตอแอลซีดี 2. เพ่ือเรยี นรูการเขียนโปรแกรมเพอ่ื ควบคุมการทำงานแอลซีดี 3. เพื่อใชโปรแกรม Proteus ในการจำลองพฤติกรรมการทำงานของวงจรทดลอง ทฤษฎี แอลซีดี คือคำยอมาจาก Liquid Crystal Display (LCD เปนจอแสดงผลแบบดิจิทัลที่ สามารถแสดงผลไดทั้งตัวเลข ตัวอักษร และภาพกราฟฟก โดยภาพที่แสดงออกมาจะเกิดจากแสงที่ ปลอยออกมาจากหลอดไฟดานหลังของจอผานชั้นกรองแสง แลววิ่งไปยังคริสตัลเหลวที่เรียงตัวดวย เซลล 3 เซลล ในการเลือกใชงานจะเลอื กตามขนาดตัวอักษรและบรรทัด เชน LCD 16 x 1 Line: จอ LCD ขนาด 16 ตัวอักษร 1 บรรทัด, LCD 20 x 2 Line: จอ LCD ขนาด 20 ตัวอักษร 2 บรรทัด, LCD 16 x 2 : จอ LCD ขนาด 16 ตัวอักษร 2 บรรทัด เปนตน โดยที่สำหรับ LCD ที่มีขายตามทองตลาด ประกอบไปดวย LCD 16 x 1 Line, LCD 16 x 2 Line, LCD 20 x 2 Line และ LCD 20 x 4 Line เปนตน รูปที่ 1 แอลซดี ี ที่มา: ผเู ขียน

440 การควบคุมการทำงานของแอลซีดีสามารถทำได 2 วิธีคือ การสงขอมูลจากบอรทดลองไปยัง แอลซีดี 4 บิต (โหมด 4 บิต) ซึ่งจะใชสายสัญญาณเพียง 4 เสนระหวางวงจรทดลองและขาสญั ญาณที่ ตำแหนง D4 – D7 และการสง ขอมูลจากบอรทดลองไปยังแอลซีดี 8 บิต (โหมด 8 บิต) ซึ่งจำเปนตอง ใชสายสัญญาณทั้งหมด 8 เสน สำหรับวิธีการควบคุมการทำงานจะคลายคลึงกันเพียงแตจะมีความ แตกตางกันตรงที่โหมด 8 บิตจะรับ-สงขอมูลไดเร็วกวา 4 บิต อยางไรก็ตามถึงแมจะรับ-สงขอมูลได เรว็ กวาโหมด 4 บติ แตจ ากความเร็วในการรับสงท่ีแตกตา งกนั ไมมาก และโหมด 4 บิตยังคงสามารถ แสดงผลไดทนั จากการสังเกตดวยสายตามนุษย ดังน้นั โหมด 4 บิตท่ีซง่ึ ใชสายสัญาณนอยกวาจึงเปนที่ นิยมมากกวา โปรแกรม Arduino IDE มีไลบรารีชื่อ “LiquidCrystal” ซึ่งเปนไลบรารีสำหรับควบคุมการ ทำงานแอลซีดีผานการเรียกใชฟงกชันภายในไลบรารีดังกลาว จึงชวยใหการเขียนโปรแกรมควบคุม การทำงานแอลซีดีทำไดงายขึ้นโดยฟงกชันที่สำคัญเชน LiquidCrystal() เปนฟงกชันที่ใชสำหรับ กำหนดขาของการเชื่อมตอระหวางแอลซีดี และวงจรทดลอง ซึ่งเปนฟงกชันแรกที่จำเปนตองถูก ประกาศใชงานเพือ่ ใหสามารถเรยี กใชง านฟงกชันอื่นในไลบรารี LiquidCrystal, ฟง กชนั begin() เปน ฟงกชันที่ใชสำหรับกำหนดอินเตอรเฟสสำหรับการใชงานแอลซีดี ซึ่งควรจะตองตรงกับคุณลักษณะ ของแอลซีดีท่ถี กู นำมาใชง าน, ฟงกชนั print() เปน ฟง กชันท่ใี ชส ำหรบั แสดงขอความทแ่ี อลซีดี, ฟงกชัน setCursor() เปน ฟงกชนั ที่ใชส ำหรบั กำหนดตำแหนงของเคอรเซอรเพ่ือเปน ตำแหนง ทจ่ี ะแสดงตัวขระ , ฟงกชัน cursor() เปนฟงกชันที่ใชสำหรับกำหนดใหเปดการแสดงเคอรเซอรแบบติดนิ่ง, ฟงกชัน noCursor() เปนฟงกชันที่ใชสำหรับกำหนดใหปดการแสดงเคอรเซอรแบบติดนิ่ง, ฟงกชัน blink() เปนฟงกชันที่ใชสำหรับกำหนดใหเปดการแสดงเคอรเซอรแบบบล็อคติดกระพรบิ , ฟงกชัน noBlink() เปนฟงกชันที่ใชสำหรับกำหนดใหปดการแสดงเคอรเซอรแบบบล็อคติดกระพริบ, ฟงกชัน home() เปนฟงกชันที่ใชสำหรับกำหนดเคอรเซอรกลับไปอยูตำแหนงเริ่มตน (ตำแหนงบนทางดานซาย , ฟงกชัน leftToRight() เปนฟงกชันที่ใชสำหรับการเลื่อนเคอรเซอรไปทางขวา โดยหากมีการใชคำสั่ง การแสดงผลจะแสดงผลตำแหนงแรกตรงกับตำแหนงปจจุบันของเคอรเซอร และ ฟงกชัน rightToLeft() เปนฟงกชันที่ใชสำหรับการเลื่อนเคอรเซอรไปทางซาย โดยหากมีการใชคำสั่งการ แสดงผลจะแสดงผลตำแหนง แรกตรงกับตำแหนงปจจบุ ันของเคอรเ ซอร

441 รูปท่ี 2 วงจรสำหรับการทดลอง ท่มี า: ผเู ขยี น ขนั้ ตอนการทดลอง 1. ออกแบบวงจรเพอื่ ควบคุมจอแอลซีดีเพื่อใหทำงานเปนดงั น้ี บรรทดั บน: “Hello” บรรทัดลา ง: “Arduino” 2. เขยี นโปรแกรมเพื่อใหเ กดิ ผลลพั ธ ดังท่กี ลา วไวใ นขน้ั ตอนที่ 1 3. สงั เกตและอธบิ ายสว นของโปรแกรมท่เี ขยี นขนึ้ อยา งละเอยี ด คำอธิบาย ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… 4. ปรบั แกโปรแกรมใหมโ ดยใหแสดงเคอรเซอรต ดิ แบบกระพริบท่บี รรทัดที่สองหลังขอ ความ “Arduino” 5. สรุป ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………

ใบงานที่ 7 เร่อื ง การควบคุมดีซีมอเตอร วชิ า ไมโครคอนโทรลเลอรและการประยกุ ตใ ชงาน ชือ่ – สกลุ …………………………………………… รหัสนักศึกษา……………………………………………….. ชอื่ – สกลุ ………………………………………….. ช่อื – สกุล ………………………………………….. รหสั นกั ศกึ ษา……………………………………………….. รหัสนกั ศึกษา……………………………………………….. วัตถุประสงค เพื่อใหผเู รียนมีความรแู ละทักษะดังนี้ 1. เพื่อเรียนรูตำแหนง ขาบนบอรด Arduino Uno R3 ท่ีสามารถเช่อื มตอดซี ีมอเตอร 2. เพอ่ื เรยี นรูการเขียนโปรแกรมเพือ่ ควบคมุ การทำงานดซี ีมอเตอร 3. เพอ่ื ใชโ ปรแกรม Proteus ในการจำลองพฤติกรรมการทำงานของวงจรทดลอง ทฤษฎี มอเตอรดีซี (DC Motor คือมอเตอรกระแสตรงที่กินกระแสไฟเลี้ยงสูง โดยตองใชแรงดัน อยา งนอย 12 โวลตซึ่งขน้ึ อยกู ับขนาดของมอเตอร มอเตอรดีซีมีขาสำหรับตอใชงานทั้งหมด 2 ขา โดยวิธีการควบคุมใหมอเตอรหมุนคือจาย ไฟฟากระแสตรงเขาขาขางหนึ่ง สวนขาอีกขางจะถูกตอกราวดเพื่อใหเกิดความตางศักยระหวางข้ัว มอเตอรจึงสงผลใหเ กดิ การหมุนของมอเตอรขึ้น ในทางกลับกันหากสลบั ตำแหนง การเชอ่ื มตอท่ีขาของ มอเตอรค ือจายไฟฟากระแสตรงท่ีขาอีกขาง (ขาทีต่ อกราวด และสลบั ขาที่ถูกตอกับไฟฟากระแสตรง มาตอกราวดสงผลใหมอเตอรหมุนในทิศทางตรงกันขาม อยางไรก็ตามหากเชื่อมตอสัญญาณลักษณะ เดียวกนั กับท้ัง 2 ขาของมอเตอร เชน ตอขาทัง้ สองขางลงกราวด หรือตอไฟฟากระแสตรงที่ขาท้ังสอง ของมอเตอรดีซี จะไมม ีการหมุนเกดิ ขึ้น รูปที่ 1 มอเตอรด ซี ีในโปรแกรม Proteus ทีม่ า: ผเู ขยี น

444 เนื่องจากมอเตอรทุกประเภทเปนอุปกรณที่กินกระแสที่สูง ดังนั้นจำเปนตองใชอุปกรณขับ (Driver เพื่อใชสำหรับจายแรงดัน และกระแสที่สูงได โดยการสรางอุปกรณขับมีหลากหลายวิธี เชน ใชวงจรทรานซิสเตอร หรือ ใชไอซีสำเร็จรูป เปนตน สำหรับการทดลองนี้เลือกไอซีเบอร ULN2003A ซึ่งเปนไอซสี ำเรจ็ รปู สำหรับเพิม่ แรงดนั และกระแสแกม อเตอร รปู ท่ี 2 ไอซีเบอร ULN2003A ทม่ี า: Omar, Shahnawaz & Zainulabideen, 2012 รูปที่ 3 ไอซีเบอร ULN2003A ในโปรแกรม Proteus ทมี่ า: ผเู ขยี น รูปที่ 3 แสดงตัวอยางไอซีเบอร ULN2003A ในโปรแกรม Proteus ซึ่งสามารถคนหาไดโดย ใชค ำคน “ULN2003A” นอกเหนือจากไอซี ULN2003A ซึ่งใชสำหรับขับกระแสและแรงดันแลว อุปกรณ อิเล็กทรอนิกสอีกชนิดหนึ่งที่จำเปนตองถูกนำมาใชสำหรับควบคุมการทำงานของมอเตอรคือ รีเลย (Relay ซ่ึงเปน อปุ กรณไ ฟฟา ที่ทำหนาที่สำหรบั เปลย่ี นพลังงานไฟฟา เปนพลังงานแมเ หลก็ ซง่ึ สามารถ นำมาใชสำหรบั การเปด – ปดหนาสมั ผสั สำหรับวงจรของมอเตอร

445 รูปที่ 4 รีเลย ท่ีมา: ผูเขยี น รปู ที่ 5 รเี ลยใ นโปรแกรม Proteus ท่มี า: ผูเขยี น รูปท่ี 6 วงจรสำหรับการทดลอง ทีม่ า: ผูเ ขยี น

446 ข้ันตอนการทดลอง 1. ออกแบบวงจรเพ่ือควบคุมการหมุนของดีซีมอเตอร 2. เขยี นโปรแกรมเพอ่ื ใหเกดิ ผลลพั ธ ดงั ทกี่ ลา วไวใ นขน้ั ตอนท่ี 1 3. สังเกตและอธบิ ายสว นของโปรแกรมทเ่ี ขยี นข้นึ อยางละเอียด คำอธิบาย ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… 4. ปรบั แกโ ปรแกรมใหมโดยสลบั โหมดการทำงานของตำแหนง ขาทั้งสองทเ่ี ชื่อมตอกบั ดีซีมอเตอร 5. สรุป ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………

ใบงานที่ 8 เรือ่ ง การควบคมุ สเต็ปมอเตอร วิชา ไมโครคอนโทรลเลอรและการประยุกตใ ชงาน ชือ่ – สกุล …………………………………………… รหัสนกั ศกึ ษา……………………………………………….. ชื่อ – สกุล ………………………………………….. ชื่อ – สกุล ………………………………………….. รหัสนักศกึ ษา……………………………………………….. รหัสนกั ศกึ ษา……………………………………………….. วัตถุประสงค เพ่ือใหผ ูเรียนมีความรูและทักษะดงั นี้ 1. เพอ่ื เรียนรูตำแหนงขาบนบอรด Arduino Uno R3 ท่สี ามารถเชอื่ มตอสเตป็ มอเตอร 2. เพือ่ เรยี นรูการเขยี นโปรแกรมเพ่อื ควบคุมการทำงานสเตป็ มอเตอร 3. เพือ่ ใชโปรแกรม Proteus ในการจำลองพฤติกรรมการทำงานของวงจรทดลอง ทฤษฎี สเต็ปมอเตอร (Stepping Motor คือมอเตอรทสี่ ามารถควบคุมจงั หวะ และทิศทางการหมุน ได โดยสเต็ปมอเตอรจะหมุนตามจังหวะ ดังนั้นผูใชงานสามารถควบคุมมุมองศาของการหมุนของ สเตป็ มอเตอรไ ด โดยทั่วไปสเต็ปมอเตอรจะเปนแบบชนิด 4 เฟส และมีขดลวดอยู 2 ชุด ซึ่งแตละชุดจะถูก แบงเปน ชดุ ละ 2 เฟส นอกเหนือจากนัน้ ขดลวดแตล ะชดุ จะมีจดุ รวมอยู 1 จดุ ดงั นั้นสเต็ปมอเตอรจึงมี สายสัญญาณทั้งหมด 6 เสน อยางไรก็ตามสเต็ปมอเตอรบางประเภทอาจมีสายสัญญาณเพียง 5 เสน เนอ่ื งจากมกี ารนำจดุ รว มมาเชื่อมตอ กนั รูปที่ 1 สเตป็ มอเตอรใ นโปรแกรม Proteus ทมี่ า: ผูเขียน

448 การควบคมุ สเต็ปมอเตอรแบบ 1 เฟส การควบคุมสเต็ปมอเตอรแบบ 1 เฟสคือการควบคุมขดลวดทีละ 1 ขดตอ การหมนุ 1 จังหวะ โดยเรม่ิ จากควบคมุ ขดลวดขดท่ี 1 โดยการสง สัญญาณสถานะ “HIGH” ไปท่ีตำแหนง ขดลวดท่ี 1 และ สงสัญญาณสถานะ “LOW” ไปยังขดลวดอื่นๆ ทั้งหมด ในจังหวะถัดไปจะเปลี่ยนมาควบขดลวดที่ 2 โดยสงสถานะ “HIGH” ไปตำแหนงขดลวดที่ 2 และสงสัญญาณสถานะ “LOW” ไปยังขดลวดอื่นๆ และจังหวะถัดไปเปนการควบคุมขดลวดที่ 3 และ 4 ตามลำดับ ซึ่งตารางที่ 1 แสดงการควบคุม สเตป็ มอเตอรแบบ 1 เฟส ตารางที่ 1 การควบคุมจังหวะการหมุนของสเต็ปมอเตอรแบบ 1 เฟส จงั หวะที่ ขดลวดที่ 4 ขดลวดท่ี 3 ขดลวดที่ 2 ขดลวดท่ี 1 1 0 0 0 1 2 0 0 1 0 3 0 1 0 0 4 1 0 0 0 การควบคุมสเต็ปมอเตอรแ บบ 2 เฟส การควบคุมสเต็ปมอเตอรแบบ 2 เฟส จะมีรูปแบบการควบคุมจังหวะการหมุนคือแตละ จังหวะของการหมนุ จะตองควบคุมขดลวดทีละ 2 ขดท่อี ยตู ิดกัน และการควบคุมจังหวะถัดไปคือขวบ คุมขดลวดตำแหนง ท่ี 2 ทถ่ี ูกควบคมุ ในจังหวะกอนหนา และขดลวดตำแหนงท่ตี ดิ กนั กับตำแหนง ตารางท่ี 2 การควบคุมจังหวะการหมนุ ของสเตป็ มอเตอรแบบ 2 เฟส จังหวะท่ี ขดลวดที่ 4 ขดลวดที่ 3 ขดลวดที่ 2 ขดลวดท่ี 1 1 0 0 1 1 2 0 1 1 0 3 1 1 0 0 4 1 0 0 1

449 การควบคุมสเต็ปมอเตอรแบบคร่ึงสเต็ป การควบคุมสเต็ปมอเตอรแบบครึ่งสเต็ป เกิดจากการขับสเต็ปมอเตอรแบบผสมระหวางการ ควบคุมสเต็ปมอเตอรแบบ 1 เฟส และการควบคมุ สเต็ปมอเตอรแบบ 2 เฟส โดยจังหวะที่ 1 ของการ ควบคุมจังหวะการหมุนของสเต็ปมอเตอรคือการควบคุมขดลวดขดที่ 1 เพียงตัวเดียว (แบบ 1 เฟส ในจังหวะถัดไปคือการควบคุมขดลวด 2 ตัวคือขดลวดที่ 1 และ 2 (แบบ 2 เฟส และจังหวะที่ 3 จะ กลบั มาควบคุมแบบ 1 เฟส ตารางท่ี 3 การควบคมุ จงั หวะการหมุนของสเต็ปมอเตอรแบบครึ่งสเตป็ จงั หวะท่ี ขดลวดที่ 4 ขดลวดที่ 3 ขดลวดท่ี 2 ขดลวดที่ 1 1 0 0 0 1 2 0 0 1 1 3 0 0 1 0 4 0 1 1 0 5 0 1 0 0 6 1 1 0 0 7 1 0 0 0 8 1 0 0 1 รปู ที่ 2 วงจรสำหรับการทดลอง ที่มา: ผูเขียน

450 ขัน้ ตอนการทดลอง 1. ออกแบบวงจรเพื่อควบคุมการหมุนของสเต็ปมอเตอรจังหวะละ 18 องศาจำนวน 2 รอบโดยใช วธิ กี ารควบคุมแบบ 1 เฟส การปรับจังหวะการหมุนของสเต็ปมอเตอรสามารถทำไดโดยเลือก Edit Component -> Step Angle ในโปรแกรม Proteus 2. เขยี นโปรแกรมเพอ่ื ใหเ กิดผลลพั ธ ดังท่ีกลาวไวในขน้ั ตอนท่ี 1 3. สงั เกตและอธบิ ายสวนของโปรแกรมทเ่ี ขียนขน้ึ อยา งละเอียด คำอธิบาย ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… 4. ปรบั แกโ ปรแกรมใหมโ ดยใหม ีผลการทำงานเปนเชนเดิม แตเปลยี่ นเปนการควบคุมแบบ 2 เฟส 5. สรุป ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………

ใบงานท่ี 9 เรื่อง การควบคมุ เซอรโ วมอเตอร วชิ า ไมโครคอนโทรลเลอรและการประยุกตใ ชงาน ช่ือ – สกลุ …………………………………………… รหสั นักศกึ ษา……………………………………………….. ช่ือ – สกุล ………………………………………….. ช่อื – สกลุ ………………………………………….. รหัสนกั ศึกษา……………………………………………….. รหสั นักศึกษา……………………………………………….. วตั ถุประสงค เพ่อื ใหผ ูเรียนมคี วามรูและทักษะดงั น้ี 1. เพ่อื เรยี นรูตำแหนง ขาบนบอรด Arduino Uno R3 ทีส่ ามารถเชอื่ มตอเซอรโวมอเตอร 2. เพอื่ เรียนรูการเขียนโปรแกรมเพ่อื ควบคมุ การทำงานเซอรโ วมอเตอร 3. เพ่ือใชโปรแกรม Proteus ในการจำลองพฤติกรรมการทำงานของวงจรทดลอง ทฤษฎี เซอรโวมอเตอร คือมอเตอรที่มีแรงบิตที่สูงมากที่สามารถนำไปใชสำหรับควบคุมไดท้ัง ความเรว็ แรงบติ และตำแหนง ทิศทางการหมนุ โดยผลลพั ธท ีไ่ ดมคี วามแมนยำสงู มาก รปู ที่ 1 เซอรโวมอเตอรใ นโปรแกรม Proteus ทีม่ า: ผเู ขียน อยา งไรก็ตามท่ีตวั โปรแกรม Arduino IDE ไดมกี ารพฒั นาชดุ คำส่ังสำหรับควบคุมการทำงาน ของเซอรโวมอเตอรไวแลว ซึ่งผูใชงานสามารถการสรางและเรียกใชงานฟงกชันผานอ็อบเจ็ค Servo สำหรับฟง กชนั ทสี่ ำคญั ในไลบรารี Servo มดี ังน้ี

452 1. ฟงกชัน attach() เปนฟงกชันที่ใชสำหรับกำหนดตำแหนงขาของวงจรทดลอง.ที่จะถูกใชเชื่อมตอกับเซอรโว มอเตอร รปู แบบ ชื่อออบเจ็ค.attach(pin) หรอื ชือ่ ออบเจ็ค.attach(pin, min, max) พารามิเตอร 1. pin คือ ตำแหนง ขาของวงจรทดลอง. 2. min คอื ความกวางท่ี 0 องศาของเซอรโวมีหนวยเปน ไมโครวินาที โดยหากไมก ำหนดคาจะ มคี าเร่มิ เตนอยทู ี่ 544 ไมโครวนิ าที 3. max คือความกวา งที่ 180 องศาของเซอรโ วมีหนว ยเปนไมโครวินาทีโดยหากไมกำหนดคา จะมคี า เรมิ่ เตน อยทู ี่ 2400 ไมโครวนิ าที 2. ฟงกช ัน write() เปน ฟงกชนั ทใี่ ชส ำหรับกำหนดตำแหนง และทศิ ทางการหมุนของเซอรโวมอเตอร รูปแบบ ชอ่ื ออบเจค็ .write(angle) พารามิเตอร 1. angle คือ ขนานมุมของเซอรโวมอเตอรที่กำหนดใหหมุน โดยสามารถกำหนดคาได ระหวาง 0 – 180 องศา อยางไรก็ตามกรณีที่เซอรโมมอเตอรเปนแบบหมุนเต็ม (Full Rotation) คา angle คอื คา ความเร็วและทศิ ทางการหมุน ดงั น้ี angle = 90 คือการสั่งใหเซอรโวมอเตอรห ยดุ หมนุ

453 angle = 0 คือการส่ังใหเซอรมอเตอรหมนุ ดว ยความเร็วสงู สดุ ในทศิ ทางหนึ่ง angle = 180 คือการสั่งใหเซอรมอเตอรหมุนดวยความเร็วสูงสุดในทิศทางตรงกัน ขามกบั กรณีท่ี angle = 0 3. ฟงกชนั writeMicroseconds() เปนฟงกช ันที่ใชส ำหรับควบคมุ ทิศทางการหมนุ ของเซอรโ วมอเตอรโ ดยใชสัญญาณนาิกาท่ีมี ความถ่ีแตกตา งกนั ออกไปในหนวยไมโครวินาที โดยการใชงานฟงกชนั นสี้ ามารถกำหนดไดอยางอิสระ อยางไรก็ตามมขี อท่ีพึงระวงั คือไมควรใหหมุนเกินตำแหนง 0 องศาหรอื 180 องศาเพราะอาจสงผลให เซอรโ วมอเตอรหมด อายุการใชงานเรว็ กวา กำหนด รูปแบบ ช่อื ออบเจค็ .writeMicroseconds(time) พารามิเตอร 1. time คอื เวลาในหนว ยไมโครวินาที 4. ฟง กชนั read() เปนฟงกชันที่ใชสำหรับอานคาองศาที่ถูกอานดวยฟงกชัน write โดยผลลัพธจะอยูในชวง ระหวาง 0 – 180 องศา รปู แบบ ชอ่ื ออบเจ็ค.read() 5. ฟงกช ัน attached() เปน ฟง กช นั ทใ่ี ชสำหรบั ตรวจสอบวา เซอรโวถูกเชอ่ื มตออยูกับวงจรทดลองหรือไม

454 รูปแบบ ช่ือออบเจค็ .attached() 6. ฟง กช นั detach() เปนฟงกชันที่ใชสำหรับคืนสถานะของตำแหนงขาที่ถูกเชื่อมตอกับเซอรโวมอเตอรเพื่อให กลับมาใชงานตามปกติ รูปแบบ ชื่อออบเจค็ .detach() รปู ที่ 2 วงจรสำหรบั การทดลอง ทมี่ า: ผเู ขียน ข้นั ตอนการทดลอง 1. ออกแบบวงจรเพอ่ื ควบคุมการหมนุ ของเซอรโวมอเตอร ดังน้ี กดปุม sw1: เซอรโ วหมนุ เพิ่ม 10 องศา กดปุม sw2: เซอรโ วหมุนเพิม่ 20 องศา

455 โดยหากหมุนครบ 180 องศาจะหยุดการทำงานท้ังหมด 2. เขยี นโปรแกรมเพ่อื ใหเ กิดผลลัพธ ดงั ที่กลา วไวใ นข้ันตอนที่ 1 3. สงั เกตและอธิบายสวนของโปรแกรมท่เี ขยี นขนึ้ อยา งละเอียด คำอธิบาย ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… 4. ปรับแกโ ปรแกรมใหมโ ดยใหม ผี ลการทำงานเปล่ยี นไปเล็กนอยดงั น้ี กดปุม sw1: เซอรโวหมุนลดลง10 องศา กดปมุ sw2: เซอรโวหมนุ ลดลง 20 องศา โดยหากหมุนครบ 0 องศาจะหยดุ การทำงานทั้งหมด 5. สรปุ ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………

ใบงานที่ 10 เร่อื ง การรับขอมูลจากเซน็ เซอร วิชา ไมโครคอนโทรลเลอรแ ละการประยกุ ตใชง าน ชื่อ – สกลุ …………………………………………… รหัสนักศึกษา……………………………………………….. ช่อื – สกุล ………………………………………….. ช่อื – สกลุ ………………………………………….. รหัสนกั ศึกษา……………………………………………….. รหสั นกั ศึกษา……………………………………………….. วัตถปุ ระสงค เพ่อื ใหผ เู รยี นมีความรแู ละทักษะดงั นี้ 1. เพ่ือเรยี นรูตำแหนง ขาบนบอรด Arduino Uno R3 ทส่ี ามารถเชอื่ มตอเซ็นเซอรแ ตล ะ ประเภท 2. เพ่ือเรยี นรูการเขียนโปรแกรมรับคา จากเซ็นเซอรเพื่อควบคุมอุปกรณช นิดอ่นื ๆ ได 3. เพอ่ื ใชโ ปรแกรม Proteus ในการจำลองพฤติกรรมการทำงานของวงจรทดลอง ทฤษฎี เซ็นเซอรคือ อุปกรณอิเล็กทรอนิกสที่ซึ่งโดยสวนใหญจะสงสัญญาณเปนแบบอนาล็อก ถูก แบงออกเปน หลายประเภทจึงสามารถนำมาใชสำหรับตรวจจบั สญั ญาณในรปู แบบตา งๆ เชน สัญญาณ แสง สญั ญาณเสยี ง หรือคา สี เปนตน เพ่อื นำไปใชประโยชนไดในหลากหลายดาน เชน งานดานเกษตร อุตสาหกรรม ทางการแพทย โดยเฉพาะอยางยิ่งระบบงานที่มีลักษณะการทำงานแบบอัตโนมัติ เปน ตน สำหรับบอรด Arduino Uno R3 มขี าท่ีสามารถรองรบั สญั ญาณอนาลอ็ กไดท ้ังหมด 6 ขาคอื A0 – A5 โดยรูปท่ี 1 แสดงตำแหนง ขาท่รี องรับสัญญาณอนาล็อกซึ่งตำแหนงมุมลางซา ย รปู ท่ี 1 ตำแหนงขาวงจรทดลอง Arduino Uno R3 ทมี่ า: ผเู ขยี น

458 เนื่องจากในสวนของชุดคำสั่งรับคาจากเซ็นเซอรแตละประเภทมีลักษณะคลายคลึงกันเกือบ ทั้งหมด ดังนั้นใบงานน้ีจึงเลือกตัวตานทานแบบปรับคาไดเ พื่อเปนตวั อยางสำหรับประกอบคำอธบิ าย เนอ่ื งจากอปุ กรณช นิดนี้สามารถเลือกใชง านไดในโปรแกรม Proteus รปู ท่ี 2 ตัวตา นทานแบบปรับคาได ทม่ี า: ผูเขียน รปู ที่ 3 ตวั ตานทานแบบปรับคาไดในโปรแกรม Proteus ที่มา: ผเู ขยี น รูปที่ 3 แสดงตัวอยางตัวตานทานแบบปรับคาไดในโปรแกรม Proteus ซึ่งเปนอุปกรณที่ถูก นำมาใชแทนเซ็นเซอรเพื่อสงสัญญาณอนาล็อกสูวงจรทดลองโดยใชโปรแกรมจำลองการทำงาน อยา งไรก็ตามเซ็นเซอรชนดิ อื่นๆ ผูเขียนจะแสดงตัวอยางผานการทดลองจริง โดยโปรแกรม Arduino IDE มฟี ง กชนั ทีส่ ำคัญท่ีเกย่ี วกบั การจดั การสัญญาณอนาล็อกท่ีถูกสง มาจากเซ็นเซอรชนิดตางๆ ดังนี้

459 1. ฟงกช ัน analogRead() เปนฟงกชันที่ใชสำหรับรับคาสัญญาณอนาล็อกจากเซ็นเซอรสูวงจรทดลอง โดยตำแหนงขา ของวงจรทดลองจะตองสามารถรับสัญญาณอนาล็อกได โดยในบอรด Arduino Uno R3 สามารถรับ สัญญาณอนาล็อกไดท ข่ี า A0 – A5 รูปแบบ analogRead(pin) การคืนคา จำนวนเต็ม พารามเิ ตอร 1. pin คือ ตำแหนง ขาของวงจรทดลองทีร่ องรับสญั ญาณอนาล็อกทเี่ ชื่อมกบั ของเซน็ เซอร 2. ฟง กชัน map() เปนฟงกชันที่ใชสำหรับปรับชวงคาของสัญญาณอนาล็อกใหมใหอยูในชวงตามที่ผูใชงาน ตองการ รปู แบบ map(value, fromLow, fromHigh, toLow, toHigh) การคนื คา จำนวนเตม็ พารามิเตอร 1. value คอื คาสัญญาณอนาลอ็ กทถี่ กู สง โดยเซน็ เซอร 2. fromLow คอื คา ต่ำสดุ ทเ่ี ปนไปไดของสัญญาณตน ฉบบั 3. fromHigh คอื คา สงู สดุ ท่เี ปน ไปไดข องสัญญาณตนฉบับ

460 4. toLow คอื คาตำ่ สุดทเ่ี ปน ไปไดของสญั ญาณทถ่ี กู ปรบั ชว งใหม 5. toHigh คือ คาสูงสุดทเี่ ปน ไปไดของสัญญาณที่ถูกปรบั ชว งใหม โดยท่ีมาของผลลพั ธท ่คี ืนคาจากฟงกช ัน map() ซึง่ เปน จำนวนเตม็ เปนดังน้ี result = (value – fromLow)*(toHigh – toLow)/(fromHigh – fromLow) + toLow เมอื่ result คอื ผลลพั ธท ี่เกิดจากการปรับชวงของสัญญาณ ขัน้ ตอนการทดลอง 1. ออกแบบวงจรโดยตอตัวตานทานปรับคาไดเขาที่ขา A0 ของบอรด Arduino Uno R3 และ แสดงผลของคาที่รบั จากตวั ตา นทานปรับคาไดผาน Serial Monitor 2. เขยี นโปรแกรมเพื่อใหเกิดผลลัพธ ดังทีก่ ลา วไวใ นขน้ั ตอนท่ี 1 3. สังเกตและอธิบายสว นของโปรแกรมทเ่ี ขยี นขึน้ อยา งละเอยี ด คำอธิบาย ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… 4. ปรับแกโปรแกรมและวงจรใหมโดยเพ่มิ หลอดแอลอดี ี 1 หลอดและแบงชว งการควบคุมแอลอีดี โดย ใหผทู ดลองกำหนดชว งทใ่ี ชส ำหรบั การควบคมุ เอง 5. สรุป ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………

ใบงานท่ี 11 เรอ่ื ง การประยุกตใชไอซีสำหรับขยาย วชิ า ไมโครคอนโทรลเลอรและการประยกุ ตใ ชง าน พอรตการทำงาน ชอ่ื – สกุล …………………………………………… รหัสนกั ศกึ ษา……………………………………………….. ชอ่ื – สกุล ………………………………………….. รหสั นกั ศึกษา……………………………………………….. ชือ่ – สกลุ ………………………………………….. รหัสนกั ศึกษา……………………………………………….. วัตถุประสงค เพอ่ื ใหผเู รียนมีความรูและทักษะดังน้ี 1. เพ่อื เรยี นรตู ำแหนง ขาบนบอรด Arduino Uno R3 ท่ีสามารถเชือ่ มตอไอซีขยายพอรตได 2. เพอ่ื เรยี นรูการเขียนโปรแกรมเพอ่ื ควบคมุ ไอซีขยายพอรต 3. เพ่อื ใชโปรแกรม Proteus ในการจำลองพฤติกรรมการทำงานของวงจรทดลอง ทฤษฎี เนื่องจากบอรด Arduino บางประเภทมีพอรตสำหรับใชงานไมมาก จึงจำเปนตองขยาย พอรตการทำงานในกรณีที่จำนวนพอรตการเชื่อมตอไมเพียงพอ โดยไอซีเบอร 74HC595 คือไอซีที่ สามารถนำมาประยุกตใชสำหรับการขยายพอรตของบอรด Arduino ไดโดยใชหลักการเลื่อนขอมูล ครง้ั ละ 1 บิต รปู ที่ 1 ไอซเี บอร 74HC595 ทม่ี า: ผูเขยี น

462 รูปท่ี 2 ไอซีเบอร 74HC595 สำหรับโปรแกรม Proteus ที่มา: ผูเขียน สำหรบั ขาการใชงานของไอซีเบอร 74HC595 ท่ีสำคญั ประกอบดวยดงั น้ี ขา 11 (SH_CP) คือขาที่ทำหนาที่เปนตัวใหกำเนิดสัญญาณนาิกา ซึ่งทุกครั้งที่มกี ารเปล่ียน สถานะของเอาตพุตจะตองสรางสัญญาณนาิกา แตอยางไรก็ตามเนื่องจาก Arduino มีฟงกชันที่ใช สำหรบั แสดงสถานะเอาตพตุ รวมกบั ชิพรจี ิสเตอรซ่ึงจะสรางสัญญาณนาิกาท่ีขา SH_CP โดยอัตโนมัติ ขา 12 (ST_CP คือขาที่ใชสำหรับควบคุมจังหวะการสงขอมูลโดยที่จะกำหนดใหมีสถานะ เปน “HIGH” ในกรณีที่ยังไมมีการสงขอมูลเกิดขึ้น และกำหนดใหมีสถานะเปน “LOW” ในขณะที่มี การสง ขอมูล ขา 14 (DS คอื ขาทีใ่ ชสำหรบั การปอ นคาขอ มูลไปยงั ชฟิ รีจิสเตอรครงั้ ละ 1 บิต ขา 10 (MR) คอื ขาท่ีใชสำหรับเคลียรขอมลู ในชิฟรีจสิ เตอร โดยจะถกู กำหนดใหมีสถานะเปน “HIGH” เสมอ ดงั นั้นจึงสามารถตอขาดังกลา วรว มกบั +VCC ขา 13 (OE) คือขาที่ถูกกำหนดสถานะเปน “LOW” เสมอ ดังนั้นจึงสามารถตอขาดังกลาว รวมกบั ขากราวนเ สมอ ขา 15 และ 1-7 (Q0 – Q7) คือขาเอาตพุตรวมกันขนาด 8 บิตซึ่งจะแสดงผลแบบขนาน (แสดงผลการทำงานพรอ มกนั ทั้ง 8 ขา) ขา 9 (Q7’) คือขาเอาตพุตท่แี สดงผลเปนแบบลำดับรว มกับขา Q0 – Q7 สำหรับขาที่จะเชื่อมกับ Arduino มีทั้งหมด 3 ขาประกอบไปดวย SH_CP, ST_CP และ DS โดยวธิ กี ารสำหรับควบคมุ สถานะการทำงาน Q0 – Q7 เปนดงั น้ี ลำดับที่ 1 กำหนดสถานะของ ST_CP ใหมีสถานะเปน “LOW” เพื่อรอการสงขอมูลมาจาก Arduino ลำดับที่ 2 กำหนดใหขา DS มีคาตรงกับสถานะของเอาตพุตโดยการรับคาครั้งละ 1 บิต จำนวน 8 คา

463 ลำดับที่ 3 กำหนดสัญญาณนาิกาที่ขา SH_CP จำนวน 1 ลูกตอการรับคาที่ขา DS จำนวน 1 บิต ดงั นั้นหากตอ งควบคมุ สถานะท้งั หมด 8 บิตจะตองสรางสัญญาณนากิ าจำนวนท้งั หมด 8 ลูก ฟงชันก shiftOut() ฟงชันก shiftOut() คือฟงกชันที่มีหนาที่ในการเลื่อนบิตขอมูลขนาด 1 บิตซึ่งมีรูปแบบการ เลื่อนได 2 วิธีคือการเลื่อนจากบิตที่อยูในตำแหนงนัยสำคัญสูงสุด หรือ บิตที่อยูตำแหนงนัยสำคัญต่ำ ที่สุด ขอดีของการใชงานฟงกชันนี้คือไมจำเปนตองเขียนคำสั่งควบคุมการทำงานชิฟรีจิสเตอรขึ้นเอง โดยมรี ปู แบบการใชงานเปนดังนี้ รูปแบบ shiftOut(d_pin, d_clock, bit_order, value) พารามิเตอร 1. d_pin คือขาที่ทำหนาที่เปนเอาตพุตที่มีขนาด 1 บิต ซึ่งคือตำแหนงขา DS ของไอซี 74HS595 2. d_clock คือขาที่ทำหนาที่กำเนิดสัญญาณนาิกา ซึ่งคือตำแหนงขา SH_CP ของไอซี 74HS595 3. bit_order คือการกำหนดรูปแบบการเลื่อนบติ ซึ่งกำหนดได 2 รูปแบบคือ 3.1 MSBFIRST คอื กำหนดใหเ ลอ่ื นบติ ทีม่ ีนัยสำคัญสูงสุดกอ น 3.2 LSBFIRST คือกำหนดใหเลอื่ นบติ ทม่ี นี ัยสำคญั ตำ่ สุดกอ น 4. value คอื สถานะของขอ มลู ท่ีถกู เลอ่ื น Q0 – Q7 รปู ท่ี 3 วงจรทดลอง ทม่ี า: ผูเ ขียน

464 ข้นั ตอนการทดลอง 1. ออกแบบวงจรดังรูปที่ 3 เพื่อควบคุมการติดของหลอดแอลอีดีโดยใหติดครั้งละ 1 หลอดเรียงจาก ขวาไปซาย 2. เขยี นโปรแกรมเพ่อื ใหเกิดผลลพั ธ ดงั ทกี่ ลาวไวในข้ันตอนท่ี 1 3. สงั เกตและอธบิ ายสว นของโปรแกรมทเ่ี ขยี นข้ึนอยางละเอยี ด คำอธิบาย ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… 4. ปรับแกโ ปรแกรมเพ่อื ใหก ารทำงานเปลี่ยนเปน หลอดแอลอีดีติดครั้งละ 1 หลอดเรียงจากซา ยไป ขวา 5. สรุป ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………

ใบงานท่ี 12 เรือ่ ง การใชงานอินเทอรรัพท วชิ า ไมโครคอนโทรลเลอรและการประยุกตใชงาน ชื่อ – สกุล …………………………………………… รหัสนักศกึ ษา……………………………………………….. ช่ือ – สกุล ………………………………………….. ชอื่ – สกุล ………………………………………….. รหสั นกั ศกึ ษา……………………………………………….. รหัสนักศึกษา……………………………………………….. วตั ถุประสงค เพอ่ื ใหผเู รยี นมคี วามรแู ละทักษะดงั นี้ 1. เพอื่ เรียนรูตำแหนง ขาบนบอรด Arduino Uno R3 ทส่ี ามารถใชส รางสญั ญาณอนิ เทอร รัพทจ ากอุปกรณภายนอกได 2. เพอื่ เรยี นรูการเขยี นโปรแกรมเพือ่ ใชงานสัญญาณอนิ เทอรร ัพท 3. เพอ่ื ใชโ ปรแกรม Proteus ในการจำลองพฤติกรรมการทำงานของวงจรทดลอง ทฤษฎี การอินเตอรรัพทคือการขัดจังหวะการทำงานหลักของโปรแกรมซึ่งถูกแบงออกเปน 2 ประเภทคือการเกิดอินเตอรรัพทจากภายนอก เชนการเกิดอินเตอรรัพทเนื่องจากการกดสวิตซ และ การเกิดอินเทอรรัพทจากภายใน เชนการเกิดอินเตอรรัพทเนื่องจากไทเมอร โดยใบงานนี้จะอธิบาย การสรางและการเกดิ อินเตอรร พั ทจากภายนอกเพียงเทา นั้น การสรางอินเทอรรัพทที่บอรด Arduino Uno R3 จะสามารถใชงานอินเตอรรัพทจาก ภายนอกได 2 ชนิดคืออินเตอรรัพท int0 ซึ่งถูกติดตั้งไวที่ตำแหนงขา 2 ของบอรด และอินเตอรรัพท int1 ซึ่งถูกติดตั้งไวที่ตำแหนงขา 3 ของบอรด โดยการสรางและใชงานสัญญาณอินเทอรรัพทจาก ภายนอกจำเปน ตองเรียกใชฟงกช ันทีส่ ำคญั ดงั น้ี 1. ฟงกช ัน attachInterrupt() เปนฟงกชันที่ใชสำหรับกำหนดการใหบรกิ ารสัญญาณอินเตอรร ัพท เพ่อื รอเหตุการณของการ เกดิ อินเตอรร ัพทแ ละการเรียกใชชดุ คำสง่ั เม่ือเกดิ การอินเตอรรัพทขนึ้

466 รูปแบบ attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) พารามเิ ตอร 1. pin คือ ตำแหนง ขาท่ใี ชง านอนิ เตอรรพั ท 2. ISR คอื ช่ือของฟง กชนั ทจี่ ะถูกเรียกใชง านเมือ่ เกิดสญั ญาณอินเตอรร พั ท 3. mode คือ รูปแบบของการเกิดอินเตอรที่ขึ้นอยูกับสถานะของตำแหนงขาที่เชื่อมกับ สญั ญาณอนิ เตอรร ัพทแบงออกเปน 4 สถานะดังนี้ 3.1 mode = “LOW” คือ เกิดอินเตอรรัพทเมื่อสถานะของตำแหนงขาที่เชื่อมกับ สญั ญาณอนิ เตอรรพั ทเปน “LOW” 3.2 mode = “CHANGE” คือ เกิดอินเตอรรัพทเมื่อเกิดเหตุการณเปลี่ยนสถานะ ของตำแหนง ขาทเ่ี ชือ่ มกับสัญญาณอนิ เตอรรัพท 3.3 mode = “RISING” คอื เกดิ อนิ เตอรรัพทเ มื่อสถานะของตำแหนงขาท่ีเชื่อมกับ สัญญาณอินเตอรร พั ทเ กดิ การเปล่ียนสถานะจาก “LOW” เปน “HIGH” 3.4 mode = “FALLING” คือ เกิดอินเตอรรัพทเมื่อสถานะของตำแหนงขาที่เชื่อม กับสญั ญาณอนิ เตอรรพั ทเกิดการเปล่ยี นสถานะจาก “HIGH” เปน “LOW” สำหรับ pin หากใชง านบอรด Arduino Uno R3 จะสามารถใชง านได 2 ขาคือตำแหนง ขา 2 สำหรับควบคุมการเกิดสัญญาณอินเตอรรัพท int0 และ ตำแหนงขา 2 สำหรับควบคุมการเกิด สญั ญาณอนิ เตอรรัพท int1 ขน้ั ตอนการทดลอง 1. ออกแบบวงจรโดยเชื่อมสวิตซสำหรบั ตรวจสอบการเกิดอินเทอรรัพท int0 โดยเชื่อมตอที่ตำแหนง ขา 2 และเชอ่ื มแอลอดี ี 1 หลอดทีต่ ำแหนงขา 4 ของบอรด Arduino Uno R3 2. เขยี นโปรแกรมเพื่อใหเ กิดอนิ เทอรรัพทเมื่อมีการสัมผสั สวิตซโ ดยใหแสดงขอความ “--Interrupt--” ท่ี Serial Monitor และสถานะการติด และดบั ของหลอดแอลอีดี 1 ครั้ง 3. สงั เกตและอธบิ ายสวนของโปรแกรมทเี่ ขียนขนึ้ อยางละเอียด

467 คำอธิบาย ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… 4. ปรับแกโปรแกรมเพอ่ื ใหก ารทำงานเปล่ยี นเปน การเกิดอินเทอรรัพทท ่ี int1 5. สรุป ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………

ภาคผนวก ข การตดิ ตั้งและใชง านบอรด Raspberry Pi สำหรบั ควบคมุ อุปกรณภายนอกเบอ้ื งตน



ขอเสียของไมโครคอนโทรลเลอรคือประสิทธิภาพของหนวยประมวลผลที่ต่ำ ถึงแมวาจะ เลือกใชงานตระกูลที่มีประสิทธิภาพสูงสุดแลวก็ตาม ดังนั้นไมโครคอนโทรลเลอรจึงนิยมถูกนำมาใช เพื่อควบคุมการทำงานของอุปกรณภายนอกเพียงเทานั้น โดยไมสามารถใชไมโครคอนโทรลเลอร สำหรับงานที่จำเปนตอ งใชก ำลังการประมวลผลสงู ได เชน การประมวลผลภาพ หรอื วีดีโอ เปน ตน Raspberry Pi (สะกดวา ราดเบอรรี่พาย) คือคอมพิวเตอรขนาดเล็กที่มีขนาดใกลเคียงกับ บอรด Arduino เปนอยางมาก แตมีกำลังการประมวลผลที่สูงกวาบอรด Arduino รวมไปถึง ไมโครคอนโทรลเลอรตระกูลอื่นทั้งหมดเปนอยางมาก (เนื่องจาก Raspberry Pi คือคอมพิวเตอร ในขณะที่ไมโครคอนโทรลเลอรไมถือวาเปนคอมพิวเตอรแตเปนเพียงหนวยประมวลผลขนาดเล็กที่มี ประสิทธิภาพต่ำ ดงั นน้ั จึงสามารถใช Raspberry Pi สำหรับงานท่ีจำเปนตองใชก ำลังการประมวลผล ทส่ี ูงได GPIO รูปท่ี ค.1 ตัวอยา งบอรด Raspberry Pi ที่มา: ผเู ขยี น รูปที่ ค.1 แสดงตัวอยางบอรด Raspberry Pi ซึ่งที่ตัวบอรดจะสังเกตไดวามีตำแหนงขาที่ สามารถนำมาเชื่อมตอกับอุปกรณภายนอกเปนโหมดอินพุต/เอาตพุต เรียกวาขา GPIO ดังตำแหนง อางอิง โดยกอนการใชงานจำเปนตองติดตั้งไลบรารี่ RPi.GPIO ซึ่งเปนไลบรารี่สำหรับภาษาไพธอน กอนจึงจะสามารถใชงานได อยางไรก็ตามหลังจากติดตั้งระบบปฏิบัติการสำหรับบอรดแลวระบบจะ ติดตั้งไลบรารี่ดังกลาวใหโดยอัตโนมัติ ดังนั้นนอกเหนือจากการทำหนาที่เปนคอมพิวเตอรแลวยัง สามารถนำบอรด Raspberry Pi มาประยุกตใชงานเพื่อควบคุมอุปกรณจากภายนอกดังเชน ไมโครคอนโทรเลอรทั่วไปไดเชนกัน อยางไรก็ตามหากผูใชงานจำเปนตองการควบคุมเพียงแคการ

472 ควบคุมสถานะอุปกรณภายนอกที่ใชกำลังประมวลผลไมสูงมาก ผูเขียนแนะนำใหใชบอรด ไมโครคอนโทรลเลอรท ว่ั ไปจะเหมาะสมกวา เนอื่ งจากราคาที่ถูกกวา มาก หากเปรียบเทียบกับชุดคอมพิวเตอรตั้งโตะ Raspberry Pi จะเปรียบเสมือนเคสที่บรรจุ อปุ กรณทางคอมพิวเตอรไวภ ายในเรียบรอยแลวเพียงแตมีขนาดที่เล็กกวาเคสเปนอยา งมาก ดงั นน้ั การ ใชงานจึงจำเปนตองใชรวมกับเมาส แปนพิมพอักขระ และจอแสดงผล รวมไปถึงไมโครเอสดีการด (Micro SD Card เพ่ือใชส ำหรบั ติดตั้งระบบปฏบิ ตั ิการ รูปท่ี ค.2 ชดุ คอมพิวเตอรตั้งโตะ ทใ่ี ช Raspberry Pi แทนเคส ท่ีมา: ผูเขียน รูปที่ ค.2 แสดงชุดคอมพิวเตอรตั้งโตะที่ใช Raspberry Pi แทนเคส ซึ่งการใชงานจะ เหมอื นกบั การใชง านคอมพิวเตอรทวั่ ไป ดงั นน้ั การเขยี นโปรแกรมเพื่อควบคมุ อุปกรณภ ายนอก รวมถึง โปรแกรมทั่วไปสามารถเขียนผานชุดคอมพิวเตอรตั้งโตะที่ใช Raspberry Pi แทนเคสนี้ไดโดยตรงซึ่ง แตกตางจากไมโครคอนโทรลเลอรที่ตองเขียนโปรแกรมผานคอมพิวเตอรกอนที่จะนำคำสั่งที่ผานการ แปลภาษาแลวสง ผา นไปยังบอรดไมโครคอนโทรลเลอร ค.1 การตดิ ต้งั ระบบปฏบิ ัติการสำหรบั Raspberry Pi เนือ่ งจาก Raspberry Pi คอื คอมพิวเตอรชนิดหน่งึ ดงั นัน้ จึงจำเปน ตองติดตงั้ ระบบปฏิบัติการ กอนใชงานซึ่งมีใหเลือกใชงานเปนจำนวนมาก โดยในเอกสารคำสอนเลมนี้ผูเขียนเลือกใช

473 ระบบปฏิบัติการที่ชื่อ Raspbian ซึ่งเปนระบบปฏิบัติที่มีพื้นฐานมาจากระบบปฏิบัติการลินุกซ (Linux ซ่ึงข้ันตอนการตดิ ตั้งเปนดังน้ี ขั้นตอนที่ 1: เตรียมไมโครเอสดีการดเพื่อเชื่อมตอกับเครื่องคอมพิวเตอรเพื่อทำการดาวโหลด ระบบปฏิบัตกิ าร Raspbian ข้นั ตอนท่ี 2: ที่หนา เว็บเพจ https://www.raspberrypi.org/downloads/ ใหเ ลือก NOOBS ดังรปู รูปท่ี ค.3 เลอื ก NOOBS เพื่อเตรยี มดาวโหลดระบบปฏิบัติการ Raspbian ทีม่ า: ผเู ขยี น ข้นั ตอนท่ี 3: หลงั จากเลอื ก NOOBS แลวจะมใี หเ ลอื กอกี 2 รนุ โดยใหเลอื ก NOOBS Offline and Network install และใหเ ลือกไฟลนามสกุล .ZIP รปู ที่ ค.4 เลือก NOOBS Offline and Network install เพือ่ เตรยี มดาวโหลดระบบปฏิบตั ิการ Raspbian ทมี่ า: ผูเขียน

474 ขั้นตอนที่ 4: ทำการแตกไฟลที่ได และใหคัดลอกขอมูลทั้งหมดภายในโฟลเดอรไปไวในสวนรากของ ไมโครเอสดกี ารด ขั้นตอนที่ 5: นำไมโครเอสดีการดออกจากเครื่องคอมพิวเตอรเพื่อไปเชือ่ มตอกับ Raspberry PI เพื่อ เตรยี มทำการติดต้งั ในขั้นตอนถดั ไป ขั้นตอนที่ 6: เชื่อมตอเมาส แปนพิมพอักขระ รวมถึงไฟเลี้ยงสำหรับบอรด Raspberry PI ที่บรรจุ ไมโครเอสดีการด ท่มี ขี อมลู ระบบปฏบิ ตั ิการ Raspbian อยภู ายในและดำเนินการตามข้ันตอนตอไป ข้ันตอนท่ี 7: เมอื่ เปดระบบจะพบหนา จอใหเ ลือกติดตั้งระบบปฏบิ ัตกิ ารดังรูปที่ ค.5 รปู ท่ี ค.5 หนา จอเริ่มตนสำหรบั การติดต้ังระบบปฏบิ ตั กิ าร ทีม่ า: ผูเขยี น ขั้นตอนที่ 8: เลือก Rasbian Full (RECOMMENDED) และกดที่ “Install” ระบบจะทำการติดตั้ง ระบบปฏิบตั กิ าร Raspbian หลงั จากนนั้ จะมขี น้ั ตอนใหด ำเนินการอีกเล็กนอยเชน เลือกสญั ญาณไวไฟ ต้งั คา ภาษา เปนตน หลังจากเสร็จสิ้นจะไดผลลัพธด ังรูปท่ี ค.6 รูปท่ี ค.6 ระบบปฏบิ ัติการพรอมใชง านหลังผา นขนั้ ตอนการตดิ ตงั้ ทีม่ า: ผเู ขียน

475 ค.2 แนะนำการใชงานภาษาไพธอนเบื้องตน สำหรบั Raspberry Pi ในหัวขอนี้กลาวถึงการใชงานภาษาไพธอน (Python) เบื้องตนผานระบบปฏิบัติการ Raspbian โดยจะกลาวเพียงการใชงาน และโครงสรางพื้นฐานเพียงเทานั้น สำหรับเนื้อหาเชิงลึก เกี่ยวกับภาษาไพธอนผูอานสามารถศึกษาไดจากสือ่ การสอนแหลงอื่นที่ถูกเผยแพรเปน จำนวนมากใน ปจ จุบัน ภาษาไพธอนมีเปนแกรมภาษาหนึ่งที่นิยมถูกนำมาใชงานรว มกับ Raspberry Pi เพื่อควบคุม ระบบงานตา งๆ โดยโครงสรางภาษาทสี่ ำคัญที่แตกตางจากภาษาซีคือภาษาไพธอนจะไมมีการกำหนด ชนิดขอมูลสำหรับตัวแปร และไมใชปกกาสำหรับกำหนดขอบเขตงาน โดยจะใชการยอหนาแทนการ กำหนดขอบเขตของคำสง่ั แทน ตวั อยา งคำสง่ั เง่อื นไขของภาษาซี ตัวอยางคำสัง่ เงอื่ นไขของภาษาไพธอน int i = 5; i=5 if(i > 2){ if i > 5: printf(“Hello a”); print(“Hello a”); printf(“Hello b”); print(“Hello b”); }else{ else: printf(“Hello c”); print(“Hello c”); printf(“Hello d”); print(“Hello d”); } print(“Hello e”); printf(“Hello e”); รปู ท่ี ค.7 ตวั อยางเปรียบเทยี บความแตกตางของการใชตัวแปร และคำสั่งเง่ือนไขระหวางภาษาซแี ละภาษาไพธอน ท่ีมา: ผูเขยี น รูปที่ ค.7 แสดงตัวอยางเปรียบเทียบความแตกตางของการใชตัวแปร และคำสั่งเงื่อนไข ระหวางภาษาซีและภาษาไพธอน โดยทง้ั สองโปรแกรมนมี้ กี ารทำงานที่เหมือนกัน แตค วามแตกตางอยู ที่โครงสรางของภาษา เชนตัวแปรภาษาซีตองกำหนดชนิดขอมูล แตภาษาไพธอนไมตองกำหนดเปน ตน การรันคำสั่งโปรแกรมภาษาไพธอนสามารถดำเนินการไดหลายวิธี เชนรันแบบครั้งละ 1 คำสั่งผาน Terminal, รันครั้งละ 1 คำสั่งผานโปรแกรม Thonny Python IDE หรือรันในรูปแบบ สคริปโปรแกรมผานโปรแกรมดงั กลาว เปนตน สำหรับเอกสารคำสอนเลมนี้จะอธิบายเพียงวิธกี ารรนั แบบสครปิ โปรแกรมโดยมีขน้ั ตอนเปน ดงั น้ี

476 ขนั้ ตอนท่ี 1: เปดโปรแกรม Thonny Python IDE โดยเลอื กท่ี Programming  Thonny Python IDE รูปที่ ค.8 การเปด โปรแกรม Thonny Python IDE ที่มา: ผเู ขยี น ขั้นตอนที่ 2: เขียนสคริปโปรแกรมและบันทึกไฟลที่มีนามสกุลเปน “.py” โดยที่จากรูปเปนไฟลชื่อ “test.py” รูปท่ี ค.9 ตวั อยา งสครปิ ภาษาไพธอน ท่ีมา: ผเู ขยี น ข้นั ตอนที่ 3: ทดสอบรนั สครปิ โปรแกรมโดยกดทค่ี ำสั่ง “Run” ผลลัพธแ สดงดังรูปท่ี ค.10

477 รปู ที่ ค.10 ตวั อยางผลรันสครปิ ภาษาไพธอน ทีม่ า: ผเู ขียน รูปที่ ค.10 แสดงตัวอยางผลรันสคริปภาษาไพธอนจากรูปที่ ค.9 ซึ่งผลรันแสดงขอความวา “Big” ซึ่งจะทำงานในกรณีที่เงื่อนไขเปนจริงและ “GoodBye” ซึ่งเปนคำสั่งที่ถูกนำมาแสดงเสมอ เน่อื งจากเปนคำสั่งท่ีอยนู อกเง่ือนไข ค.3 ตัวอยา งภาษาไพธอนสำหรบั ควบคมุ อุปกรณอ ิเลก็ ทรอนกิ ส หัวขอนี้จะแสดงตัวอยางการเขียนโปรแกรมภาษาไพธอนบน Raspberry Pi เพื่อใชสำหรับ ควบคุมอุปกรณอิเล็กทรอนิกสผานขา GPIO ซึ่งสามารถใชงานไดทั้งสถานะแบบอินพุต หรือเอาตพุต โดยมที งั้ หมด 3 ตัวอยางดงั น้ี ตัวอยางท่ี 1 โปรแกรมทดสอบการส่งั ใหห ลอดแอลอดี มี ีสถานะเปลง แสง การทำงาน: หลอดแอลอดี ีมสี ถานะเปลงแสงผานการควบคุมโดย Raspberry Pi 1. สวนวงจรทดลอง รูปที่ ค.11 วงจรทดลองใหแอลอดี ีมสี ถานะเปลงแสงควบคุมโดย Raspberry Pi ทม่ี า: ผูเขยี น คำอธิบาย: ตอหลอดแอลอีดีเขากับตำแหนงขาที่ GPIO 4 ของ Raspberry Pi โดยจากภาพหาก ตอ งการใหห ลอดแอลอีดมี ีสถานะเปลงแสงตองสง สถานะ “HIGH” ผานขา GPIO 4

478 2. สว นโปรแกรม 1 import RPi.GPIO as GPIO 2 GPIO.setmode(GPIO.BCM) 3 led = 4 4 GPIO.setup(led, GPIO.OUT) 5 GPIO.output(led, GPIO.HIGH) คำอธิบาย: เริ่มจากการนำเขาไลบรารี GPIO และกำหนดใหตำแหนงขา GPIO 4 ทำหนาที่เปนเอาตพุต กอ นทจ่ี ะสงสถานะ “HIGH” ออกจากตำแหนง ขาดังกลา วเพอ่ื ใหหลอดแอลอีดมี ีสถานะเปลง แสง ตัวอยา งที่ 2 โปรแกรมไฟกระพรบิ จากหลอดแอลอีดี 1 หลอด การทำงาน: หลอดแอลอดี ีจะมสี ถานะของการตดิ -ดับสลับกันในทุก 1 วนิ าที 1. สว นวงจรทดลอง เชอื่ มตออุปกรณภายนอก เขากับ Raspberry Pi ดงั ตวั อยางที่ 1 2. สว นโปรแกรม 1 import RPi.GPIO as GPIO 2 import time 3 GPIO.setmode(GPIO.BCM) 4 led = 4 5 GPIO.setup(led, GPIO.OUT) 6 while 1: 7 GPIO.output(led, GPIO.HIGH) 8 time.sleep(0.8) 9 GPIO.output(led, GPIO.LOW) 10 time.sleep(0.8) คำอธิบาย: ในสว นของการกำหนดขา GPIO จะมขี นั้ ตอนเหมือนกับตวั อยางท่ี 1 และมีการเพ่มิ การนำเขา ไลบรารี time เพือ่ ใชส ำหรบั การเรียกใชงานฟง กชนั สำหรบั หนว งเวลา อยางไรก็ตามเน่อื งจากตัวอยาง น้ีกำหนดใหห ลอดแอลอดี ีมีสถานะ ติด – ดับ สลบั กนั ไปไมม ที ่สี ้นิ สดุ จงึ ตองกำหนดการควบคุมสถานะ ทั้งสองไวในวงวน (while ที่มีการหนวงเวลาทุก 0.8 วินาทีสำหรับการสลับสถานะ เนื่องจากภาษา ไพธอนไมม ฟี ง กชนั สำเร็จรปู สำหรบั สรางวงวนแบบไมม ีทส่ี ิน้ สดุ ดังโปรแกรม Arduino IDE

479 ตัวอยางท่ี 3 ควบคุมหลอดแอลอดี ีดวยสวติ ซ การทำงาน: หลอดแอลอีดีจะมสี ถานะของการติด-ดบั ขึ้นอยูก บั การสบั สวติ ซ 1. สว นวงจรทดลอง รปู ท่ี ค.12 วงจรทดลองควบคุมหลอดแอลอีดดี วยสวิตซโ ดย Raspberry Pi ที่มา: ผเู ขยี น คำอธิบาย: ตอ หลอดแอลอดี ีเขากับตำแหนงขาที่ GPIO 4 ของ Raspberry Pi ในลกั ษณะเดียวกันกับ ตัวอยางท่ี 1 และ 2 โดยเพ่มิ การตอสวติ ซเขากบั ตำแหนงขา GPIO 3 ของ Raspberry Pi 2. สว นโปรแกรม 1 import RPi.GPIO as GPIO 2 import time 3 GPIO.setmode(GPIO.BCM) 4 led = 4 5 sw = 3 6 GPIO.setup(led, GPIO.OUT) 7 GPIO.setup(sw, GPIO.IN, pull_up_down=GPIO.PUD_UP) 8 while True: 9 if GPIO.input(sw): 10 GPIO.output(led, GPIO.HIGH) 11 else: 12 GPIO.output(led, GPIO.LOW)

480 คำอธิบาย: ในสวนของการกำหนดขา GPIO 4 สำหรับควบคุมหลอดแอลอีดีจะมีขั้นตอนเหมือนกับ ตัวอยางที่ 1 และเพิ่มการกำหนดขา GPIO 3 ทำหนาที่เปนอินพุตแบบ Pull-up ที่ซึ่งมีสถานะของ สัญญาณอยทู ตี่ ำแหนงขานี้เสมอในกรณที ีย่ งั ไมมีการกดสวติ ซ ในทางกลับกนั ท่ีตำแหนงขา GPIO 3 จะ มีสถานะ “LOW” เม่อื มีการกดปุม ดังน้ันจากโปรแกรมขางตน หลอดแอลอีดีจะมีสถานะเปลงแสงเม่ือ มีการกดสวิตซ และมสี ถานะดับหลงั ยกเลกิ การกดสวติ ซ

ภาคผนวก ค เฉลยคำถามทายบท



บทท่ี 1 1. หนว ยประมวลผลขนาดเลก็ ทน่ี ำไปใชส ำหรบั ควบคุมการทำงานอปุ กรณอเิ ลก็ ทรอนิกสเพ่อื ชว ยลด ความซับซอนของวงจร ผา นการเขยี นโปรแกรม 2. mcs-51, PIC, AVR 3. AVR 4. Arduino IDE 5. ซพี ลสั พลสั 6. 2 วิธี 7. ตรวจสอบไวยากรณเ บื้องตน บทที่ 2 1. setup() และ loop() 2. setup() ดำเนินการเพยี งรอบเดยี ว สวน loop() ทำงานลกั ษณะวนซำ้ ไมม ีท่ีสนิ้ สดุ 3. เปนคำส่งั สำหรบั สื่อสารระหวางบอรด Arduino และเคร่อื งคอมพิวเตอรท่ีเชอื่ มตอกนั อยูแบบ อนกุ รม 4. ตวั แปรโกลบอลคือตวั แปรที่ถกู ประกาศภายนอกฟงกช ันซ่งึ นยิ มถูกประกาศไวส วนบนของ โปรแกรมเพ่ือใหสามารถใชง านตัวแปรดงั กลาวนไ้ี ดทุกสวนของโปรแกรม ซง่ึ แตกตา งกบั ตวั แปรโลคอ ลเน่อื งจากตัวแปรโลคอลจะถูกประกาศไวภ ายในขอบเขตที่จำกัด เชนในฟง กชนั หนึ่ง และสามารถใช งานคาตวั แปรไดเ พียงเฉพาะในขอบเขตดงั กลา วเทา นัน้ 5. คา ทไ่ี มส ามารถเปลยี่ นแปลงคา ไดอีก 6. ตัวแปรทีส่ ามารถเก็บขอ มูลท่เี ปนชนดิ เดียวกันไดม ากกวา 1 คา โดยการเขาถึงขอมลู แตละคา สามารถใชตำแหนงดรรชนเี ปนตวั เขาถึง 7. 011002 8. 10112 9. int a = 0; void setup() { Serial.begin(9600); for(a = 1; a <= 10; a++){ if(a != 6){ Serial.println(a);


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook