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?

Exibições: 187

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço