Boa tarde, estou tendo um problema com meu programa no arduino que ainda não consegui identificar,
o conceito dele consiste em 8 contadores, 4 esquerda e 4 direita, mas fiz somente 6 entradas no código que chamei de Ae, Be, Ce e Ad, Bd, Cd. Através de porta logica e negando fiz com que os botões fossem identificados quando pressionados. O problema anterior era de que se eu não colocasse algo que limitasse, se continuasse pressionando o botao ele continuava contando, mas isso eu resolvi fazendo um if vazio dentro do if, que cai nesse if se a pessoa mantem pressionado. Fiz o lado esquerdo distinto do lado direito, agora o PROBLEMA é que se eu mantenho pressionado um botão do lado direito, por exemplo o botao 1, e se tento pressionar o botao 1 do lado esquerdo, ele não conta no outro lado, e fica meio que preso no botao do lado direito, nao sei o que pode ser. Preciso de ajuda nisso, é um projeto.
Pra complementar o código que eu disse exemplificado abaixo com apenas o primeiro LCD. Contadores feitos e mostrados no lcd.
#include <LiquidCrystal.h>
//Define os pinos que serão utilizados para ligação ao display
LiquidCrystal lcd1(8, 4, 6, 5, 2, 10);
int contEsq1 = 0,contDir1 = 0;
int soma1 = 0;
int cmp1a, cmp1b;
int Ae = 13;
int Ad = 17;
int Be = 12;
int Bd = 16;
int Ce = 11;
int Cd = 15;
pinMode(Ae, INPUT);
pinMode(Ad, INPUT);
pinMode(Be, INPUT);
pinMode(Bd, INPUT);
pinMode(Ce, INPUT);
pinMode(Cd, INPUT);
// USANDO LEITURAS PEGANDO VALORES POR MEIO DE PORTA LOGICA
leitura1a = !(digitalRead(Ae) & digitalRead(Be) & !digitalRead(Ce));
leitura1b = !(digitalRead(Ad) & digitalRead(Bd) & !digitalRead(Cd));
// Verifica se o botao foi pressionado
if (leitura1a == 0) {
// Incrementa o valor do contador
contEsq1 = contEsq1 + 1;
// Apaga o valor anterior
lcd1.setCursor(0, 1);
lcd1.print(" ");
// Mostra o valor do contador
lcd1.setCursor(0, 1);
lcd1.print(contEsq1);
auxValorEsq = contEsq1;
// O PROBLEMA ACREDITO QUE ESTEJA ABAIXO, se não coloco essa função ele fica contando sem parar.
while(!(digitalRead(Ae) & digitalRead(Be) & !digitalRead(Ce)) != 1) {}
cmp1a = 1;
}
if (contEsq1 > 9999){
contEsq1 = 1;
lcd1.setCursor(0, 1);
lcd1.print(" ");
lcd1.setCursor(0, 1);
lcd1.print(contEsq1);
lcd1.createChar(1, terceiro);
lcd1.setCursor(4,1);
lcd1.write(1);
delay(0.1);
}
// EXATAMENTE A MESMA COISA SÓ QUE CONTADOR DIREITO.
if (leitura1b == 0) {
// Incrementa o valor do contador
contDir1 = contDir1 + 1;
// Apaga o valor anterior
lcd1.setCursor(5, 1);
lcd1.print(" ");
// Mostra o valor do contador
lcd1.setCursor(5, 1);
lcd1.print(contDir1);
auxValorDir = contDir1;
while(!(digitalRead(Ad) && digitalRead(Bd) && !digitalRead(Cd)) != 1) {}
cmp1b = 1;
}
if (contDir1 > 9999){
contDir1 = 1;
lcd1.setCursor(5, 1);
lcd1.print(" ");
lcd1.setCursor(5, 1);
lcd1.print(contDir1);
lcd1.createChar(1, quarto);
lcd1.setCursor(9,1);
lcd1.write(1);
delay(0.1);
}
// Realiza a soma entre os dois contadores e mostra no displau.
if ( contDir1 || contEsq1 <= 10000) {
lcd1.setCursor(10, 1);
lcd1.print(" ");
lcd1.setCursor(10, 1);
soma1 = contEsq1 + contDir1;
lcd1.print(soma1);
delay(50);
}
Então, o problema está sendo que se eu pressiono o contador da direita e mantenho pressionado, ele não conta no da esquerda, mesmo não tendo variaveis que se repetem, alguém pode me ajudar?
Tags:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por