Olá pessoal, tudo bem?

Sou novo aqui e estou com uma duvida realmente cabulosa na programação de um projeto do grupo de Arduino da minha escola.

A equipe de Arduino ficou responsável por criar os "botões" de um quiz que terá em um evento, e nós ja arrumamos o material e a logica para programar ele, mas temos um probleminha:

Queremos que assim que um Botão seja pressionado, o Led seja acesso e que "cancele" todas as possíveis operações do outro botão, assim apenas acendendo o led do jogador mais rápido. Mas não sabemos de nenhum comando/método para isso, vocês conhecem algum? Caso puderem ajudar, podem ter certeza que eu e o grupo de Arduino agradeceremos bastante :)

Abraços, Lucas

Exibições: 556

Responder esta

Respostas a este tópico

Lucas primeiramente seja bem vindo ao LdG.

Você pode usar um IF para verificar se o botão foi pressionado, dentro desse IF um digitalWrite para ligar o LED e um WHILE para "cancelar" os outros botões. Esse WHILE teria como condição a leitura de um outro botão que servirá de 'reset' para a resposta atual.

if(digitalRead(botao)==HIGH){

     digitalWrite(led, HIGH);

     while(digitalRead(reset)==LOW);

}

Algo mais ou menos assim.

Faça isso para todos os botões e adapte para o seu hardware

Vou tentar, Obrigado!

 Lucas Andrade Martins , tudo bem??

Escrevi este código é simples mas funcional.

Abs.

Mauricio Ortega

//entradas digitais dos botões

int btn1=9// Botão 1 pino 9

int btn2=8// Botão 2 pino 8

int btn3=7// Botão 3 pino 7

int btn4=6; // Botão 4 pino 6

//Status dos botoes
// Guarda valor de Status dos botoes  0 = pressionado, 1 = nao pressionado.
int btn1_status = 1;
int btn2_status = 1;
int btn3_status = 1;
int btn4_status = 1;

//Saidas digitais dos leds
#define led1  5        // Led1 pino 5 corresponde ao botao 1
#define led2  4        // Led2 pino 4 corresponde ao botao 2
#define led3  3        // Led3 pino 3 corresponde ao botao 3
#define led4  2        // Led4 pino 2 corresponde ao botao 4
# define ledPin_13 13  // Led pino 13 quado ligado

//Quando for detectado o pressionamento de um botao esta variavel será modificada
// exemplo   hold = 0; nenhum botao pressionado,  hold = 1; botao pressionado trava o jogo.
// esta varial sera utilizada para travar os botoes quando detectar o pressionamento, garantindo que somente um jogador seja sorteado em cada jogada.
int hold = 0;

void setup() {

 Serial.begin(9600);

 //Lockout Status LED pin with is statndard on the Arduino Board(s)
 pinMode(ledPin_13, OUTPUT);

 //Button inputs defined
 pinMode(btn1, INPUT_PULLUP);
 pinMode(btn2, INPUT_PULLUP);
 pinMode(btn3, INPUT_PULLUP);
 pinMode(btn4, INPUT_PULLUP);

 //LED outout Pins defined
 pinMode(led1, OUTPUT), digitalWrite(led1, LOW);
 pinMode(led2, OUTPUT), digitalWrite(led2, LOW);
 pinMode(led3, OUTPUT), digitalWrite(led3, LOW);
 pinMode(led4, OUTPUT), digitalWrite(led4, LOW);

 delay(1000);
 digitalWrite(ledPin_13, HIGH); /// Liga o led indicando que o jogo foi inicializado
}

void loop() {

 //Read to see if a button is pushed
 if (hold == 0) {
   btn1_status = digitalRead(btn1);
   btn2_status = digitalRead(btn2);
   btn3_status = digitalRead(btn3);
   btn4_status = digitalRead(btn4);

   //Se o Status de qualquer botão ir para 0 o jogo trava e acende o led correspondente ao botao pressionado

   //Jogador 1
   if (btn1_status == 0) {
     digitalWrite(btn1, HIGH);
     hold = 1; //trava os outros botoes
     Serial.println("Jogador 1");
   }
   //Jogador 2
   if (btn2_status == 0) {
     digitalWrite(btn2, HIGH);
     hold = 1; //trava os outros botoes
     Serial.println("Jogador 2");
   }
   //Jogador 3
   if (btn3_status == 0) {
     digitalWrite(btn3, HIGH);
     hold = 1; //trava os outros botoes
     Serial.println("Jogador 3");
   }
   //Jogador 4
   if (btn4_status == 0) {
     digitalWrite(btn4, HIGH);
     hold = 1; //trava os outros botoes
     Serial.println("Jogador 4");
   }
 }
 else { // pisca indicando fim do jogo
   digitalWrite(ledPin_13, LOW);   // indica fim de jogo
   delay(500);
   digitalWrite(ledPin_13, HIGH);   // indica fim de jogo
   delay(500);
 }
}

Vou testar ele em breve, muito obrigado!

Se os 4 botões forem pressionados, o programa só vai detectar o primeiro ou qual quer combinação com o primeiro botão.

Eu nao testei só escrevi, hehhh.....!!

Tem erro, tem que mudar para;

else if  (btn2_status == 0)....

else if  (btn3_status == 0)....

else if  (btn4_status == 0)....

abs

Ortega tudo bem ?

Como formatou esse Sketch para inseri-lo no tópico?

Gostei desse modo. Todo mundo poderia fazer assim.

Obrigado. 

Tudo bem, tirando este frio, Hehehhhh!!

Murta, na própria ide do Arduino na aba "Edit ",selecione  >Copy as HTML.

E aqui no fórum selecionar HTML e colar o texto copiado, talvez tenha que corrigir algum caractere especial.

Abs

Mauricio Ortega 

Muito bom ! 

Acho que deveríamos colocar a sua dica no tópico - como postar. 

Muito obrigado.

Abraços

Gustavo Murta

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço