Olá garagistas. Eu estou querendo fazer um programa onde um sinal entra no pino 2 e esse sinal faz acender um LED no pino 5 por 10seg e também acionar um buzzer no pino 4 por 500ms. Fiz esse sketch, mas não funcionou. Alguem pode me dar uma ajuda? Valeu!

int botao = 2; // Botao tem que ser no pino 2
int buzzer = 4;
int led =  5;

// ------------------------------- funcao principal Setup -------------------------------
void setup() {  
pinMode(botao,INPUT_PULLUP); // botao entrada
pinMode (buzzer, OUTPUT); // saída buzzer
pinMode (led, OUTPUT);// saída LED

void loop(){
  if (digitalRead (botao) ==0) {// se acionar o botão ele vai a 0
    digitalWrite (led, HIGH);//acende led por 10seg
    delay(10000);
    digitalWrite (led, LOW);}
    digitalWrite (buzzer, HIGH);aciona buzzer por 500ms
    delay( 500);
    digitalWrite(buzzer, LOW);
  }
}

Exibições: 577

Responder esta

Respostas a este tópico

Olá Carlos, 

Quando vc comenta que não funcionou, o que deu errado? o programa não funcionou como esperado?

 não acionou o botão? não subiu o código e deu um erro? 

Nesse link eles ensinam a fazer desse jeito ai que vc quer
Basta tentar entender e trazer pro seu projeto a mesma ideia
Vai lá que vc consegue

https://www.arduino.cc/en/Tutorial/InputPullupSerial

Beleza imhugo. Vou dar uma olhada.

Oi CAS, bom dia.

Não entendi a relação do titulo do seu tópico com o seu código.

Depois, voce está usando um botão no pino 2, mas não se preocupou com o "boucing", (repique),

que é um efeito muito comum em botões e chaves mecânicas.

Talvez seja este o seu problema principal.

Uma sugestão: procure por "debouncing" no google e encontrará diversos tópicos.

Uma copia de um pedaço de code:

         if(botao ==1)           // Se bot foi pressionado

         {

             delay(100);          // Aguarde 100ms

              if(botao ==1)      // Se bot continua pressionado

              { 

                 ............

               }

           }

Rui 

Olá Rui. Realmente naun fiz isso no cód. Vou dar uma atenção maior para isso. Obrigado.

Como acho que ele eh iniciante, acho quea dúvida dele eh mais simples... ele não está esperando os 10s do LED aceso para depois ouvir o buzzer. Se for isso, é só trazer o comando do buzzer para antes do delay(10000) que irá resolver o problema... Vai apitar e acender ao mesmo tempo.

Pois é Pedroso, sou iniciante e ainda desconheço algumas funçoes. Meu projeto funcionaria assim.

aciono um botão, um buzzer ira tocar por 500ms e logo em seguida o LED se acenderia por 10seg. Abç

Fala Pedroso. Meu, desculpe. O cód naum subiu e deu erro

Atente-se ao que o Pedroso disse. No código que você colocou o LED permanecerá acesso por 10 segundos e só então que o buzzer irá tocar.

No quesito do bouncing, acredito que você não terá problemas com isso já que no seu código existe um intervalo de tempo muito grande entre uma leitura e outra do botão e o bouncing ocorre em um intervalo de tempo pequeno.

Uma coisa que pude reparar no seu código é que o colchetes do setup não está fechado, corrija isso e tente novamente.

O João Arthur matou a questão. O setup não está fechado. Ele quis dizer que está faltando a chave de fechamento "}".

Isso vai causar um erro de compilação.

Obs: tem outro erro na linha:

digitalWrite (led, LOW);}

Provavelmente essa chave de fechamento não deveria existir. Ou use ela para fechar o setup.

Uma dica para quem está iniciando é que, quando observar um erro de compilação:

1) Leia o erro. A mensagens de erro do compilador ajudam a identificar em que linha o erro ocorreu e também a natureza do erro.

2) Leu erro e, mesmo assim, não conseguiu resolver: Poste sua dúvida com a mensagem de erro e o código. Fica mais fácil para obter ajuda.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço