日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

树莓派基础实验9:蜂鸣器实验

發布時間:2024/8/1 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树莓派基础实验9:蜂鸣器实验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、介紹

?? 蜂鳴器是音頻信號裝置,蜂鳴器可分為有源蜂鳴器和無源蜂鳴器。有源蜂鳴器直接接上額定電源就可以連續發聲;而無源蜂鳴器則和電磁揚聲器一樣,需要接在音頻輸出電路中才能周期性地振動發聲。


二、組件

★Raspberry Pi 3主板*1

★樹莓派電源*1

★40P軟排線*1

★有源蜂鳴器模塊*1

★無源蜂鳴器模塊*1

★雙色LED模塊*1

★面包板*1

★跳線若干

三、實驗原理

??有源蜂鳴器內置振蕩源,所以通電時會發出聲音。但無源蜂鳴器沒有這種內置振蕩源,所以如果使用直流信號,他不會發出轟鳴聲;相反,你需要使用頻率在2k到5k之間的方波來驅動它。由于有內置振蕩電路,所以有源蜂鳴器通常比無源蜂鳴器昂貴。
??將兩個蜂鳴器的引腳朝上,你可以看到帶有綠色電路板的引腳是一個無源蜂鳴器。而另一個帶有黑色塑料外殼,而不是電路板的蜂鳴器是有源蜂鳴器。

四、實驗步驟


有源蜂鳴器:

??第1步:連接電路。這里要注意的是:蜂鳴器的電源是使用的3.3V,而不是前面實驗所使用的5V,若使用5V電源,蜂鳴器會異常。

樹莓派T型轉接板有源蜂鳴器
GPIO 0(序號11)GPIO 17SIG(I/O)
3.3V3.3VVCC
GNDGNDGND

??第2步:編程。通過改變輸入到蜂鳴器的信號電平,低電平是響,高電平是停止響來控制蜂鳴器。

#!/usr/bin/env python import RPi.GPIO as GPIO import timeBuzzer = 11 # pin11def setup(pin):global BuzzerPinBuzzerPin = pinGPIO.setmode(GPIO.BOARD) # Numbers GPIOs by physical locationGPIO.setup(BuzzerPin, GPIO.OUT)GPIO.output(BuzzerPin, GPIO.HIGH)def on():GPIO.output(BuzzerPin, GPIO.LOW) #低電平是響 def off():GPIO.output(BuzzerPin, GPIO.HIGH)#高電平是停止響 def beep(x): #響3秒后停止3秒on()time.sleep(x)off()time.sleep(x)def loop():while True:beep(3)def destroy():GPIO.output(BuzzerPin, GPIO.HIGH)GPIO.cleanup() # Release resourceif __name__ == '__main__': # Program start from heresetup(Buzzer)try:loop()except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the child program destroy() will be executed.destroy()

無源蜂鳴器:

??第1步:連接電路。這里要注意的是:蜂鳴器的電源是使用的3.3V,而不是前面實驗所使用的5V,若使用5V電源,蜂鳴器會異常。

樹莓派T型轉接板無源蜂鳴器
GPIO 0(序號11)GPIO 17SIG(I/O)
3.3V3.3VVCC
GNDGNDGND

??第2步:編程前先介紹本次編程需要的幾個知識點:
??使用無源蜂鳴器,只要輸出不同頻率的PWM波,即可發出不同的音符。不同的音符組合起來就是一個曲子了。

樂譜簡析:

  • 音階
    ??音階是音樂必不可少的要素,主要由聲音的頻率決定。通過給蜂鳴器不同頻率的音頻脈沖,可以產生不同的音階,而要產生某頻率的音頻脈沖,最簡單的辦法是以該音頻的頻率除以2的值,函數ChangeFrequency(Frequency)使用該值為參數改變蜂鳴器輸入方波信號的頻率,蜂鳴器上就可發出該頻率的聲音。
    ??若想改變音階,只需要改變頻率即可。下表為各音調音符頻率對照表,據此可產生不同音階的音符。“#”表示半音,用于上升或下降半個音,乘以2就提升該聲音一個8度音階,減半則降一個8度。
  • 節拍
    ??若要構成音樂,光有音階是不夠的,還需要節拍,也就是音符持續時間的長短,一般用拍數表示。至于1拍是多少秒,沒有嚴格的規定,只要節拍適宜,聲音悅耳即可。假如某首歌曲的節奏是每分鐘120拍,那么1拍為0.5 s,1/4拍為0.125 s,以此類推可得到其他節拍對應的時長。這樣,利用不同的頻率,加上與拍數對應的延時,就構成了樂曲。

??第3步:開始編程。 按照蜂鳴器音階頻率對照表,定義C調低、中、高各音符,對應的頻率的列表。CL表示C調低音符列表。

#!/usr/bin/env python import RPi.GPIO as GPIO import timeBuzzer = 11CL = [0, 131, 147, 165, 175, 196, 211, 248] # C調低音符的頻率列表,第一位為0是占位用,后面不使用#除0外,依次是1do、2re、3mi、4fa、5sol、6la、7si CM = [0, 262, 294, 330, 350, 393, 441, 495] # Frequency of Middle C notesCH = [0, 525, 589, 661, 700, 786, 882, 990] # Frequency of High C notes

??第4步: 利用上面定義的頻率的列表,定義歌曲的音符和節拍列表。

song_0 = [ CL[1], CL[2], CL[3], CL[4], CL[5], CL[6], CL[7],CM[1], CM[2], CM[3], CM[4], CM[5], CM[6], CM[7], CH[1], CH[2], CH[3], CH[4], CH[5], CH[6], CH[7] ]# song_0表示從低音do依次到高音si的音符列表 beat_0 = [ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ]# song_0的節拍, 2表示2個1/8節拍。一個1/8節拍為0.5秒延遲。 song_1 = [ CM[3], CM[5], CM[6], CM[3], CM[2], CM[3], CM[5], CM[6], CH[1], CM[6], CM[5], CM[1], CM[3], CM[2], CM[2], CM[3], CM[5], CM[2], CM[3], CM[3], CL[6], CL[6], CL[6], CM[1],CM[2], CM[3], CM[2], CL[7], CL[6], CM[1], CL[5] ] # Notes of song1 beat_1 = [ 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3 ] # Beats of song 1, 1 means 1/8 beats song_2 = [ CM[1], CM[1], CM[1], CL[5], CM[3], CM[3], CM[3], CM[1], CM[1], CM[3], CM[5], CM[5], CM[4], CM[3], CM[2], CM[2], CM[3], CM[4], CM[4], CM[3], CM[2], CM[3], CM[1], CM[1], CM[3], CM[2], CL[5], CL[7], CM[2], CM[1] ] # Notes of song2 beat_2 = [ 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 3, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 3 ] # Beats of song 2, 1 means 1/8 beats,0.5 second

??第5步: 定義初始化設置函數setup()。

def setup():GPIO.setmode(GPIO.BOARD) # Numbers GPIOs by physical locationGPIO.setup(Buzzer, GPIO.OUT) # Set pins' mode is outputglobal Buzz # Assign a global variable to replace GPIO.PWM Buzz = GPIO.PWM(Buzzer, 440) # 440 is initial frequency.Buzz.start(50) # Start Buzzer pin with 50% duty ration

??第6步: 定義循環函數loop(),主要有三部分,分別播放3首曲子。

def loop():while True:#--------------------------------------------print '\n\n Playing Low C notes...'for i in range(0, 7): # Play song 0的C調低音音符Buzz.ChangeFrequency(song_0[i])# 根據歌曲的音符改變頻率print i #打印i的值time.sleep(beat_0[i] * 0.5) # 根據節拍列表每個音符延遲1秒,2 beats*0.5s=1sprint '\n\n Playing Middle C notes...'for i in range(7, 14): # Play song 0Buzz.ChangeFrequency(song_0[i]) # Change the frequency along the song noteprint itime.sleep(beat_0[i] * 0.5) # delay a note for beat * 0.5sprint '\n\n Playing High C notes...'for i in range(14, 21): # Play song 0Buzz.ChangeFrequency(song_0[i]) # Change the frequency along the song noteprint itime.sleep(beat_0[i] * 0.5) # delay a note for beat * 0.5sBuzz.ChangeFrequency(0.5) #一首曲子結束,間隔3秒time.sleep(3)#-------------------------------------------- print '\n Playing song 1...'for i in range(0, len(song_1)): # Play song 1Buzz.ChangeFrequency(song_1[i]) # Change the frequency along the song notetime.sleep(beat_1[i] * 0.5) # delay a note for beat * 0.5sBuzz.ChangeFrequency(0.5) #一首曲子結束,間隔3秒time.sleep(3) #--------------------------------------------print '\n\n Playing song 2...'for i in range(0, len(song_2)): # Play song 1Buzz.ChangeFrequency(song_2[i]) # Change the frequency along the song notetime.sleep(beat_2[i] * 0.5) # delay a note for beat * 0.5sBuzz.ChangeFrequency(0.5)time.sleep(3)

??第7步。

def destory():Buzz.stop() # Stop the buzzerGPIO.output(Buzzer, 1) # Set Buzzer pin to HighGPIO.cleanup() # Release resourceif __name__ == '__main__': # Program start from heresetup()try:loop()except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the child program destroy() will be executed.destory()

總結

以上是生活随笔為你收集整理的树莓派基础实验9:蜂鸣器实验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲石原莉奈一区二区在线观看 | www裸玉足久久久 | 婷婷俺也去| 秘密基地动漫在线观看免费 | 亚洲第一毛片 | 农村脱精光一级 | 亚洲成人自拍视频 | 日本a级黄 | 毛片专区 | 久久国产乱子伦免费精品 | 69福利区 | 日本国产高清 | 韩国色网| 爱久久| 亚洲永久免费av | 草莓视频一区二区三区 | 成人国产精品视频 | 少妇高潮毛片 | 日韩精品亚洲精品 | 99视频一区二区 | 看全色黄大色黄女片18 | 四虎影库永久在线 | 亚洲成熟少妇视频在线观看 | 欧美性黄色 | 久久午夜无码鲁丝片 | 国产精品二区三区 | 视色视频在线观看 | 日韩电影一区二区三区四区 | 久久伊人久久 | 最新地址在线观看 | 蜜臀国产AV天堂久久无码蜜臀 | 国产激情久久久久 | 日韩精品小视频 | 国产精品第一页在线观看 | 亚洲黄色在线 | 美女隐私直播 | 亚洲aaaa级特黄毛片 | 亲嘴扒胸摸屁股激烈网站 | 色狠狠av老熟女 | 亚洲专区一区二区三区 | 美女福利视频导航 | 亚洲精品一区二区三区不卡 | 国产精品久久免费视频 | 色无极亚洲影院 | 国产免费无码一区二区视频 | 岛国精品一区二区三区 | 色婷婷久久久亚洲一区二区三区 | 国产美女无遮挡永久免费观看 | 成人黄色片在线观看 | 日韩精品xxx | 中文字幕在线观看线人 | 亚洲美女啪啪 | 美女裸片 | 国产娇小hdxxxx乱 | 欧美激情在线观看视频 | 亚洲乱码国产一区三区 | 白嫩初高中害羞小美女 | 波多野结衣在线观看一区 | 日本熟妇人妻xxxxx | 97超碰资源总站 | 亚洲国产精品一区二区三区 | 在线免费观看av的网站 | 四虎激情 | 青青草免费观看 | 欧美日韩电影一区二区 | 久久久久久成人精品 | 男男成人高潮片免费网站 | 全部免费毛片在线播放高潮 | 亚洲国产美女视频 | 6080成人| 成熟妇人a片免费看网站 | 69av在线视频 | 欧美黑粗大 | 久久久久久久国产精品视频 | 影音先锋资源av | 岛国av动作片 | 2019中文字幕在线视频 | 麻豆www.| 成人精品免费网站 | 中日韩精品在线 | 亚洲一区二区视频 | 午夜院线 | 欧美黑人精品一区二区不卡 | 美女被出白浆 | 一本一道久久综合狠狠老精东影业 | 97人妻精品一区二区三区免费 | 亚洲精品9 | 高清久久久久久 | 国产在线观看xxx | 亚洲免费久久 | tube极品少妇videos | 国产精品色在线网站 | 天天干天天操天天拍 | 日本一区二区三区在线免费观看 | 伊人色在线 | av在线播放观看 | 免费无码国产v片在线观看 三级全黄做爰在线观看 | 在线国产观看 | 国产免费一区二区视频 |