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