Display de 7 segmentos com 4 botões

Bom dia! Sou novo com arduíno e preciso de ajuda. Quero fazer, em uma Arduino mega, um contador de 0 à 9 em um display de 7 segmentos com 4 botões, e cada vez que pressiono qualquer botão, soma-se mais 1 dígito no display. O display de 7 segmentos é catodo comum e o arduíno é o mega, já procurei vídeos aulas/tutoriais e não encontrei nada para me ajudar.

Olá, vamos por partes.
Parte 1
Arduino Mega com display de 7 segmentos.
Veja este tutorial.

(se tiver problemas com inglês, use o tradutor do google).

Parte 2
Coloque os botões em 4 pinos diferente do arduino;
Escreva uma rotina que lê os botões e caso eles esteja pressionados, incremente o contador.

Se tiver dificuldade com a modificação do código, publique aqui a sua tentativa de faze-lo e então o ajudaremos a resolver a dificuldade.

Olá, boa noite! Fiz meu código com a montagem mas deu erro, não consegui prosseguir com o código. Preciso de ajuda :frowning:

O código que utilizei foi este:

byte numero [10][8]=
{
{1,1,1,1,1,1,0,0}
{0,1,1,0,0,0,0,0}
{1,1,0,1,1,0,1,0}
{1,1,1,1,0,0,1,0}
{0,1,1,0,0,1,1,0}
{1,0,1,1,0,1,1,0}
{1,0,1,1,1,1,1,0}
{1,1,1,0,0,0,0,0}
{1,1,1,1,1,1,1,0}
{1,1,1,0,0,1,1,0}
}

bool anterior[10][8]=
{
{1,1,1,1,1,1,0,0}
{0,1,1,0,0,0,0,0}
{1,1,0,1,1,0,1,0}
{1,1,1,1,0,0,1,0}
{0,1,1,0,0,1,1,0}
{1,0,1,1,0,1,1,0}
{1,0,1,1,1,1,1,0}
{1,1,1,0,0,0,0,0}
{1,1,1,1,1,1,1,0} 
{1,1,1,0,0,1,1,0}
}

void setup(){

int i;
for (i = 2; i<=8; i++) { pinMode(i, OUTPUT);
digitalWrite(i, LOW); }
int b;
for (b = 9; b <= 12; i++) { pinMode(b, INPUT); }
}

void loop ( )
{
for ( i = 0; i <=9; i++) {
Int bot = digitalRead(b)
If (bot != anterior [ i ]) {
delay (20)
anterior[ i ]= bot;
}
}
If (bot == LOW) {
sev.seg.setNumber(i+1);
}
else {
sevseg.black( );
}
}  
}

Ele não está funcionando e apresenta erros, não estou conseguindo resolver.

assim por alto tens um erro aqui:

void loop() {
int i; // <- Falta-te isto. 

Depois:

Int bot = digitalRead(b) // Int não existe e falta-te um ; no final desta instrução. 

Depois:

If (bot != anterior [ i ]) { //estás a comprar um bit a um array de bits... o que esperas tirar daqui? 

Mas se disseres quais são os erros é mais fácil de te ajudar.

Eu refiz o código e deixei ele diferente do anterior; ele tá funcionando, mas os botões não estão funcionando quando são clicados. Não aparece o dígito de quantas vezes os botões foram pressionados e não estou conseguindo resolver. Uma parte do código está funcionando, mas falta a parte principal que é o botão :(.

int botao1 = 9;
int botao2 = 10;
int botao3 = 11;
int botao4 = 12;
int lei1 = 0;
int lei2 = 0;
int lei3 = 0;
int lei4 = 0;
int ultlei1 = 0;
int ultlei2 = 0;
int ultlei3 = 0;
int ultlei4 = 0;
int number = 0;


void setup(){

int i;
for (i = 2; i < 9; i++) { pinMode(i, OUTPUT);
digitalWrite(i, LOW); }
pinMode (botao1, INPUT);
pinMode (botao2, INPUT);
pinMode (botao3, INPUT);
pinMode (botao4, INPUT);
Serial.begin (9600);

byte number [10][8] = {
{1,1,1,1,1,1,0,0},
{0,1,1,0,0,0,0,0},
{1,1,0,1,1,0,1,0},
{1,1,1,1,0,0,1,0},
{0,1,1,0,0,1,1,0},
{1,0,1,1,0,1,1,0},
{1,0,1,1,1,1,1,0},
{1,1,1,0,0,0,0,0},
{1,1,1,1,1,1,1,0},
{1,1,1,0,0,1,1,0},
};
}
void loop ( )
{
lei1 = digitalRead (botao1);
lei2 = digitalRead (botao2);
lei3 = digitalRead (botao3);
lei4 = digitalRead (botao4);
if (lei1 != ultlei1) {
if (lei1 == HIGH) {
number ++;
}
}
ultlei1 = lei1;

if (lei2 != ultlei2) {
if (lei2 == HIGH) {
number ++;
}
}
ultlei2 = lei2;

if (lei3 != ultlei3) {
if (lei3 == HIGH) {
number ++;
}
}
ultlei3 = lei3;

if (lei4 != ultlei4) {
if (lei4 == HIGH) {
number ++;
}
}
ultlei4 = lei4;

Serial.println(number);
if (number >= 10) {
number = 0;
}
if (number <= -1) {
number = 9;
}
}

O código que utilizei foi este. Poderiam me ajudar com isso? Por favor!

Olá,
testa este Código e veja se funciona os botões como vc precisa.

int botao1 = 9;
int botao2 = 10;
int botao3 = 11;
int botao4 = 12;
int number = 0;
bool flag = false;

void setup() {

  int i;
  for (i = 2; i < 9; i++) {
    pinMode(i, OUTPUT);
    digitalWrite(i, LOW);
  }
  pinMode (botao1, INPUT);
  pinMode (botao2, INPUT);
  pinMode (botao3, INPUT);
  pinMode (botao4, INPUT);
  Serial.begin (9600);

  byte number [10][8] = {
    {1, 1, 1, 1, 1, 1, 0, 0},
    {0, 1, 1, 0, 0, 0, 0, 0},
    {1, 1, 0, 1, 1, 0, 1, 0},
    {1, 1, 1, 1, 0, 0, 1, 0},
    {0, 1, 1, 0, 0, 1, 1, 0},
    {1, 0, 1, 1, 0, 1, 1, 0},
    {1, 0, 1, 1, 1, 1, 1, 0},
    {1, 1, 1, 0, 0, 0, 0, 0},
    {1, 1, 1, 1, 1, 1, 1, 0},
    {1, 1, 1, 0, 0, 1, 1, 0},
  };
}
void loop ( )
{
  if (digitalRead (botao1) == HIGH or digitalRead (botao2) == HIGH or digitalRead (botao3) == HIGH or digitalRead (botao4) == HIGH )
  {
    delay(30);
    while (digitalRead (botao1) == HIGH or digitalRead (botao2) == HIGH or digitalRead (botao3) == HIGH or digitalRead (botao4) == HIGH )
    {
      flag = true;
    }
  }
  if (flag == true)
  {
    number++;
    if (number >= 10) {
      number = 0;
    }
    if (number <= -1) {
      number = 9;
    }
    flag = false;
    Serial.println(number);
  }
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.