โครงการสื่อการสอน อุปกรณ์คอมพิวเตอร์ Arduino
โครงการสื่อการสอน อุปกรณ์คอมพิวเตอร์
โดยใช้บอร์ด 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 ให้ต่อลงกราวน์ ดังภาพ
ภาพจาก http://www.thaieasyelec.com/
ศึกษาการใช้งาน
บอร์ด 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
0 ความคิดเห็น:
แสดงความคิดเห็น
สมัครสมาชิก ส่งความคิดเห็น [Atom]
<< หน้าแรก