Olá turma, aqui tem um rascunho do códio do labirinto de fio.
/*
Controle de leds com botão
inicio - verde, amarelo e vermelho apagados
1 pulso - acende verde,
2 pulso - apago verde, acendo amarelo
3 pulso - apaga amarelo, acende vermelho
4 pulso - piscar vermelho
*/
int vermelho=12;
int amarelo=11;
int verde=10;
int buzzer=7;//ligar som, buzzer
int botao=8;//tocou fio
int botaoVitoria=4;
int pulso=0;
//sonorização
char buz = 5;
char* musica[] = {"Mi","Pausa", "Mi","Fa","Sol","Sol","Fa", "Mi", "Re", "Do", "Do", "Re", "Mi", "Re","Do","Do", "Fim"};
int duracao[] = {400, 3, 300, 300, 300, 300, 300, 300, 200, 200, 300, 300, 300, 300, 200, 200, 200, };
char* errou[] = {"Re#", "Fim"};
int dur[] = {4000};
void setup()
{
pinMode(vermelho, OUTPUT);
pinMode(amarelo, OUTPUT);
pinMode(verde, OUTPUT);
pinMode(botao, INPUT_PULLUP);
//inicializa música
pinMode(buz, OUTPUT);
tocar(musica,duracao); //se chegou no final, musica de vitoria
//tocar(errou,dur); //se errar, tocar
}
void loop()
{
if (digitalRead(botao) == HIGH) { // Botão apertado;
pulso++; // Liga led.
delay(300);
}//fim do if
contar(pulso);
}//fim loop
void piscar(int pin){
digitalWrite(pin, HIGH);
delay(300); // Wait for 1000 millisecond(s)
digitalWrite(pin, LOW);
delay(300); // Wait for 1000 millisecond(s)
}
void contar(int ctd){
if(ctd==1){
digitalWrite(verde, HIGH);
digitalWrite(amarelo,LOW);
digitalWrite(vermelho,LOW);
}
if(ctd==2){
digitalWrite(verde,LOW);
digitalWrite(amarelo,HIGH);
digitalWrite(vermelho,LOW);
}
if(ctd==3){
digitalWrite(verde,LOW);
digitalWrite(amarelo,LOW);
digitalWrite(vermelho,HIGH);
}
if(ctd>3){
digitalWrite(verde,LOW);
digitalWrite(amarelo,LOW);
piscar(vermelho);
tocar(musica,duracao);
}
}
//tocar música
void tocar(char* mus[], int tempo[]){
int tom = 0;
for(int i = 0; mus[i]!="Fim";i++){
if(mus[i] == "Do") tom = 262;
if(mus[i] == "Re") tom = 294;
if(mus[i] == "Mi") tom = 330;
if(mus[i] == "Fa") tom = 349;
if(mus[i] == "Sol") tom = 392;
if(mus[i] == "La") tom = 440;
if(mus[i] == "Si") tom = 494;
if(mus[i] == "Do#") tom = 528;
if(mus[i] == "Re#") tom = 622;
if(mus[i] == "Fa#") tom = 370;
if(mus[i] == "Sol#") tom = 415;
if(mus[i] == "La#") tom = 466;
if(mus[i] == "Pausa") tom = 0;
tone(buz, tom, tempo[i]);
delay(tempo[i]);
}
}