Arduino
有源蜂鸣器
/********************************************************
* function: you can hear the activate buzzer beeping.
* But it won't work if you can use a passive one here
**************************************************** */
int buzzerPin = 7;//the pin of the activate buzzer attach to pin7
void setup()
{
pinMode(buzzerPin, OUTPUT);
digitalWrite(buzzerPin, LOW);
}
void loop()
{
}
无源蜂鸣器
//function:buzzer beeping in a different frequence
/*****************************************************/
const int buzzerPin = 7;
int fre; //frequenze value
/****************************************************/
void setup()
{
pinMode(buzzerPin, OUTPUT);//set the buzzerPin as OUTPUT
}
/*****************************************************/
void loop()
{
for (int i=200; i<=800; i++) //frequence loop from 200 to 800
{
tone(7,i); //in pin7 generate a tone, its frequency is i
delay(5); //wait for 5 milliseconds
}
delay(4000); //wait for 4 seconds on highest frequence
for(int i=800; i>=200; i--) //frequence loop from 800 to 200
{
tone(7,i);
delay(10); //delay 10ms
}
}
树莓派
有源蜂鸣器
C
#include <wiringPi.h>
#include <stdio.h>
#define BuzzerPin 0
int main(void)
{
if (wiringPiSetup() == -1){
printf("setup wiringPi failed !");
return 1;
}
pinMode(BuzzerPin, OUTPUT);
while(1){
digitalWrite(BuzzerPin, HIGH);
delay(100);
digitalWrite(BuzzerPin, LOW);
delay(100);
}
return 0;
}
Python
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
Buzzer = 11 #pin11
def setup(pin):
global BuzzerPin
BuzzerPin = pin
GPIO.setmode(GPIO.BOARD) #Numbers GPIOs by physical location
GPIO.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):
on()
time.sleep(x)
off()
time.sleep(x)
def loop():
while True:
beep(0.5)
def destroy():
GPIO.output(BuzzerPin, GPIO.HIGH)
GPIO.cleanup()
if __name__ == '__main__':
setup(Buzzer)
try:
loop()
except KeyboardInterrupt:
destroy()
无源蜂鸣器
C
#include <wiringPi.h>
#include <softTone.h>
#include <stdio.h>
#define BuzPin 0
#define CL1 131
#define CL2 147
#define CL3 165
#define CL4 175
#define CL5 196
#define CL6 221
#define CL7 248
#define CM1 262
#define CM2 294
#define CM3 330
#define CM4 350
#define CM5 393
#define CM6 441
#define CM7 495
#define CH1 525
#define CH2 589
#define CH3 661
#define CH4 700
#define CH5 786
#define CH6 882
#define CH7 990
int song_1[] = {CM3,CM5,CM6,CM3,CM2,CM3,CM5,CM6,CH1,CM6,CM5,CM1,CM3,CM2,
CM2,CM3,CM5,CM2,CM3,CM3,CL6,CL6,CL6,CM1,CM2,CM3,CM2,CL7,
CL6,CM1,CL5};
int 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};
int song_2[] = {CM1,CM1,CM1,CL5,CM3,CM3,CM3,CM1,CM1,CM3,CM5,CM5,CM4,CM3,CM2,
CM2,CM3,CM4,CM4,CM3,CM2,CM3,CM1,CM1,CM3,CM2,CL5,CL7,CM2,CM1};
int beat_2[] = {1,1,1,3,1,1,1,3,1,1,1,1,1,1,3,1,1,1,2,1,1,1,3,1,1,1,3,3,2,3};
int main(void)
{
int i, j;
if (wiringPiSetup() == -1){
printf("setup wiringPi failed !");
return 1;
}
if (softToneCreate(BuzPin) == -1){
printf("setup softTone failed !");
return 1;
}
while(1){
printf("music is being played...\n");
printf("song_1...\n");
for (i=0;i<sizeof(song_1)/4;i++){
softToneWrite(BuzPin, song_1[i]);
delay(beat_1[i] * 500);
}
printf("song_2...\n");
for (i=0;i<sizeof(song_2)/4;i++){
softToneWrite(BuzPin, song_2[i]);
delay(beat_2[i] * 500);
}
}
return 0;
}
Python
#!/usr/bin/env python
#-------------------------------------------------
#
# This is a program for Passive Buzzer Module
# It will play simple songs.
# You could try to make songs by yourselves!
#
# Passive buzzer Pi
# VCC ------------------ 3.3V
# GND ------------------ GND
# SIG ------------------ Pin 11
#
#------------------------------------------------
import RPi.GPIO as GPIO
import time
Buzzer = 11
CL = [0, 131, 147, 165, 175, 196, 211, 248] # Frequency of Low C notes
CM = [0, 262, 294, 330, 350, 393, 441, 495] # Frequency of Middle C notes
CH = [0, 525, 589, 661, 700, 786, 882, 990] # Frequency of High C notes
song_1 = [ CM[3], CM[5], CM[6], CM[3], CM[2], CM[3], CM[5], CM[6], # Notes for song1
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] ]
beat_1 = [ 1, 1, 3, 1, 1, 3, 1, 1, #Beats of song 1, 1 means 1/8 beats
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 ]
song_2 = [ CM[1], CM[1], CM[1], CL[5], CM[3], CM[3], CM[3], CM[1], # Notes for song2
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] ]
beat_2 = [ 1, 1, 2, 2, 1, 1, 2, 2, #Beats of song 2, 1 means 1/8 beats
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.setmode(GPIO.BOARD)
GPIO.setup(Buzzer, GPIO.OUT)
global Buzz
Buzz = GPIO.PWM(Buzzer, 440) # 440 is initial frequency
Buzz.start(50) #Start Buzzer pin with 50% duty ration
def loop():
while True:
print('\n Playing song_1...')
for i in range(1, len(song_1)):
Buzz.ChangeFrequency(song_1[i]) #Change the frequency along the song note
time.sleep(beat_1[i] * 0.5) # delay a note for beat * 0.5
time.sleep(1)
print('\n\n Playing song_2...')
for i in range(1, len(song_2)):
Buzz.ChangeFrequency(song_2[i])
time.sleep(beat_2[i] * 0.5)
def destroy():
Buzz.stop() # Stop the buzzer
GPIO.output(Buzzer, 1) # Set Buzzer pin to High
GPIO.cleanup()
if __name__ == '__main__':
setup()
try:
loop()
except KeyboardInterrupt:
destroy()
网友评论