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
Tags:
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por