วันศุกร์ที่ 22 มกราคม พ.ศ. 2559

สื่อการสอนอุปกรณ์คอมพิวเตอร์ (สื่อพูดได้)

โครงการสื่อการสอน อุปกรณ์คอมพิวเตอร์




       โดยใช้บอร์ด Arduino UNO R3 เป็นคอนโทรลเลอร์ในการติดต่อกับ อุปกรณ์อินพุต (สวิตซ์) และ อุปกรณ์เอาต์พุต (หลอด LED  และบอร์ด MP3)

อุปกรณ์ที่ใช้ในการทดลอง
1.บอร์ด Arduino UNO R3
2.บอร์ด MP3
3.หลอด LED
4.ตัวต้านทาน 100 โอห์ม
5.ตัวต้านทาน 4.7 กิโลโอห์ม
6.สวิตปุ่มกด
7.แจ็คลำโพลงตัวเมีย
8.ลำโพง
9. USB Type B
         10.ถ่าน 9 โวลต์ หรือ ใช้สาย USB Type B เสียบที่ บอร์ด Arduino UNO R3 เข้ากับ Power bank


         11.สายไฟ


อธิบายหลักการทำงานของระบบ
เมื่อมีการกดปุ่มสวิตซ์(Pull up) บอร์ด Arduino UNO R3 จะทำการรับอินพุตเข้ามา แล้วนำไปตรวจสอบเงื่อนไขว่าปุ่มกดที่กดเข้ามานั้น เป็นปุ่มกดที่เท่าไร เช่น มีการกดปุ่มที่1 เข้ามา บอร์ด Arduino UNO R3 ก็จะส่งข้อมูลไปยัง บอร์ด MP3 ผ่านพอร์ต Serial ให้ทำการเล่นเสียงลำดับที่ 001 ซึ่งข้อมูลที่ส่งเข้ามาจะเป็นข้อมูลฐานสิบหก (0x01) โดยสัญญาณเสียงที่ปล่อยออกจากมาบอร์ด MP3 จะถูกส่งออกมาทางพิน PH_L (เสียงลำโพงด้านซ้าย) และ PH_R (เสียงลำโพงด้านขวา)  แล้ว บอร์ด Arduino UNO R3 สั่งในหลอด led ที่ 1 ติดสว่าง เพื่อเป็นการบอกตำแหน่งของอุปกรณ์นั้นๆ เมื่อเสียงลำดับที่ 1 เล่นจบ บอร์ด Arduino UNO R3 ก็จะรอรับคำสั่งต่อไป
แต่ถ้ามีการกดปุ่มใดๆในระหว่างเล่นเสียงลำดับที่ 001 ยังเล่นไม่จบ บอร์ด Arduino UNO R3 ก็จะทำการหยุดเสียงลำดับเสียงที่ 001 แล้วจะทำการเล่นเสียลำดับถัดไปทันที

 ยกตัวอย่าง ให้อุปกรณ์ตัวที่ 1 เป็นแรม
เมื่อมีการกดปุ่มที่ 1 บอร์ด Arduino UNO R3 ก็จะสั่งให้ หลอด led ที่1 ติดสว่าง ซึ่งเป็นการบอกถึงตำแหน่งของแรม และ บอร์ด Arduino UNO R3 ก็จะส่งข้อมูล (0x01) ไปให้ บอร์ด MP3 เพื่อให้เล่นเสียงลำดับที่ 001 หรือ เป็นการเล่นเสียงความหมายของแรมนั้นเอง เมื่อเล่นจนจบไฟล์เสียงแรมนี้แล้ว บอร์ด Arduino UNO R3 ก็จะรอรับคำสั่งต่อไป

สิ่งที่ต้องเตรียม
     ดาวน์โหลดไลบราลี่ SofewareSerial ไปวางไว้ใน C:\Program Files (x86)\Arduino\libraries



** การใช้งานโหมด Serial ต้องบัดกรีจุด M0 ให้ลอยขาไว้ ส่วน M1 ให้ต่อลงกราวน์ ดังภาพ















ศึกษาการใช้งาน บอร์ด MP3 เพิ่มเติมได้ที่
          http://www.thaieasyelec.com/products/embedded-module/thaieasyelec-mp3-embedded-module-detail.html

อธิบายการเขียนโปรแกรม























บรรทัดที่ 1 เรียกใช้ไลบราลี่ SoftwareSerial ซึ่งทำหน้าที่เป็นพอร์ตสื่อสาร ในการรับ – ส่ง ข้อมูล
               ดาวน์โหลดไลบราลี่ SofewareSerial ไปวางไว้ใน C:\Program Files (x86)\Arduino\libraries

บรรทัดที่ 3       กำหนดพิน D2 เป็นขา Rx ( รับข้อมูล )
          กำหนดพิน D3 เป็นขา Tx ( ส่งข้อมูล )
เพื่อกำหนดเป็นพินการสื่อสารข้อมูลระหว่างบอร์ด Arduino กับบอร์ด MP3

บรรทัดที่ 5  กำหนดพิน D4 (พินดิจิตอล) ให้เก็บอยู่ในตัวแปร BUSY
บรรทัดที่ 6  ประกาศตัวแปรชนิดบูลีน ชื่อ cmd_stop ให้มีค่าเท่ากับ false (เป็นเท็จ)

บรรทัดที่ 9   กำหนดพิน A0 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt0  ( ปุ่มกดที่ 1 )
บรรทัดที่ 10 กำหนดพิน A1 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt1  ( ปุ่มกดที่ 2 )
บรรทัดที่ 11 กำหนดพิน A2 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt2  ( ปุ่มกดที่ 3 )
บรรทัดที่ 12 กำหนดพิน A3 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt3  ( ปุ่มกดที่ 4 )
บรรทัดที่ 13 กำหนดพิน A4 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt4  ( ปุ่มกดที่ 5 )


บรรทัดที่ 14 กำหนดพิน A5 (พินอะนาล็อก) ให้เก็บอยู่ในตัวแปร bt5  ( ปุ่มกดที่ 6 )





บรรทัดที่ 18 กำหนดพิน D5  (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led0  ( led หลอดที่ 1)
บรรทัดที่ 19 กำหนดพิน D6  (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led1  ( led หลอดที่ 2)
บรรทัดที่ 20 กำหนดพิน D7  (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led2  ( led หลอดที่ 3)
บรรทัดที่ 21 กำหนดพิน D8  (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led3  ( led หลอดที่ 4)
บรรทัดที่ 22 กำหนดพิน D9  (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led4  ( led หลอดที่ 5)
บรรทัดที่ 23 กำหนดพิน D10 (พินดิจิตอล)  ให้เก็บอยู่ในตัวแปร led5  ( led หลอดที่ 6)













บรรทัดที่ 26 ประกาศฟังค์ชั่น setup() ทำหน้าที่เป็นตัวกำหนดหน้าที่ของพินต่างๆของไมโครคอนโทรลเลอร์

บรรทัดที่ 28 กำหนดให้ตัวแปร bt0 หรือ พิน A0 ทำหน้าที่เป็น อินพุต
บรรทัดที่ 29 กำหนดให้ตัวแปร bt1 หรือ พิน A1 ทำหน้าที่เป็น อินพุต
บรรทัดที่ 30 กำหนดให้ตัวแปร bt2 หรือ พิน A2 ทำหน้าที่เป็น อินพุต
บรรทัดที่ 31 กำหนดให้ตัวแปร bt3 หรือ พิน A3 ทำหน้าที่เป็น อินพุต
บรรทัดที่ 32 กำหนดให้ตัวแปร bt4 หรือ พิน A4 ทำหน้าที่เป็น อินพุต
บรรทัดที่ 33 กำหนดให้ตัวแปร bt5 หรือ พิน A5 ทำหน้าที่เป็น อินพุต

















บรรทัดที่ 35 กำหนดให้ตัวแปร led0 หรือ พิน D5  ทำหน้าที่เป็น เอาต์พุต
บรรทัดที่ 36 กำหนดให้ตัวแปร led1 หรือ พิน D6  ทำหน้าที่เป็น เอาต์พุต
บรรทัดที่ 37 กำหนดให้ตัวแปร led2 หรือ พิน D7 ทำหน้าที่เป็น เอาต์พุต
บรรทัดที่ 38 กำหนดให้ตัวแปร led3 หรือ พิน D8  ทำหน้าที่เป็น เอาต์พุต
บรรทัดที่ 39 กำหนดให้ตัวแปร led4 หรือ พิน D9  ทำหน้าที่เป็น เอาต์พุต
บรรทัดที่ 40 กำหนดให้ตัวแปร led5 หรือ พิน D10 ทำหน้าที่เป็น เอาต์พุต

บรรทัดที่ 42 กำหนดให้ตัวแปร BUSY หรือ พิน D4 ทำหน้าที่เป็น INPUT
บรรทัดที่ 43 กำหนด อัตราความเร็วในการแสดงผลข้อมูล ผ่านทาง Serialmonitor มีความเร็วที่ 9600
บรรทัดที่ 44 กำหนด อัตราความเร็วในการรับ-ส่ง ข้อมูล ผ่านทางสาย serial มีความเร็วที่ 9600
บรรทัดที่ 45 ปิดฟังก์ชั่น setup()


























บรรทัดที่ 47 ประกาศฟังค์ชั่น loop() ซึ่งทำหน้าที่สั่งงานไมโครคอนโทรลเลอร์ ในลักษณะการทำงานวนซ้ำๆ

บรรทัดที่ 50 ถ้ามีการกดสวิทซ์ bt0 (ปุ่มกดที่ 1) จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่ 52-56
บรรทัดที่ 51 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt0 (ปุ่มกดที่ 1)
บรรทัดที่ 52 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง   
บรรทัดที่ 53 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 54 สั่งให้ led0 ติดสว่าง( led หลอดที่ 1) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 1
บรรทัดที่ 55 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 001
บรรทัดที่ 56 เมื่อเสียงที่ 001 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 001 ซ้ำ
บรรทัดที่ 57 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt0  (ปุ่มกดที่ 1)

บรรทัดที่ 60 ถ้ามีการกดสวิทซ์ bt1 (ปุ่มกดที่ 2)  จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่ 62-66
บรรทัดที่ 61 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt1 (ปุ่มกดที่ 2)
บรรทัดที่ 62 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง  
บรรทัดที่ 63 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 64 สั่งให้ led1 ติดสว่าง( led หลอดที่ 2) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 2
บรรทัดที่ 65 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 002
บรรทัดที่ 66 เมื่อเสียงที่ 002 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 002 ซ้ำ
บรรทัดที่ 67 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt1  (ปุ่มกดที่ 2)

























บรรทัดที่ 70 ถ้ามีการกดสวิทซ์ bt2 (ปุ่มกดที่ 3)  จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่ 72-76
บรรทัดที่ 71 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt2 (ปุ่มกดที่ 3)
บรรทัดที่ 72 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง  
บรรทัดที่ 73 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 74 สั่งให้ led2 ติดสว่าง( led หลอดที่ 3) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 3
บรรทัดที่ 75 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 003
บรรทัดที่ 76 เมื่อเสียงที่ 003 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 003 ซ้ำ
บรรทัดที่ 77 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt2  (ปุ่มกดที่ 3)


บรรทัดที่ 80 ถ้ามีการกดสวิทซ์ bt3 (ปุ่มกดที่ 4)   จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่ 82-86
บรรทัดที่ 81 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt3 (ปุ่มกดที่ 4)
บรรทัดที่ 82 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง  
บรรทัดที่ 83 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 84 สั่งให้ led3 ติดสว่าง( led หลอดที่ 4) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 4
บรรทัดที่ 85 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 004
บรรทัดที่ 86 เมื่อเสียงที่ 004 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 004 ซ้ำ
บรรทัดที่ 87 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt3  (ปุ่มกดที่ 4)


























บรรทัดที่ 90 ถ้ามีการกดสวิทซ์ bt4 (ปุ่มกดที่ 5)   จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่  92-96
บรรทัดที่ 91 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt4 (ปุ่มกดที่ 5)
บรรทัดที่ 92 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง  
บรรทัดที่ 93 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 94 สั่งให้ led4 ติดสว่าง( led หลอดที่ 5) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 5
บรรทัดที่ 95 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 005
บรรทัดที่ 96 เมื่อเสียงที่ 005 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 005 ซ้ำ
บรรทัดที่ 97 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt4  (ปุ่มกดที่ 5)

บรรทัดที่ 100 ถ้ามีการกดสวิทซ์ bt5 (ปุ่มกดที่ 6)  จะเริ่มการทำงานของคำสั่งในวงเล็บ ตั้งแต่บรรทัดที่ 103-107
บรรทัดที่ 101 เปิดการสั่งงานในเงื่อนไข การกดสวิตซ์ bt5 (ปุ่มกดที่ 6)
บรรทัดที่ 103 เรียกใช้ฟังก์ชั่น stopsound() เพื่อสั่งหยุดเล่นเสียง  
บรรทัดที่ 104 สั่งให้ led ดับทุกหลอด
บรรทัดที่ 105 สั่งให้ led5 ติดสว่าง( led หลอดที่ 6) เพื่อให้ทราบตำแหน่งของอุปกรณ์คอมพิวเตอร์ตัวที่ 6
บรรทัดที่ 106 สั่งให้ บอร์ด MP3 เล่นเสียงที่ 006
บรรทัดที่ 107 เมื่อเสียงที่ 006 เล่นจบ ให้หยุดรอคำสั่งต่อไป โดยที่ไม่เล่นเสียง 006 ซ้ำ
บรรทัดที่ 109 ปิดการทำงานเงื่อนไขของการกดสวิทซ์ bt5  (ปุ่มกดที่ 6)

บรรทัดที่ 112 สิ้นสุดการทำงานของฟังก์ชั่น loop()

















บรรทัดที่ 124 ประกาศฟังก์ชั่นย่อย  led_off ทำหน้าที่สั่งปิด led ทุกหลอด

บรรทัดที่ 127 สั่งให้ led0  ดับ ( led หลอดที่ 1 ดับ)
บรรทัดที่ 128 สั่งให้ led1  ดับ ( led หลอดที่ 2 ดับ)
บรรทัดที่ 129 สั่งให้ led2  ดับ ( led หลอดที่ 3 ดับ)
บรรทัดที่ 130 สั่งให้ led3  ดับ ( led หลอดที่ 4 ดับ)
บรรทัดที่ 131 สั่งให้ led4  ดับ ( led หลอดที่ 5 ดับ)
บรรทัดที่ 132 สั่งให้ led5  ดับ ( led หลอดที่ 6 ดับ)

บรรทัดที่ 134 ปิดฟังก์ชั่นย่อย led_off 














บรรทัดที่ 140ประกาศฟังก์ชั่นย่อย  stop_sound ทำหน้าที่สั่งหยุดเล่นเสียง

บรรทัดที่ 142 สั่งให้ หยุดเล่นเสียง
บรรทัดที่ 143 สั่งให้ โปรแกรมส่งคำสั่งเพียงรอบเดียว
บรรทัดที่ 144 สั่งให้ หน่วงเวลา 0.2 วินาที

บรรทัดที่ 145 ปิดฟังก์ชั่นย่อย stop_sound


ดาวน์โหลดคู่มือได้ที่   http://1drv.ms/1SUF1Ik