arduino控制点阵屏与蜂鸣器_数字制造讲义08-Arduino声音应用2
數字制造講義01-成為數字世界的建造者
數字制造講義02-Arduino入門
數字制造講義03-電路基礎
數字制造講義04-負責輸入和輸出的智能元件
數字制造講義05-軟硬件數據通信
數字制造講義06-MIDI 和 OSC 數據傳輸練習
數字制造講義07-Arduino聲音應用
(本系列為 00 在星海音樂學院的課程講義)
回顧
還記得上一周 完成的三個練習嗎:
- 讓蜂鳴器發聲
- 蜂鳴器發出交替的報警聲
- 用按鍵觸發聲音
這一周我們繼續來完善,做出一個簡單的旋律控制器。
挑戰4:用電位計控制音高
既然蜂鳴器可以發出不同的音高,那我們可不可以用旋鈕控制音高,做一個 mini 的極簡控制器呢?
在之前第四周的課程中,我們已經建立起比較完整的輸入輸出元件的概念。在項目練習時就可以慢慢養成習慣:在動手之前,先構想出輸入部分是什么、輸出部分是什么、從輸入到輸出要完成什么樣的轉換。
這里,輸入部分是電位計(的位置),輸出部分是蜂鳴器(的音高),中間的連接就是電位計的數值轉換為蜂鳴器的音高。
接線部分,使用的元件包括:蜂鳴器,電位計。
當我們還是編程新手,每次要開始自己寫代碼時,容易兩眼一抹黑,不知道該從哪里下手。
其實,每次寫代碼時,并不是直接打開 Arduino IDE 就開始噼里啪啦敲代碼了。在這之前,我們需要現在腦子里構思這個代碼要做什么,怎么做到。
大家會想一下,怎么把大象放進冰箱里呢?
不要笑,這就是所謂的「算法」:做一件事情的步驟。
所以在還沒有清晰思路的時候,我們可以先把程序要完成的大致步驟寫下來:
- 需要用一個模擬端口讀取電位計的數值
- 需要用一個數字(輸出)端口給蜂鳴器發出指令
- 找一個辦法讓蜂鳴器發出不同音高
- 將電位計數值控制音高
接著,我們再想辦法把每一個步驟都轉化成對應的變量、語法、庫。所以學會搜索和查看官方文檔就很重要的了。
代碼如下:
// connect a potentiometer to pin A0上面的代碼中,最核心的一行,是把從電位計讀取的模擬信號數值(范圍是 0~1023),映射到人耳可感知的聲音的頻率范圍(20~20000):freq = map (freq,0,1023,20,20000); 其中 map() 函數的作用就是數值映射。
挑戰5:播放連續音高
這個挑戰一定會更吸引你:用蜂鳴器播放一段旋律。
這個挑戰的難度主要在代碼上,從這里開始,我們會開始接觸并深入理解函數、循環、頭文件、庫等概念。
比較復雜的代碼不可能一下子就能寫出來。所以我們要經歷一個重要的練習:看懂別人的代碼。
我們在官方網站上找到教程 Arduino - ToneMelody。仔細研讀它給出的代碼,尤其是代碼的注釋:
/*把注釋部分全部替換成自己的理解,這個代碼看起來就不再那么復雜和難懂了。但是這個過程一定要自己完成。
當在代碼里看到不熟悉的函數,例如 delay() , noTone() ,就可以到官方文檔中搜索并閱讀,一般文檔都會給出例子,這些例子就是最好的學習材料。
最后,留給大家的作業,是用兩個壓電片觸發兩段不同的旋律,大家動手試試吧!
00 的專欄
HackYourself?zhuanlan.zhihu.comFabAcademy 創客煉成記?zhuanlan.zhihu.comArt & Code?zhuanlan.zhihu.com進擊!后界面時代的交互設計?zhuanlan.zhihu.comMake Noise?zhuanlan.zhihu.com你丫全棧?zhuanlan.zhihu.com總結
以上是生活随笔為你收集整理的arduino控制点阵屏与蜂鸣器_数字制造讲义08-Arduino声音应用2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中汽协:新能源汽车 4 月产销 64/6
- 下一篇: GPD WIN Max 2 2023 掌