Seguindo o código:
//Notas para o Buzzer
const int c = 261;
const int d = 294;
const int e = 329;
const int f = 349;
const int g = 391;
const int gS = 415;
const int a = 440;
const int aS = 455;
const int b = 466;
const int cH = 523;
const int cSH = 554;
const int dH = 587;
const int dSH = 622;
const int eH = 659;
const int fH = 698;
const int fSH = 740;
const int gH = 784;
const int gSH = 830;
const int aH = 880;
//Controladores
int btn1, btn2, ldr, pot;
int var = 0;
int counter = 0;
void setup() {
//Pins de saída
pinMode(3, OUTPUT); //Buzzer
pinMode(6,OUTPUT); //LED1
pinMode(7,OUTPUT); //LED2
pinMode(8,OUTPUT); //LED Verde
pinMode(9,OUTPUT); //LED Amarelo
pinMode(10,OUTPUT); //LED Vermelho
//Pins de entrada
pinMode(4, INPUT); //Botão 01
pinMode(5, INPUT); //Botão 02
//Pins de entrada (analógica)
pinMode(A0, INPUT); //Potenciômetro
pinMode(A1, INPUT); //LDR
tone(3,450,100);
digitalWrite(8, 1);
delay(500);
tone(3,200,100);
digitalWrite(8,0);
digitalWrite(9,1);
delay(500);
tone(3, 450,100);
digitalWrite(9,0);
digitalWrite(10,1);
delay(500);
tone(3,600,100);
digitalWrite(10,0);
tone(3,450,100);
}
void loop() {
//Entrada de comando com os botões
btn1 = digitalRead(4);
btn2 = digitalRead(5);
if (btn1 == 1 && btn2 == 0){
var = 1;
}
if (btn1 == 0 && btn2 == 1){
var = 2;
}
if (btn1 == 1 && btn2 == 1){
var = 3;
}
if (var == 1){
luz1();
}
if (var == 2){
luz2();
}
if (var == 3){
star();
var = 0;
}
}
void luz1(){
ldr = analogRead(A1); //Lê o LDR
//Define o LED de resposta (LED1)
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
//Alerta de boa iluminação
if (ldr <= 920 && ldr >= 500){
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
}
//Alerta de iluminação forte
if (ldr >=921 && ldr <= 999){
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
}
if (ldr >=999){
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
tone(3,450,100);
delay(500);
}
//Alerta de iluminação fraca
if (ldr >=300 && ldr <= 499){
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
}
if (ldr <= 299){
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
tone(3,450,100);
delay(500);
}
}
void luz2(){
pot = analogRead(A0); //Lê o potenciômentro
//Define o LED de resposta (LED2)
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
//Alerta de LED em referência ao Potenciômetro
if (pot >= 700){
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
}
if (pot >= 300 && pot <= 699){
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
}
if (pot <= 299){
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
}
}
void star(){
//Tocar as partes
firstSection();
secondSection();
//Variação
beep(f, 250);
beep(gS, 500);
beep(f, 350);
beep(a, 125);
beep(cH, 500);
beep(a, 375);
beep(cH, 125);
beep(eH, 650);
delay(500);
secondSection();
//Variação
beep(f, 250);
beep(gS, 500);
beep(f, 375);
beep(cH, 125);
beep(a, 500);
beep(f, 375);
beep(cH, 125);
beep(a, 650);
delay(650);
}
//Produz o tone
void beep(int nota, int dur)
{
tone(3, nota, dur);
//Altera o LED
if(counter % 2 == 0)
{
digitalWrite(7, HIGH);
delay(dur);
digitalWrite(7, LOW);
}else
{
digitalWrite(6, HIGH);
delay(dur);
digitalWrite(6, LOW);
}
//Silencia o Buzzer
noTone(3);
delay(50);
//contador
counter++;
}
//Primeira sessão
void firstSection()
{
beep(a, 500);
beep(a, 500);
beep(a, 500);
beep(f, 350);
beep(cH, 150);
beep(a, 500);
beep(f, 350);
beep(cH, 150);
beep(a, 650);
delay(500);
beep(eH, 500);
beep(eH, 500);
beep(eH, 500);
beep(fH, 350);
beep(cH, 150);
beep(gS, 500);
beep(f, 350);
beep(cH, 150);
beep(a, 650);
delay(500);
}
//Segunda sessão
void secondSection()
{
beep(aH, 500);
beep(a, 300);
beep(a, 150);
beep(aH, 500);
beep(gSH, 325);
beep(gH, 175);
beep(fSH, 125);
beep(fH, 125);
beep(fSH, 250);
delay(325);
beep(aS, 250);
beep(dSH, 500);
beep(dH, 325);
beep(cSH, 175);
beep(cH, 125);
beep(b, 125);
beep(cH, 250);
delay(350);
}
Vídeo do projeto funcionando:
Ligando
Função para o LDR
Função do potenciômetro
Extra
0 comentários:
Postar um comentário