ค่มู อื ประกอบการอบรม โครงการ R Cheewa Inno Camp 2020 5. บรรทัดที่ 16 – 22 เป็นการสั่งการ matrix แสดงข้อความ ณ ตําแหน่งต่าง ๆ ในรูปแบบ แอนิเมชัน ซึ่งนักพัฒนาสามารถปรับเปลี่ยนพารามิเตอร์ในการเคลื่อนไหวได้ ได้แก่ ความเร็วในการเคลอ่ื นไหว ตําแหน่งเริม่ ต้นและสิน้ สดุ ของการ scroll ดังที่ได้กล่าวไปในข้างต้น KidBright IDE มีการติดตั้ง Library ที่จําเป็นสําหรับการใช้งาน อุปกรณ์มาอยู่แล้ว ทําให้ในขณะที่เขียนโปรแกรมผู้ใช้เพียงต่อบล็อกไม่กี่บล็อก ก็สามารถทําการ ควบคุม Dot Matrix LED ได้ ในขณะที่โปรแกรม Arduino IDE ผู้ใช้จะต้องทําการเขียนโปรแกรม เพื่อเลื่อนข้อความด้วยตนเองทุกข้ันตอน การหมุนข้อความ ขนาดข้อความ การตัดคํา การปรับความเร็ว และตําแหน่งเริ่มต้น – สิ้นสุดของการเลื่อนข้อความ ไม่สามารถทําได้โดยง่ายใน KidBright IDE เพราะบล็อกคําสั่งไม่ได้ อนุญาตให้ทําได้โดยตรง ในขณะที่โปรแกรม Arduino IDE อนุญาตให้นักพัฒนาสามารถควบคุมได้ ทงั้ หมด ความสามารถของ IDE จึงเปน็ ขอ้ คาํ นึงเสมอวา่ จะเลือกใช้ IDE ตวั ใด 10.6.2 การอา่ นคา่ Light Sensor เพ่ือนำมาแสดงบน Dot Matrix LED ใน KidBright IDE สามารถทาํ ได้โดยตอ่ บลอ็ กดงั รูปภาพ 10-14 รูปภาพ 10-14 ภาพโปรแกรมแสดงผล Light Level บน Dot Matrix LED ในโปรแกรม KidBright IDE หลักการของการแสดงผลจะคล้ายกับตัวอย่าง 10.6.1 เพียงแต่เปลี่ยนจากข้อความเป็นค่า ของระดับแสง ในตัวอย่างต่อไปนี้จะเป็นการแสดง Light Level บน Dot Matrix LED ในโปรแกรม Arduino IDE 99
คมู่ ือประกอบการอบรม โครงการ R Cheewa Inno Camp 2020 รปู ภาพ 10-15 ภาพโค้ดแสดงผล Light Level บน Dot Matrix LED ในโปรแกรม Arduino IDE อธิบายการทํางานของโค้ดภาษา C/C++ ใน Arduino IDE ได้ดงั นี้ 1. บรรทัดที่ 1 – 3 เป็นการนาํ เขา้ library ท่จี าํ เป็น 2. บรรทดั ที่ 5 เปน็ การสร้าง Object ชื่อ matrix เพ่ือควบคุม Dot Matrix LED 100
คูม่ อื ประกอบการอบรม โครงการ R Cheewa Inno Camp 2020 3. บรรทัดที่ 7 – 11 เป็นการสร้าง Function เพื่ออ่านค่า Analog Pin หมายเลข 36 ของ ไมโครคอนโทรลเลอร์ ESP32 และคาํ นวณเปน็ ระดบั ความเข้มแสง 4. บรรทัดท่ี 13 เป็นการสรา้ ง Function setup เพือ่ ตงั้ ค่าอุปกรณ์ ก่อนการใชง้ าน 5. บรรทัดที่ 14 – 16 เป็นการตั้งค่าโหมดของการอ่านค่า Analog Sensor ซึ่งในที่นี้คือการตั้ง คา่ สําหรับอา่ นคา่ LDR Light Sensor 6. บรรทดั ที่ 18 – 23 เป็นการตงั้ ค่าสาํ หรบั การควบคมุ matrix 7. บรรทัดที่ 26 คาํ ส่ัง loop จะดาํ เนนิ การส่งิ ที่อยใู่ นปีกกาตลอดไป 8. บรรทัดที่ 27 เป็นการเรียกใช้ Function getLightLevel เพื่อคํานวณระดับความเข้มแสง และเกบ็ ผลลัพธ์การคํานวณใส่ในตัวแปรช่อื lightLevel 9. บรรทัดที่ 28 – 33 เป็นการสั่งการ matrix ให้แสดงค่าระดับความเข้มแสงในรูปแบบ แอนเิ มชัน สังเกตว่าการอ่านค่า LDR Light Sensor สําหรับบอร์ด KidBright จะมีรูปแบบเฉพาะตัว ซึ่งอาจจะแตกต่างกับการอ่านค่าแสงจาก LDR Sensor ในบอร์ดอื่น ๆ ทั้งนี้เป็นเพราะเรากําหนด โหมดของ Analog Sensor ตามโหมดที่ KidBright IDE ใช้เป็นค่าเริ่มต้น และการคํานวณค่า Light Level ก็มีการใช้คา่ คงท่ี 3400 ซ่งึ กเ็ ปน็ calibration factor ที่ใช้ใน KidBright IDE อีกดว้ ย 10.6.3 การอ่านคา่ Temperature Sensor เพอื่ นำมาแสดงบน Dot Matrix LED คําสั่งที่ใช้แสดงผลบน Dot Matrix LED จะมีลักษณะเหมือนกับตัวอย่างก่อนหน้าทั้งใน 10.6.1 และ 10.6.2 เพียงแต่เปลี่ยนแปลงตัวแปรที่จะใช้แสดงผลว่าจะเป็นข้อความ หรือ ค่าระดับ แสง หรือค่าอุณหภูมิ หากเราต้องการแสดงผลค่าอุณหภูมิให้เราเลือกใช้บล็อก Temperature Sensor ใน KidBright IDE สามารถทําได้โดยต่อบล็อกดงั รูปภาพ 10-16 รปู ภาพ 10-16 ภาพโปรแกรมแสดงผลอณุ หภูมิบน Dot Matrix LED ในโปรแกรม KidBright IDE 101
คมู่ ือประกอบการอบรม โครงการ R Cheewa Inno Camp 2020 ใน Arduino IDE สามารถทําได้โดยโค้ดตอ่ ไปน้ี รูปภาพ 10-17 ภาพโคด้ แสดงผลอุณหภูมิบน Dot Matrix LED ในโปรแกรม Arduino IDE 102
คู่มอื ประกอบการอบรม โครงการ R Cheewa Inno Camp 2020 อธบิ ายการทาํ งานของโค้ดภาษา C/C++ ใน Arduino IDE ไดด้ ังน้ี 1. บรรทดั ที่ 1 – 3 เป็นการนาํ เข้า library ที่จําเปน็ 2. บรรทัดที่ 5 เปน็ การสร้าง Object ชือ่ matrix เพ่ือควบคุม Dot Matrix LED 3. บรรทัดที่ 7 – 21 เป็นการสร้าง Function เพื่ออ่านข้อมูลผ่านโปรโตคอล I2C ที่ Address 0x4D แลว้ ทาํ การคาํ นวณเปน็ อณุ หภมู ิในหนว่ ย celcius 4. บรรทัดท่ี 23 เปน็ การสรา้ ง Function setup เพอื่ ตงั้ คา่ อปุ กรณ์ ก่อนการใชง้ าน 5. บรรทัดที่ 24 – 25 เป็นการตั้งค่าว่าจะใช้ I2C บน Pin ที่ 4 และ 5 ซึ่งมีการเชื่อมต่อกับ อปุ กรณ์ Temperature Sensor LM73 6. บรรทัดที่ 27 – 32 เปน็ การตง้ั ค่าสําหรับการควบคุม matrix 7. บรรทัดที่ 35 คาํ สั่ง loop จะดาํ เนินการสง่ิ ที่อยใู่ นปีกกาตลอดไป 8. บรรทัดที่ 36 เป็นการเรียกใช้ Function getTemperature เพื่อคํานวณอุณหภูมิและเก็บ ผลลัพธก์ ารคํานวณใสใ่ นตวั แปรช่ือ celcius 9. บรรทัดที่ 37 – 43 เปน็ การสงั่ การ matrix ให้แสดงค่าอณุ หภูมใิ นรปู แบบแอนเิ มชัน สังเกตว่า Wire1 เป็น Object ที่ไม่ถูกสร้างจากโค้ดข้างต้น เหตุผลเพราะ Wire1 นั้นถูก สรา้ งอย่ใู น Wire.h อยู่แลว้ จงึ สามารถนํามาใช้ไดเ้ ลยโดยไม่ต้องสรา้ งใหม่ 10.6.4 การควบคุม Buzzer เพอ่ื เล่นเสียงโน้ตดนตรี การเขียนโปรแกรมควบคุมการเล่นเสียงดนตรีในโปรแกรม KidBright IDE สามารถทําได้ โดยตอ่ บล็อกตา่ ง ๆ เขา้ ดว้ ยกันดงั รูปภาพ 10-18 รปู ภาพ 10-18 ภาพโปรแกรมสาํ หรบั ควบคมุ การเล่นเสียงดนตรใี น KidBright IDE 103
คมู่ ือประกอบการอบรม โครงการ R Cheewa Inno Camp 2020 อธิบายการทาํ งานของบลอ็ กต่าง ๆ ได้ดังนี้ 1. Set Volume เปน็ การตงั้ ค่าความดังของเสียงเปน็ 25% 2. Note / Duration เป็นการเปิดเล่นเสียงตัวโน้ต ซึ่งจะเปิดเสียงไว้นานหรือเร็วก็ตามแต่ชนิด ของตัวโนต้ ที่กาํ หนด และเมื่อครบกําหนดเวลาแลว้ เสยี งจะดับ 3. Delay เป็นการเว้นเสียงระหว่างตัวโน้ต เป็นเวลา 0.5 วินาที โดยในขณะเวลาที่เว้นจะไม่มี เสียง buzzer ดังขนึ้ ส่วนการเขียนโปรแกรมควบคุมการเล่นเสียงดนตรีในโปรแกรม Arduino IDE สามารถทํา ได้ดังโคด้ ตวั อย่างต่อไปนี้ รูปภาพ 10-19 ภาพโคด้ สาํ หรับควบคมุ การเลน่ เสียงดนตรใี น Arduino IDE 104
คมู่ ือประกอบการอบรม โครงการ R Cheewa Inno Camp 2020 อธิบายการทํางานของโค้ดภาษา C/C++ ใน Arduino IDE ไดด้ ังนี้ 1. บรรทัดที่ 1 – 3 เป็นการประกาศตัวแปรต่าง ๆ ที่ใช้ในโปรแกรม ได้แก่ ค่า ch ซึ่งเป็น ตัวเลขแทน channel ซงึ่ จะใชใ้ นการระบุ Group และ Timer ว่าจะใช้ตวั ใด ค่า bpm หรอื beat per minute ในทางดนตรี และค่า quarter_note_delay ซึ่งแทนความนานของ โน้ตตัวดําในหนว่ ยมิลลวิ ินาที 2. บรรทัดที่ 6 – 7 เป็นการตั้งค่า Timer และกําหนดการใช้งานเข้ากับ Pin โดยคําส่ัง ledcSetup เป็นการกําหนดให้ Timer ที่แทนด้วยเลข ch มีความถี่เป็น 0 และใช้ resolution เป็น 8 ส่วนคําสั่ง ledcAttachPin เป็นคําส่ังที่จะแนบ Timer เข้ากับ Pin หมายเลข 13 ทต่ี ่ออยกู่ บั Buzzer ของบอร์ด KidBright 3. บรรทัดท่ี 10 คําสงั่ loop จะดําเนนิ การสิง่ ท่ีอยใู่ นปกี กาตลอดไป 4. บรรทัดที่ 11 เป็นการกําหนด duty cycle ของ Timer หรือก็คือการตั้งค่าความดังของ Buzzer น่ันเอง ซ่ึงในตวั อยา่ งต้ังไว้เป็น 25% 5. บรรทัดที่ 13 และ 19 เป็นการตั้งค่า frequency ให้กับ Timer เป็นความถี่ของตัวโน้ต ดนตรีในอ๊อกเทฟต่าง ๆ เพื่อให้ buzzer เล่นเสียง ทั้งนี้ ตัวแทนตัวโน้ตที่สามารถถูกใช้ใน โ ค ้ ด ไ ด ้ ม ี ด ั ง น ี ้ NOTE_C, NOTE_Cs, NOTE_D, NOTE_Eb, NOTE_E, NOTE_F, NOTE_Fs, NOTE_G, NOTE_Gs, NOTE_A, NOTE_Bb, NOTE_B และ NOTE_MAX 6. บรรทัดที่ 14 และ 20 เป็นคําสั่งให้บอร์ด KidBright ไม่ทําอะไรเพิ่มเติมเป็นเวลานาน เทา่ กบั ชนิดของตวั โน้ตนนั้ ๆ 7. บรรทัดที่ 15 และ 21 เป็นคําสั่งให้ดับเสียงของ Buzzer โดยการตั้งค่าความถี่ให้เป็น 0 Hertz 8. บรรทัดที่ 17 และ 23 เป็นคําสั่งให้บอร์ด KidBright ไม่ทําอะไรเพิ่มเติม เป็นเวลา 500 มิลลิวนิ าที หรือ 0.5 วินาที สังเกตว่าการเล่นเสียงดนตรีทั้งในโปรแกรม KidBright IDE และ Arduino IDE มีชุดคําส่ัง สําเร็จรูปที่ทําให้ผู้ใช้โปรแกรมสามารถเลือกเล่นตัวโน้ต เลือกอ๊อกเทฟ เลือกความนานของตัวโน้ต และระดับความดังของเสยี งตามความต้องการได้ท้งั คู่ 105
คูม่ ือประกอบการอบรม โครงการ R Cheewa Inno Camp 2020 10.6.5 การใชง้ านปุ่มกดบนบอร์ด KidBright เพ่ือเล่นเสยี งดนตรี การใช้ KidBright IDE เพื่อตรวจจับการกดปุ่มบนบอร์ด KidBright สามารถทําได้โดยเติม เงือ่ นไขเพอื่ ตรวจสอบสถานะปุ่มกด เช่น หากมีการกดอยู่ใหท้ าํ การเล่นเสยี ง เช่นตวั อย่างน้ี รปู ภาพ 10-20 ภาพโปรแกรมสาํ หรับใชง้ านปุ่มกดบนบอร์ด KidBright เพื่อเลน่ เสยี งดนตรี ใน KidBright IDE คาํ อธบิ ายการทาํ งานของโปรแกรม มดี ังนี้ 1. if Switch is pressed เปน็ การตรวจสอบเง่อื นไข ว่าปมุ่ ถูกกดอยูจ่ รงิ หรอื ไม่ 2. do จะยอมให้บล็อกภายในทาํ งานได้ หากปมุ่ ถกู กดอยจู่ ริง 3. Note / Duration เป็นคําสง่ั เล่นเสยี งดนตรี เช่นเดียวกบั ในตวั อย่างกอ่ นหน้า ในทํานองเดียวกนั เราสามารถใช้ Arduino IDE ทาํ ได้โดยใชโ้ คด้ ต่อไปนี้ รปู ภาพ 10-21 ภาพโปรแกรมสําหรบั ใช้งานปมุ่ กดบนบอรด์ KidBright เพอื่ เลน่ เสียงดนตรี ใน KidBright IDE 106
คู่มอื ประกอบการอบรม โครงการ R Cheewa Inno Camp 2020 อธิบายการทํางานของโคด้ ภาษา C/C++ ใน Arduino IDE ไดด้ งั นี้ 1. บรรทัดที่ 1 – 3 เป็นการประกาศตัวแปรต่าง ๆ ที่ใช้ในโปรแกรม ซึ่งเกี่ยวข้องกับการ ควบคุมเสียง 2. บรรทัดที่ 5 – 6 เป็นการประกาศตัวแปรหมายเลข Pin ของปุ่มกด ได้แก่ ปุ่ม S1 เป็นเลข 16 และ ปุม่ S2 เปน็ เลข 14 3. บรรทดั ที่ 9 – 10 เป็นการตงั้ ค่าทเ่ี กย่ี วข้องกับการควบคุมเสียง 4. บรรทดั ท่ี 12 – 13 เป็นการตั้งค่าโหมดการทาํ งานของ Pin ซง่ึ เกี่ยวข้องกับป่มุ กด 5. บรรทัดที่ 16 คาํ สงั่ loop จะดาํ เนนิ การสิ่งทีอ่ ยู่ในปีกกาตลอดไป 6. บรรทัดที่ 17 และ 22 เป็นตรวจสอบวา่ ปมุ่ ถูกกดอยหู่ รือไม่ 7. บรรทัดที่ 18 – 20 และ 23 – 25 เป็นการเล่นเสียงโน้ตดนตรี เช่นเดียวกับตัวอย่างก่อน หนา้ 107
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110