【树莓派+arduino实验记录6】无源与有源蜂鸣器

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 
#include 

#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 
#include 
#include 

#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

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()

你可能感兴趣的:(【树莓派+arduino实验记录6】无源与有源蜂鸣器)