/******************************************************************************* * * Projeto 33 – Sons com buzzer ou disco piezoelétrico * http://squids.com.br/arduino * *******************************************************************************/ const int buzzerPin = 3; // Pino ligado ao buzzer const int piezoPin = 5; //Pino ligado ao piezo const int botPin = 2; // Pino ligado ao push button int estadoA; //Define a variável estadoA=0 (leitura) int estadoB = LOW; //Define a variável estadoB=0 (valor gravado) int seletor = 0; //Define o valor 0 ou 1 (HIGH ou LOW) int pin; //Declara a variável pin void setup() { pinMode(buzzerPin,OUTPUT); // Define o pino do Buzzer como Saida pinMode(botPin,INPUT); //Define a porta do botão como Entrada no Arduino } void loop() { //toca a melodia select(); // chama a função select delay(1000); select(); // chama a função select tone(pin,262,200); //DO select(); // chama a função select delay(200); tone(pin,294,300); //RE select(); // chama a função select delay(200); tone(pin,330,300); //MI select(); // chama a função select delay(200); tone(pin,349,300); //FA select(); // chama a função select delay(300); tone(pin,349,300); //FA select(); // chama a função select delay(300); tone(pin,349,300); //FA select(); // chama a função select delay(300); tone(pin,262,100); //DO select(); // chama a função select delay(200); tone(pin,294,300); //RE select(); // chama a função select delay(200); tone(pin,262,100); //DO select(); // chama a função select delay(200); tone(pin,294,300); //RE select(); // chama a função select delay(300); tone(pin,294,300); //RE select(); // chama a função select delay(300); tone(pin,294,300); //RE select(); // chama a função select delay(300); tone(pin,262,200); //DO select(); // chama a função select delay(200); tone(pin,392,200); //SOL select(); // chama a função select delay(200); tone(pin,349,200); //FA select(); // chama a função select delay(200); tone(pin,330,300); //MI select(); // chama a função select delay(300); tone(pin,330,300); //MI select(); // chama a função select delay(300); tone(pin,330,300); //MI select(); // chama a função select delay(300); tone(pin,262,200); //DO select(); // chama a função select delay(200); tone(pin,294,300); //RE select(); // chama a função select delay(200); tone(pin,330,300); //MI select(); // chama a função select delay(200); tone(pin,349,300); //FA select(); // chama a função select delay(300); tone(pin,349,300); //FA select(); // chama a função select delay(300); tone(pin,349,300); //FA select(); // chama a função select delay(300); select(); // chama a função select } void select(){ //Push button função liga / desliga estadoA = digitalRead(botPin); //Lê o botão se está HIGH ou LOW if ((estadoA==HIGH) && (estadoB==LOW)) { seletor = 1 - seletor; delay(300); //espera soltar o botão } estadoB = estadoA; if (seletor == 1) {pin = 3;} // aciona o piezo else {pin = 5;} //aciona o buzzer }