terça-feira, 12 de novembro de 2019

Código Labirinto com fio

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]);
  }
}

Nenhum comentário:

Postar um comentário