python 树莓派 蜂鸣器 demo(记得要把中文注释删除掉)
2021年5月14日
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
#!/usr/bin/env python """ * @par Copyright (C): 2010-2020, hunan CLB Tech * @file passive_buzzer * @version V2.0 * @details * @par History @author: zhangfang """ import RPi.GPIO as GPIO import time Buzzer = 11 CL = [0, 131, 147, 165, 175, 196, 211, 248] #低C音频率 CM = [0, 262, 294, 330, 350, 393, 441, 495] #中C音频率 CH = [0, 525, 589, 661, 700, 786, 882, 990] #高C音频率 #歌曲1 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]] #歌曲1每个频率播放的时间 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] #歌曲2 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]] #歌曲2每个频率播放的时间 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] ## #定义一个开始方法 # def setup(): GPIO.setwarnings(False) #警告关闭 GPIO.setmode(GPIO.BOARD) #按物理位置对GPIO编号 GPIO.setup(Buzzer, GPIO.OUT) #设置输出端口 global Buzz #定义一个全局变量 Buzz = GPIO.PWM(Buzzer, 440) #440为初始频率 Buzz.start(50) #以50%占空比启动蜂鸣器引脚 ## #循环播放方法 # def loop(): while True: print('\n Playing song 1...') #打印告诉你播放第一首歌 for i in range(1, len(song_1)): #循环 song_1 range计数 返回 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Buzz.ChangeFrequency(song_1[i]) #改变蜂鸣器频率 time.sleep(beat_1[i] * 0.5) #停止时间 time.sleep(1) #暂停一秒 print('\n\n Playing song 2...') #打印告诉你播放第二首歌 for i in range(1, len(song_2)): #循环 song_1 range计数 返回 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Buzz.ChangeFrequency(song_2[i]) #改变蜂鸣器频率 time.sleep(beat_2[i] * 0.5) #停止时间 ## #结束方法 # def destory(): Buzz.stop() #停止蜂鸣器 GPIO.output(Buzzer, 1) #将蜂鸣器引脚设置为高 GPIO.cleanup() #释放资源 if __name__ == '__main__': #程序从这开始 setup() try: loop() except KeyboardInterrupt: #'Ctrl+C'停止程序 destory() |