蜂鸣器分有源与无源两种,本项目中使用的蜂鸣器为无源蜂鸣器,也称交流蜂鸣器。而项目二中使用的蜂鸣器为有源蜂鸣器。有源蜂鸣器与无源蜂鸣器的最大区别为是否带震荡源。这里的“源”不是指电源,而是指震荡源。有源蜂鸣器内部带震荡源,所以只要一通电就会发出声音,其发声频率是固定的。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用在人耳频率范围内的方波去驱动它。
蜂鸣器外形图与原理图
原理图如上图所示:
面包板的连线图如上图所示。
[cc]
如果以国际标准音 A-la-440HZ为准
C – do – 261.6HZ
D – re – 293.6HZ
E – mi – 329.6HZ
F – fa – 349.2HZ
G – sol- 392HZ
A – la – 440HZ
B – si – 493.8HZ
[/cc]
(程序3)TK按键控制的电子钢琴
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 |
from gpiozero import PWMLED,Button from time import sleep #引用时间库 from signal import pause from tkinter import * led = PWMLED(21,frequency=329.6) led.value=0 #button.when_pressed = ledvalplus #button.when_released = led.off #定义Button的回调函数 def ButtonDo(): print ('Do\n') led.frequency=261 led.value=0.5 sleep(0.2) led.value=0 def ButtonRe(): print ('Re\n') led.frequency=293 led.value=0.5 sleep(0.2) led.value=0 def ButtonMi(): print ('Mi\n') led.frequency=329 led.value=0.5 sleep(0.2) led.value=0 def ButtonFa(): print ('Fa\n') led.frequency=349 led.value=0.5 sleep(0.2) led.value=0 def ButtonSol(): print ('Sol\n') led.frequency=392 led.value=0.5 sleep(0.2) led.value=0 def ButtonLa(): print ('La\n') led.frequency=440 led.value=0.5 sleep(0.2) led.value=0 def ButtonSi(): print ('Si\n') led.frequency=494 led.value=0.5 sleep(0.2) led.value=0 root = Tk() #通过command属性来指定Button的回调函数 Button(root,text = 'Do',command = ButtonDo).pack() Button(root,text = 'Re',command = ButtonRe).pack() Button(root,text = 'Mi',command = ButtonMi).pack() Button(root,text = 'Fa',command = ButtonFa).pack() Button(root,text = 'Sol',command = ButtonSol).pack() Button(root,text = 'La',command = ButtonLa).pack() Button(root,text = 'Si',command = ButtonSi).pack() root.mainloop()#TK的主程序循环pause() |
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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
from gpiozero import PWMLED,Button from time import sleep #引用时间库 from signal import pause #from tkinter import * led = PWMLED(21,active_high=False,frequency=1971) #frequency为输出频率 led.value=0 sleep(1) led.value=0.000001 led.frequency=523#Do sleep(0.4) led.frequency=586#Re sleep(0.4) led.frequency=658#Mi sleep(0.4) led.frequency=523#Do sleep(0.4) led.frequency=523#Do sleep(0.4) led.frequency=586#Re sleep(0.4) led.frequency=658#Mi sleep(0.4) led.frequency=523#Do sleep(0.4) led.frequency=658#Mi sleep(0.4) led.frequency=697#Fa sleep(0.4) led.frequency=783#Sol sleep(0.8) led.frequency=658#Mi sleep(0.4) led.frequency=697#Fa sleep(0.4) led.frequency=783#Sol sleep(0.8) led.frequency=783#Sol sleep(0.3) led.frequency=879#La sleep(0.1) led.frequency=783#Sol sleep(0.3) led.frequency=697#Fa sleep(0.1) led.frequency=658#Mi sleep(0.4) led.frequency=523#Do sleep(0.4) led.frequency=783#Sol sleep(0.3) led.frequency=879#La sleep(0.1) led.frequency=783#Sol sleep(0.3) led.frequency=697#Fa sleep(0.1) led.frequency=658#Mi sleep(0.4) led.frequency=523#Do sleep(0.4) led.frequency=523#Do sleep(0.4) led.frequency=392#-Sol sleep(0.4) led.frequency=523#Do sleep(0.8) led.frequency=523#Do sleep(0.4) led.frequency=392#-Sol sleep(0.4) led.frequency=523#Do sleep(0.8) #button.when_pressed = ledvalplus #button.when_released = led.off led.off() pause(); |
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 |
#pip3 install gpiozero from gpiozero import TonalBuzzer from gpiozero.tones import Tone from time import sleep #引用时间库 music = [ ["C4",0.4],["D4",0.4],["E4",0.4],["C4",0.4], ["C4",0.4],["D4",0.4],["E4",0.4],["C4",0.4], ["E4",0.4],["F4",0.4],["G4",0.8], ["E4",0.4],["F4",0.4],["G4",0.8], ["G4",0.3],["A4",0.1],["G4",0.3],["F4",0.1],["E4",0.4],["C4",0.4], ["G4",0.3],["A4",0.1],["G4",0.3],["F4",0.1],["E4",0.4],["C4",0.4], ["C4",0.4],["G3",0.4],["C4",0.8], ["C4",0.4],["G3",0.4],["C4",0.8], ] b = TonalBuzzer(17,octaves=3)#A1 A7 for mu in music: b.play(mu[0]) sleep(mu[1]) print (b.value) b.stop() |
两只老虎乐谱。
蓝牙电子琴
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 |
#pip3 install gpiozero from gpiozero import TonalBuzzer from time import sleep #引用时间库 from bluedot import BlueDot from signal import pause b = TonalBuzzer(17,octaves=1)# bd = BlueDot() ''' while True: if bd.is_pressed: #x, y = bd.position.x, bd.position.y b.value = max(-1, min(1, bd.position.x)) print(b.value) else: b.stop() sleep(0.1) ''' def drive(): while True: if bd.is_pressed: #x, y = bd.position.x, bd.position.y v = max(-1, min(1, bd.position.x)) yield v else: b.stop() sleep(0.1) b.source = drive() b.stop() pause() |
转载请注明:徐自远的乱七八糟小站 » 20171010 (第3课)树莓派PYPI- 音乐盒