久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: Arduino教程-跨時代的留聲機 [打印本頁]

作者: 51黑電子論壇    時間: 2015-12-22 18:02
標題: Arduino教程-跨時代的留聲機
Hi,大家好!上一次,我們享受到了Arduino那動人的歌喉,可惜的是,她唱出來的音律是一個一個的,能不能將這些單個的音律連起來形成一首優(yōu)美的歌曲呢?當然是可以的啦!好,那既然是可以的,我們這次一起學習一下,如何做一款跨時代的留聲機!
閑話不多說,先讓我們看一下,完成這樣一款留聲機,我們需要做哪些準備吧!
硬件方面
圖片來源:Arduino電路配件
具體包括如下:
配件看起來是不是很眼熟?而且還少了幾個,比之前還簡單了呢!好的,硬件就這些。之前都見過,就不多說了。
軟件方面Arduino官方提供的IDE。
連接電路
圖片來源:Arduino電路連接
嗯,連接電路看起來是不是也很眼熟?其實就是在上一次學習的基礎上,把壓力傳感器去掉了而已!就這么簡單!嗯!
順利抵達最后一步!
添加幾行代碼首先,新建一個項目窗口。

圖片來源:Arduino官方IDE
接下來我們向其中添加如下代碼:


  1. // 為了在程序中方便對音調(diào)進行變更,
  2. // 我們提前在程序的最頂部預定義了
  3. // 四個宏變量,每個宏變量代表一個
  4. // 音調(diào),可以讓揚聲器發(fā)出不同的聲音。
  5. // 宏變量在程序運行中不得更改,
  6. // 其使用方式可以簡單理解成常量。
  7. #define NOTE_C4 262
  8. #define NOTE_G3 196
  9. #define NOTE_A3 220
  10. #define NOTE_B3 247
  11. // 定義音樂所包含的發(fā)音
  12. int melody[] = {
  13.   NOTE_C4, NOTE_G3,
  14.   NOTE_G3, NOTE_A3,
  15.   NOTE_G3, 0,
  16.   NOTE_B3, NOTE_C4
  17. };
  18. // 定義音樂的節(jié)拍
  19. int noteDurations[] = {
  20.   4, 8, 8, 4, 4, 4, 4, 4
  21. };
  22. // 對Arduino電路板或相關狀態(tài)進行初始化方法
  23. void setup() {
  24.   // 遍歷整首音樂的樂譜
  25.   for (int thisNote = 0; thisNote < 8; thisNote++) {
  26.     // 計算每個發(fā)音的節(jié)拍,也就是每個發(fā)音的長短。
  27.     // 例如,四分之一拍 = 1000 / 4,八分之一拍 = 1000/8
  28.     // 注意:此處的1000指的是1000毫秒,也就是1秒的時間。
  29.     int noteDuration = 1000 / noteDurations[thisNote];
  30.     // 向8號數(shù)字引腳發(fā)送信號,
  31.     // 發(fā)音為 melody[thisNote],
  32.     // 每個發(fā)音的時間長度為 noteDuration。
  33.     tone(8, melody[thisNote], noteDuration);
  34.     // 為了能夠清晰的區(qū)分兩個臨近的發(fā)音,
  35.     // 需要設置一個合理的時間間隔,
  36.     // 此處我們將每個發(fā)音節(jié)拍的時間延長30%,
  37.     // 以此作為兩個發(fā)音的間隔時間,聽起來效果還不錯。
  38.     int pauseBetweenNotes = noteDuration * 1.30;
  39.     // 每個發(fā)音之間延遲 pauseBetweenNotes 時長。
  40.     delay(pauseBetweenNotes);
  41.     // 延遲時間到了之后,
  42.     // 向8號數(shù)字引腳發(fā)送信號,
  43.     // 終止此引腳上的揚聲器繼續(xù)發(fā)音。
  44.     noTone(8);
  45.   }
  46. }
  47. // 系統(tǒng)調(diào)用,無限循環(huán)方法
  48. void loop() {
  49.   // 此處木有代碼,開心嗎?
  50. }
復制代碼

大功告成!這次的代碼要比上一次少的多的多,而且在系統(tǒng)調(diào)用的loop()方法里一行代碼也木有哦!是不是很開心?這里只出現(xiàn)了一個新面孔,那就是noTone()方法,這個方法的作用,就是讓特定數(shù)字引腳上的揚聲器繼續(xù)發(fā)聲。它與tone()是雙胞胎,要配合使用。

圖片來源:Arduino官方IDE的文件編輯菜單選項
點擊上圖中標有向右指向的箭頭圖標,將編寫完成的代碼燒入Arduino電路板。一旦燒入完成,Arduino瞬間即可變成一個跨時代的留聲機,將會播放一首蘇格蘭風情的調(diào)調(diào)。嗯,盡情享受吧~
總結(jié)這次,我們完成了一個跨時代的留聲機,碰到了tone()方法的親兄弟,noTone方法。前一個是播放音樂,后一個是停止播放音樂。
下期預告我們已經(jīng)做出了跨時代的留聲機,但這個留聲機只有一個揚聲器。現(xiàn)在問題來了,如果我想要多個揚聲器一起播放聲音,那么應該如何才能做到讓它們之間彼此有序的進行配合呢?好!下一次看看如何解決這個問題!



作者: 蝦米創(chuàng)客    時間: 2016-1-3 08:40
非常精彩,學習了




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩精品视频在线播放 | 成人h片在线观看 | 国产日韩欧美一区二区 | 欧美一级欧美三级 | 美女视频福利 | 激情综合网站 | 国产福利在线 | 亚洲精品1| 人人草人人爽 | 91av视频在线 | 成人精品一区二区三区 | 欧美在线视频观看 | 欧美激情一区二区三区 | 亚洲做受高潮无遮挡 | 日韩欧美三区 | 美国一级大黄一片免费中文 | 久久精品视频免费看 | 成人深夜福利 | 久久一级视频 | 亚洲一区二区久久 | 国产伦精品一区二区三区免费视频 | 日韩欧美一级 | 国产福利视频 | 亚洲国产日韩在线 | 国产亚洲一区二区三区 | 国产小视频在线播放 | 亚洲一区二区三区在线播放 | 国产欧美视频在线观看 | 美女国产精品 | 高清一区二区 | 日韩中文字幕一区二区三区 | 久久精品视频一区 | 中文在线视频 | 国产午夜一区二区三区 | 天天搞天天干 | 欧美一区二区在线观看 | 亚洲精品免费看 | 国产一区中文字幕 | 欧美区一区二 | 亚洲免费在线观看 | 成人免费视频网址 |