WeMOS: D1 R1 mini buzzer
Jump to navigation
Jump to search
/*
Wemos D1 mini/D1 lite
Buzzer Shield example
by Petr Lukas
Simple music, sound efects and cricket chirp sounds
*/
int buzzer=D5; //Buzzer control port, default D5
void setup() {
pinMode(buzzer, OUTPUT);
digitalWrite(buzzer, LOW);
Serial.begin(115200);
Serial.println("Buzzer Test...");
musicTest();
delay(1000);
ohhh();
delay(1000);
uhoh();
delay(1000);
cricketChirp();
cricketChirp();
cricketChirp();
cricketChirp();
}
void tone(uint8_t _pin, unsigned int frequency, unsigned long duration, unsigned long pause) {
pinMode (_pin, OUTPUT );
analogWriteFreq(frequency);
analogWrite(_pin,500);
delay(duration);
analogWrite(_pin,0);
delay(pause);
}
void beep (int speakerPin, float noteFrequency, long noteDuration){
int x;
// Convert the frequency to microseconds
float microsecondsPerWave = 1000000/noteFrequency;
// Calculate how many milliseconds there are per HIGH/LOW cycles.
float millisecondsPerCycle = 1000/(microsecondsPerWave * 2);
// Multiply noteDuration * number or cycles per millisecond
float loopTime = noteDuration * millisecondsPerCycle;
// Play the note for the calculated loopTime.
for (x=0;x<loopTime;x++)
{
digitalWrite(speakerPin,HIGH);
delayMicroseconds(microsecondsPerWave);
digitalWrite(speakerPin,LOW);
delayMicroseconds(microsecondsPerWave);
}
}
void musicTest(){
delay(1000);
tone(buzzer, 400, 600, 150);
tone(buzzer, 400, 600, 150);
tone(buzzer, 400, 600, 150);
tone(buzzer, 320, 400, 80);
tone(buzzer, 475, 150, 80);
tone(buzzer, 400, 600, 100);
tone(buzzer, 320, 400, 80);
tone(buzzer, 475, 150, 80);
tone(buzzer, 400, 600, 100);
}
void ohhh() {
for (int i=1000; i<2000; i=i*1.02) { beep(buzzer,i,10); } for (int i=2000; i>1000; i=i*.98) {
beep(buzzer,i,10);
}
}
void uhoh() {
for (int i=1000; i<1244; i=i*1.01) { beep(buzzer,i,30); } delay(200); for (int i=1244; i>1108; i=i*.99) {
beep(buzzer,i,30);
}
}
void cricketChirp(){
for(int i=0; i<4; i++){
tone(buzzer, 4000, 20, 15);
}
delay(450);
}
void loop() {
}