資料介紹
描述
介紹
Music and Lights Workbench (MLWB) 旨在通過提供一系列允許構(gòu)建樂譜/曲調(diào)和/或燈光效果。通過使用這些命令及其應(yīng)用程序,用戶將開始深入了解什么是編程,并有望激發(fā)他們的進(jìn)一步興趣。
然而,它同樣適用于那些更有經(jīng)驗(yàn)的人,他們可能喜歡探索在 Arduino 上編寫音樂和組合燈光效果。
所采用的方法是提供一組簡單易用且邏輯應(yīng)用的命令(功能),通過演奏音符和/或點(diǎn)亮 LED(燈)將計(jì)算機(jī)與外界聯(lián)系起來。
MLWB 命令在很大程度上彼此獨(dú)立,可用于僅播放音樂、僅點(diǎn)亮燈光或兩者的組合。
MLWB 不需要使用任何其他編程功能、技術(shù)或邏輯,只需要簡單的命令語句。雖然 if/then、do/while、for 循環(huán)等條件結(jié)構(gòu)可以用于更高級(jí)的用途,但在適當(dāng)?shù)慕虒W(xué)下,它們并不是從 MLWB 中立即獲得結(jié)果所必需的。
任何試圖掌握一門新學(xué)科的人,這里是基本的計(jì)算機(jī)編程,都可以從精通該學(xué)科的人的指導(dǎo)中受益。MLWB 也不例外,它的使用和應(yīng)用最好是通過導(dǎo)師對(duì)學(xué)生的指導(dǎo)和指導(dǎo)來實(shí)現(xiàn)。
動(dòng)機(jī)
MLWB 是為作者的孫輩設(shè)計(jì)的,旨在為他們提供一些機(jī)會(huì)來了解如何輕松創(chuàng)建計(jì)算機(jī)程序以在現(xiàn)實(shí)世界中產(chǎn)生效果。希望通過思考播放簡單音樂和/或打開和關(guān)閉燈 (LED) 所需的邏輯步驟,這將達(dá)到頂峰并激發(fā)他們更深入探索編程潛力的愿望。
好的,在這一點(diǎn)上,一些引述:
告訴我,我會(huì)忘記;教我,我可能會(huì)記得;讓我參與,我就會(huì)學(xué)習(xí)。- 本杰明·富蘭克林
教育不是灌滿鍋,而是點(diǎn)燃火。— WB 葉芝
教育是通向未來的通行證,因?yàn)槊魈鞂儆诮裉鞛橹龊脺?zhǔn)備的人。– 馬爾科姆 X
高尚的智慧,當(dāng)然,但它們確實(shí)說明了我試圖很好地表達(dá)的觀點(diǎn)。
先決條件
“讓鴨子排好隊(duì)”,或者讓事情井然有序和移動(dòng)所需的東西:
目標(biāo)受眾——愿意探索計(jì)算機(jī)程序如何快速、輕松和有趣地做某事的學(xué)生,無論年齡大小,
主管 -導(dǎo)師,擔(dān)任 MLWB 的教育者 - 導(dǎo)師和老師。導(dǎo)師應(yīng)該有一定的Arduino和IDE及其編程經(jīng)驗(yàn),但這可以是初級(jí)水平,
如果要探索/使用 MLWB 的音樂元素,那么對(duì)導(dǎo)師和學(xué)生都有一些音樂知識(shí)是有幫助的,但是,同樣,這可能處于初級(jí)水平——了解音符名稱、音階、音符間隔將非常有益,
硬件配置如下,
安裝在 Windows PC 上的 ARDUINO IDE,
在學(xué)生使用之前,導(dǎo)師通過探索其命令和內(nèi)置示例來徹底熟悉 MLWB。下載嬰兒床單作為指南和回憶錄以備不時(shí)之需,
最后,針對(duì)導(dǎo)師將向?qū)W生介紹的內(nèi)容制定計(jì)劃,逐節(jié)進(jìn)行。包含的示例可以構(gòu)成許多練習(xí)的基礎(chǔ)。
關(guān)于索引引用、術(shù)語和數(shù)據(jù)輸入的說明
索引參考和術(shù)語
年輕人和那些剛接觸任何與計(jì)算相關(guān)的人通常會(huì)發(fā)現(xiàn)很難理解與計(jì)算相關(guān)的術(shù)語,并且引用可以從 0(零)開始。因此,為了讓學(xué)生輕松進(jìn)入計(jì)算世界,MLWB 的設(shè)計(jì)如下:
1. 避免使用技術(shù)計(jì)算術(shù)語,例如不使用術(shù)語 LED,而是使用“光”,
2. 引用從 1 開始,而不是 0。例如,在 MLWB 中,將 LED 0 稱為“l(fā)ight1”,將 LED 1 稱為“l(fā)ight2”,依此類推。
數(shù)據(jù)輸入
為了讓學(xué)生盡可能容易地輸入鍵盤數(shù)據(jù),MLWB 使用小寫字母。下載草圖后,可以看到所有命令和音樂音高常數(shù)都大部分以小寫字母定義。通常可用的“pitches.h”文件包含 MLWB 中包含的所有相同音高定義,但這些都是大寫的。因此,每個(gè)間距定義都已重新定義,以減少任何大寫要求。例如,'note_C4',而不是'NOTE_C4',等等。這里的例外情況,如將立即發(fā)現(xiàn)的那樣,是保留為大寫以提高閱讀能力的注釋名稱。
MLWB 命令
MLWB 命令集主要分為兩組——執(zhí)行音樂指令的組和執(zhí)行燈光動(dòng)作的組。然而,有一個(gè)命令可以連接兩個(gè)“陣營”。這是重載函數(shù)的播放命令。它可以用于:
1. 在給定的持續(xù)時(shí)間內(nèi)播放給定的音符,或
2. 與 1. 一樣,但有一個(gè)額外的參數(shù)指定在播放音符時(shí)要點(diǎn)亮的燈號(hào) (LED)。它是一個(gè)重載函數(shù),可以以任何一種方式使用。
音樂指令
play - 將在給定的持續(xù)時(shí)間內(nèi)播放給定的音符,例如 play(note_C4, minim), play(note_FS2, crot + quav) 等。
play - 命令的重載版本,該命令允許在給定音符播放時(shí)指定燈 (LED) 用于照明,例如 play(note_C4, minim, light5), play(note_FS2, crot + quav, light1),等等
休息- 在給定的持續(xù)時(shí)間內(nèi)休息,在此期間保持沉默,例如休息(quav),休息(0.5)等
set_tempo - 以每分鐘節(jié)拍為單位設(shè)置音樂作品的速度(速度),例如 set_tempo(allegro)、set_tempo(144) 等。四分音符的值計(jì)算為 60/tempo。然后根據(jù)該計(jì)算值確定所有其他音符持續(xù)時(shí)間。
燈光指令
light_on - 打開給定的燈 (LED)。例如 light_on(light1)、light_on(7) 等。
light_off - 關(guān)閉給定的燈 (LED),例如 light_off(light1)、light_off(7) 等。
all_lights_on - 打開所有八個(gè)燈。例如 all_lights_on()。
all_lights_off - 關(guān)閉所有八盞燈。例如 all_lights_off()。
flash_light - 在給定的閃光間隔內(nèi)閃爍給定的燈,直到燈被另一個(gè)命令重新定義,例如 flash_light(light3, 0.5),閃光頻率為 1 秒 - 0.5 秒亮,0.5 秒關(guān)。該命令由微控制器的定時(shí)器 1 通過中斷服務(wù)程序 (ISR) 控制。這樣,即使在 flash_light 命令之后可能會(huì)執(zhí)行其他命令,閃光序列也會(huì)繼續(xù)運(yùn)行。閃爍一直持續(xù)到對(duì)同一燈 (LED) 執(zhí)行另一個(gè)命令為止。
strobe_all_lights - 此命令將在給定的周期內(nèi)按給定的方向(向前或向后/向后)頻閃所有八個(gè)燈,每個(gè)燈在給定的時(shí)間內(nèi)點(diǎn)亮。例如 strobe_all_lights(forwards, 10, 0.1)。控制權(quán)由命令保留,直到它完成給定的循環(huán)次數(shù)。
wait - 等待給定的持續(xù)時(shí)間(秒)停止除繼續(xù)運(yùn)行的現(xiàn)有 flash_light 命令之外的任何處理。例如 wait(5.5),等待 5.5 秒。
MLWB布局
MLWB 軟件是用 Arduino C++ 編寫的,包含六個(gè)選項(xiàng)卡。這些選項(xiàng)卡是:
music_and_lights_workbench - 此選項(xiàng)卡提供了 MLWB 的概述,與本文的大部分內(nèi)容相呼應(yīng)。
functions_lights - 此選項(xiàng)卡定義支持 MLWB 命令的功能,這些命令處理燈光 (LED) 控制,請(qǐng)參見上文。
functions_tones - 此選項(xiàng)卡定義支持處理音樂/音調(diào)控制的 MLWB 命令的功能。此外,此選項(xiàng)卡還定義了 setup() 函數(shù),請(qǐng)參見上文。
main_work_area - 這是應(yīng)該插入學(xué)生編碼的地方,是教學(xué)、探索和鞏固思想的中心焦點(diǎn)。
xample_lights - MLWB 開箱即用 (OOTB),帶有幾個(gè)現(xiàn)成的示例,演示了如何使用控制燈 (LED) 的命令。這些可以用作導(dǎo)師和學(xué)生之間的教學(xué)示例,見下文。
xample_tunes - MLWB 還提供了 OOTB 以及其他幾個(gè)現(xiàn)成的示例,演示了在連接的揚(yáng)聲器/蜂鳴器上播放音調(diào)(音樂)的命令的使用。同樣,這些可以用作導(dǎo)師和學(xué)生之間的教學(xué)示例,見下文。
收縮包裝示例
首先,包含兩個(gè)選項(xiàng)卡,提供音樂旋律/曲調(diào)和照明序列的示例。使用這些來查看每個(gè)本機(jī)命令(函數(shù))如何單獨(dú)和一起使用。事實(shí)上,這些也可以用作導(dǎo)師和學(xué)生之間的教學(xué)指南。
音樂示例選項(xiàng)卡稱為“xample_tunes”,包含以下教學(xué)示例:
middle_C - 演奏 C 大調(diào)音階,先是向上,然后再向下。作為建議,為什么不讓學(xué)生將其他音階和琶音提交到 MLWB 中?
twinkle_twinkle - 播放非常著名的兒歌 Twinkle, Twinkle, Little Star。
jingle_bells - 線索就在名字里!
happy_birthday - 生日慶祝活動(dòng)!
ditty_1 - 播放它,您一定能認(rèn)出它。除了播放旋律外,該示例還會(huì)在播放時(shí)點(diǎn)亮前七個(gè)燈。
door_bell_1 & door_bell_2 - 叮,當(dāng)!兩個(gè)門鈴示例在播放時(shí)也會(huì)點(diǎn)亮燈光。
ode_to_joy - 貝多芬第 9 交響曲(合唱),最后的樂章。
(還有一個(gè)額外的音樂示例。我想提供一些標(biāo)志性的、流行的和我真正喜歡的曲調(diào) - Penny Lane、Lennon 和 McCartney。我確實(shí)完成了將這首音樂的 G Major 樂譜提交到MLWB(在我女兒的幫助下)運(yùn)行得很漂亮。然而,我決定不發(fā)表它,因?yàn)槲也幌肭址赴鏅?quán)。這對(duì)我來說不是白費(fèi)力氣,雖然,因?yàn)槲覐拈喿x中學(xué)到了很多東西一個(gè)分?jǐn)?shù))。
燈光示例選項(xiàng)卡稱為“xample_lights”,包含以下說明示例:
sweep_lights - 八盞燈從每一端掃到中心,然后再掃回來。
chasing_lights - 燈光從一端到另一端遵循追逐效果。
marching_lights - 燈光在所有八盞燈中形成行進(jìn)模式。
flash_all_lights - 以不同的頻率閃爍八盞燈中的每盞燈。請(qǐng)注意,閃爍會(huì)一直持續(xù)到執(zhí)行另一個(gè)發(fā)光命令為止。
sos_morse_code - 在一個(gè) sos 周期內(nèi)閃爍所有八個(gè)燈,即破折號(hào)、破折號(hào)、破折號(hào)、點(diǎn)、點(diǎn)、點(diǎn)。為什么不在燈光和音樂音調(diào)方面進(jìn)一步探索摩爾斯電碼呢?
traffic_lights - 執(zhí)行兩條道路從紅/綠到綠/紅的照明轉(zhuǎn)換(一個(gè)周期)。這是一個(gè)有用的練習(xí),可以讓學(xué)生擴(kuò)展到相反的(原始)狀態(tài)設(shè)置(綠色/紅色到紅色/綠色)。請(qǐng)注意,邏輯可能會(huì)有點(diǎn)混亂,使用過渡狀態(tài)表來規(guī)劃燈的順序及其時(shí)間會(huì)很有幫助。
電路設(shè)計(jì)與布局
該項(xiàng)目的組件不復(fù)雜,隨時(shí)可用并以簡單直接的方式配置 - 請(qǐng)參見下面的原理圖。(警告:不要將揚(yáng)聲器/蜂鳴器輸出引腳直接連接到音頻輸入,因?yàn)檫@可能會(huì)損壞您的微控制器。)
雖然可以使用任何顏色的燈 (LED),但如果配置多個(gè)不同顏色的燈,對(duì)于學(xué)生來說可能會(huì)帶來更豐富多彩的體驗(yàn)。如果要使用交通燈示例,則將您的燈安排為
燈 1 - 紅色,燈 2 - 琥珀色,燈 3 - 綠色,燈 4 - 任何(道路 1)
燈 5 - 紅色,燈 6 - 琥珀色,燈 7 - 綠色,燈 8 - 任何(道路 2)。
床單
嬰兒床表記錄了可供 MLWB 使用的所有預(yù)設(shè)值和命令。 下載此作為助手回憶錄,并隨身攜帶以備參考。
最后
我覺得我需要聲明我的音樂知識(shí)、技能和實(shí)力幾乎為零——我認(rèn)為郵箱更有音樂天賦!
我在所有音樂方面的方法都是機(jī)械化的,大量使用互聯(lián)網(wǎng)來構(gòu)建這個(gè)工作臺(tái)的音樂元素,所以我向任何可能因不恰當(dāng)?shù)臈l款或?qū)嵤┒艿矫胺傅娜说狼浮?/font>我的辯護(hù)是它似乎按我的預(yù)期工作,我的孫子們似乎很開心,其中一個(gè)比我更了解音樂。
我希望你喜歡你的經(jīng)歷。
進(jìn)一步閱讀
您可能還會(huì)發(fā)現(xiàn)同一作者的這些貢獻(xiàn)有趣且有用:
- 為您的草圖添加一個(gè)心跳 -包括一個(gè)可見的方式來查看您的代碼正在您的微控制器上運(yùn)行,而無需任何額外的組件或布線!
- 草圖中的無限計(jì)時(shí)器- 易于實(shí)現(xiàn)非阻塞計(jì)時(shí)器
- 一個(gè)靈活、可擴(kuò)展的庫 (ez_SIPO8_lib),支持多個(gè)串行輸入/串行輸出 IC、74HC595 的實(shí)現(xiàn),無論是單獨(dú)還是級(jí)聯(lián)組,最多 255 個(gè) IC(2040 個(gè)輸出引腳)
- 通用開關(guān)庫( ez_switch_lib) ,適用于大多數(shù)開關(guān)類型和布線方案,并具有新穎的功能
- 了解和使用按鈕開關(guān),基礎(chǔ)知識(shí) - 按鈕開關(guān),一個(gè)簡單但經(jīng)常棘手的套件。本教程提供了實(shí)現(xiàn)簡單按鈕開關(guān)的詳細(xì)信息,可以靈活地探索電路設(shè)計(jì)、不同讀取方法和去抖動(dòng)方面的差異。
- 中斷驅(qū)動(dòng)按鈕開關(guān) -將按鈕開關(guān)綁定到外部中斷的方法和示例。
- 撥動(dòng)開關(guān) -如何可靠地讀取撥動(dòng)式開關(guān)。
- 按鈕和燈游戲 -使用按鈕開關(guān)和 LED 的樂趣。
- 外部中斷,支持并發(fā)異步多中斷的通用框架。配置多個(gè)具有不同特性的外部中斷并添加代碼以提供中斷后異步處理。
- Programmatic Timed Reminder Alerting,用于過去和實(shí)時(shí)異步警報(bào)的程序框架。定義任意數(shù)量的提醒警報(bào)(亞秒級(jí)到數(shù)小時(shí))并異步處理。
- matlab vsFortran混合編程工具 0次下載
- 單片機(jī)C語言和匯編語言混合編程實(shí)例詳解 224次下載
- 51單片機(jī)asm與C混合編程資料下載
- LabVIEW和MATLAB混合編程的資料合集免費(fèi)下載 32次下載
- 如何實(shí)現(xiàn)VisualC++與MATLAB接口進(jìn)行混合編程詳細(xì)方法說明 20次下載
- ARM Bootloader 的實(shí)現(xiàn)C 和 ASM 混合編程 15次下載
- 基于Matlab和VC混合編程的DSP數(shù)據(jù)采集系統(tǒng) 4次下載
- Qt與Matlab混合編程 0次下載
- OpenCV和MFC結(jié)合編程例子 0次下載
- DSP6748與FPGA混合編程-StarterWare 27次下載
- Matlab與C混合編程匯總 0次下載
- 基于python的GTK與VTL混合編程及應(yīng)用
- Vb與LabVIEW混合編程的實(shí)現(xiàn)
- 基于flash MX和authorware的混合編程軟件小助
- TMS320F24x 的混合編程方法
- 在IAR Embedded Workbench中計(jì)算多個(gè)地址區(qū)間的Checksum 1202次閱讀
- 如何在IAR Embedded Workbench中配置生成對(duì)應(yīng)代碼區(qū)域的CRC校驗(yàn)碼 1265次閱讀
- 分享24個(gè)三菱PLC編程案例 7161次閱讀
- 適合新手的Java項(xiàng)目 656次閱讀
- C與C++混合編程是什么 1309次閱讀
- 基于Ansys Workbench和Speos的準(zhǔn)直全反射透鏡優(yōu)化設(shè)計(jì)案例 1248次閱讀
- 混合編程中的模塊命名與管理 835次閱讀
- 使用EWPtool將源文件導(dǎo)入到IAR Embedded Workbench 1945次閱讀
- C語言編程十大經(jīng)典例題 3554次閱讀
- 新手學(xué)習(xí)單片機(jī)如何選擇開發(fā)板 8639次閱讀
- 盤點(diǎn)LabVIEW新手5大容易犯的錯(cuò)誤 4658次閱讀
- 什么樣的編程方式才適合產(chǎn)品生產(chǎn)? 533次閱讀
- arduino用什么語言編程 6.9w次閱讀
- 基于LabVIEW和Matlab混合編程的小波去噪方法 2910次閱讀
- 基于LabVIEW和Matlab混合編程的小波降噪方法 1w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多