สื่อการสอนอุปกรณ์คอมพิวเตอร์ (สื่อพูดได้)
โครงการสื่อการสอน อุปกรณ์คอมพิวเตอร์
โดยใช้บอร์ด 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