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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4905|回復: 0
打印 上一主題 下一主題
收起左側

Arduino教程-動人的歌喉

[復制鏈接]
跳轉到指定樓層
樓主
Hi,大家好!經過之前的幾次學習,Arduino一直保持沉默,任意聽從我們的擺布。從今天開始,我們將來點兒不一樣的!這一次,讓我們聽一聽Arduino那動人的歌喉!好!直奔主題,還是先看一看我們需要做一些什么樣的準備吧!
硬件方面
圖片來源:Arduino電路配件
具體包括如下:
  • Arduino UNO電路板(1塊)
  • 面包板(1塊)
  • 10kΩ電阻(1個)
  • 100Ω電阻(1個)
  • 8Ω揚聲器(1個)
  • 壓力傳感器(1個)
  • 面包線(若干)
這一次出現了兩個新面孔,一個是壓力傳感器,另一個是8Ω的揚聲器。別擔心,雖然都是新面孔,上手還是超級簡單的。一般來說,壓力傳感器輸出的信號為連續模擬信號,所以要想接收壓力傳感器發出的信號變化,需要將其連接到模擬信號引腳上。壓力傳感器的數值變化范圍一般為0~1023之間。
普通的8Ω揚聲器就是一個數字輸出設備,所以需要將其連接到數字信號引腳上。通過這個揚聲器,馬上我們就將可以感受到Arduino那美麗而動人的歌喉!
軟件方面Arduino官方提供的IDE。
好的!下面來連接電路。
連接電路
圖片來源:Arduino電路連接
這里我們要簡單的提醒一下,與揚聲器進行串聯的電阻使用的是數值為100Ω的那個,另一個10kΩ的電阻是與壓力傳感器進行串聯的。另外,注意在連接時,壓力傳感器的負級與連接到Arduino上的信號線是分開的兩根線,而且信號線是連接在壓力傳感器的負極上,也就是說呢,連接壓力傳感器一共需要四根面包線,嗯!揚聲器的連接就比較簡單了,只是期間串聯了一個100Ω的電阻。
好!最后一步!
添加幾行代碼首先,還是新建一個項目窗口。

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



  1. // 為了在程序中方便對音調進行變更,
  2. // 我們提前在程序的最頂部預定義了
  3. // 四個宏變量,每個宏變量代表一個
  4. // 音調,可以讓揚聲器發出不同的聲音。
  5. // 宏變量在程序運行中不得更改,
  6. // 其使用方式可以簡單理解成常量。
  7. #define NOTE_B0  31
  8. #define NOTE_AS2 117
  9. #define NOTE_AS3 233
  10. #define NOTE_D6  1175
  11. // 定義壓力傳感器的輸入針腳號為0
  12. int forceSensorPin = 0;
  13. // 對Arduino電路板或相關狀態進行初始化方法
  14. void setup(void) {
  15.   // 開啟串行通信,并設置其頻率為9600。
  16.   // 如果沒有特別要求,此數值一般都為9600。
  17.   Serial.begin(9600);
  18. }
  19. // 系統調用,無限循環方法
  20. void loop(void) {
  21.   // 從模擬引腳號為0的接口,讀取壓力傳感器的數值。
  22.   int forceSensorState =analogRead(forceSensorPin);
  23.   // 向調試窗口打印字符串"Analog reading = "
  24.   Serial.print("Analog reading = ");
  25.   // 緊接著上一行字符串的后面,
  26.   // 輸出當前讀取到的壓力傳感器的數值狀態。
  27.   Serial.print(forceSensorState);
  28.   // 簡單根據壓力傳感器所受力的大小,
  29.   // 劃分了五個不同的等級。
  30.   if(forceSensorState < 10) {
  31.     // 當壓力數值小于10時,不發出聲音,
  32.     // 并向調試窗口打印" - No pressure"字符串。
  33.     Serial.println(" - No pressure");
  34.   }else if(forceSensorState < 200) {
  35.     // 當壓力大于10小于200時,發出聲音,
  36.     // 同時向調試窗口打印" - Light touch"字符串。
  37.     Serial.println(" - Light touch");
  38.     // tone()方法是讓歌喉發出動人聲音的方法。
  39.     // 此方法共有三個參數,
  40.     // 從左邊算起,第一個參數為針腳號,此處為8,
  41.     // 也即數字信號引腳的8號引腳。
  42.     // 第二個參數為音調數值,此處為程序頂部預定義的
  43.     // 宏變量之一,例如此處為NOTE_B0。
  44.     // 第三個參數為音調的發聲時間長度,單位為毫秒,
  45.     // 此處為100毫秒。
  46.     tone(8, NOTE_B0, 100);
  47.   }else if(forceSensorState < 500) {
  48.     // 當壓力大于200小于500時,發出聲音,
  49.     // 同時向調試窗口打印" - Light squeeze"字符串。
  50.     Serial.println(" - Light squeeze");
  51.     // tone()方法向揚聲器發送信號,讓其發出動人的聲音。
  52.     // tone()方法詳細解釋同上。
  53.     tone(8, NOTE_AS2, 100);
  54.   }else if(forceSensorState < 800) {
  55.     // 當壓力大于500小于800時,發出聲音,
  56.     // 同時向調試窗口打印" - Medium squeeze"字符串。
  57.     // tone()方法向揚聲器發送信號,讓其發出動人的聲音。
  58.     // tone()方法詳細解釋同上。
  59.     Serial.println(" - Medium squeeze");
  60.     tone(8, NOTE_AS3, 100);
  61.   }else{
  62.     // 當壓力大于800時,發出聲音,
  63.     // 同時向調試窗口打印" - Big squeeze"字符串。
  64.     // tone()方法向揚聲器發送信號,讓其發出動人的聲音。
  65.     // tone()方法詳細解釋同上。
  66.     Serial.println(" - Big squeeze");
  67.     tone(8, NOTE_D6, 100);
  68.   }
  69.   // 延遲1000毫秒(也即1秒鐘)進入下一次程序循環。
  70.   // 實際效果就是,每兩次發聲之間有1秒鐘的時間間隔。
  71.   delay(1000);
  72. }
復制代碼

完工!作為學習的實例,猛然看起來好像很麻煩,其實刪除中間的文字注釋,一共也不到三十行的代碼!而其中真正的新面孔說實話也就一個tone()方法而已,此方法中三個參數的解釋已經在代碼的注釋中說過,這里就不重復解釋了。

圖片來源:Arduino官方IDE的文件編輯菜單選項
好的!最后點擊上圖中標有向右指向的箭頭圖標,將編寫好的代碼燒入Arduino UNO電路板。然后單擊上圖中最右側的放大鏡圖標,打開串口調試窗口,如下圖所示。

圖片來源:Arduino串口調試窗口
在上圖窗口中,你將會看到每隔1秒鐘打印一條描述信息。如果電路連接一切正常,此時用手去按壓連接好的壓力傳感器,立刻就會聽到Arduino那動人的歌喉!壓力傳感器會根據按壓的力道,會從歌喉里傳出不同的美妙音律!
總結我們通過這次學習,碰到了兩個新的硬件,一個是揚聲器,另一個是壓力傳感器。壓力傳感器的電路連接,一開始可能看起來有些復雜,不過思路想清楚之后也還是比較簡單的。揚聲器的連接,期間串聯了一個電阻。軟件方面,為了讓揚聲器發聲,程序中我們遇到了一個新面孔,那就是tone()方法。對于這個方法的使用,我們在實例代碼的注釋中也已經詳細說明。嗯,差不多這次主要就是這些!
下期預告
既然我們可以借助壓力傳感器讓揚聲器發出不同的聲音,那我們可不可以拋棄壓力傳感器,直接讓揚聲器發出聲音呢?答案當然是可以!好!下一次,就讓我們把Arduino的動人歌喉變成跨時代的留聲機!


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av免费网站在线 | 久久精彩 | 亚洲导航深夜福利涩涩屋 | 精品国产欧美一区二区三区成人 | 久久这里只有精品首页 | 久久精品亚洲欧美日韩久久 | 亚洲精品2区 | 99久久免费精品国产免费高清 | 久久久久综合 | 国产欧美一区二区久久性色99 | 久久国产麻豆 | 亚洲精品日韩一区二区电影 | 国产区在线观看 | 97精品超碰一区二区三区 | 欧美激情精品久久久久久变态 | 99久久视频 | 欧美一区二区三区精品免费 | japan21xxxxhd美女 日本欧美国产在线 | 久久精品国产亚洲一区二区 | 精品欧美一区免费观看α√ | 免费久久精品视频 | 免费观看a级毛片在线播放 黄网站免费入口 | 三级av在线 | 精品久| 午夜精品久久久久久久99黑人 | 激情小说综合网 | 久久久蜜桃 | 成人在线视频一区 | 午夜精品久久久久99蜜 | 日韩精品在线看 | 久久极品| 久久久噜噜噜www成人网 | 97高清国语自产拍 | 免费福利视频一区二区三区 | 欧美一级在线视频 | 欧美激情一区二区三级高清视频 | 国产乱码精品一区二区三区中文 | 亚洲一区视频在线 | 天天拍天天操 | 久热久热 | 中文天堂在线观看 |