Explicação para o evento num display de 7 segmentos

Gravei o sketch abaixo no arduino uno e apareceram várias "estranhezas" entre elas peço ajuda para

explicação das duas seguintes:

1. O número 3 aparece como na figura abaixo (6 segmentos - o segmento E do display a mais) mas

    pelo sketch deveria ter somente os 5 segmentos corretos.

2. A letra F aparece como na figura abaixo (3 segmentos - o segmento E a menos) mas pelo sketch

    deveria ter os 4 segmentos corretos.

Obs. O modelo do meu display tem a mesma construção do usado no sketch.

Muito obrigado pela atenção.

byte seven_seg_digits[16][7] = { { 1,1,1,1,1,1,0 },  // = Digito 0
                                 { 0,1,1,0,0,0,0 },  // = Digito 1
                                 { 1,1,0,1,1,0,1 },  // = Digito 2
                                 { 1,1,1,1,0,0,1 },  // = Digito 3
                                 { 0,1,1,0,0,1,1 },  // = Digito 4
                                 { 1,0,1,1,0,1,1 },  // = Digito 5
                                 { 1,0,1,1,1,1,1 },  // = Digito 6
                                 { 1,1,1,0,0,0,0 },  // = Digito 7
                                 { 1,1,1,1,1,1,1 },  // = Digito 8
                                 { 1,1,1,0,0,1,1 },  // = Digito 9
                                 { 1,1,1,0,1,1,1 },  // = Digito A
                                 { 0,0,1,1,1,1,1 },  // = Digito B
                                 { 1,0,0,1,1,1,0 },  // = Digito C
                                 { 0,1,1,1,1,0,1 },  // = Digito D
                                 { 1,0,0,1,1,1,1 },  // = Digito E
                                 { 1,0,0,0,1,1,1 }   // = Digito F
                                 };


void setup()
{  
  pinMode(2, OUTPUT); //Pino 2 do Arduino ligado ao segmento A  
  pinMode(3, OUTPUT); //Pino 3 do Arduino ligado ao segmento B
  pinMode(4, OUTPUT); //Pino 4 do Arduino ligado ao segmento C
  pinMode(5, OUTPUT); //Pino 5 do Arduino ligado ao segmento D
  pinMode(6, OUTPUT); //Pino 6 do Arduino ligado ao segmento E
  pinMode(7, OUTPUT); //Pino 7 do Arduino ligado ao segmento F
  pinMode(8, OUTPUT); //Pino 8 do Arduino ligado ao segmento G
  pinMode(9, OUTPUT); //Pino 9 do Arduino ligado ao segmento PONTO
  writePonto(0);  // Inicia com o ponto desligado
}

void writePonto(byte dot)   //Funcao que aciona o ponto no display
{  
  digitalWrite(9, dot);
}

void sevenSegWrite(byte digit)  //Funcao que aciona o display
{
  byte pin = 2;

  //Percorre o array ligando os segmentos correspondentes ao digito
  for (byte segCount = 0; segCount < 7; ++segCount)  
  {
    digitalWrite(pin, seven_seg_digits[digit][segCount]);
    ++pin;
  }
    writePonto(1);  //Liga o ponto
    delay(100);   //Aguarda 100 milisegundos
    writePonto(0);  //Desliga o ponto
}

void loop()
{
  //Contador de 0 a 15, ligando os segmentos correspondentes
  //0 a 9 = liga os segmentos correspondentes aos numeros
  //10 a 15 = Forma as letras A,B,C,D,E,F
  for (byte count = 0; count < 16; count++)
  {
     delay(500);
     sevenSegWrite(count);
  }
  delay(4000);
}

Exibições: 132

Responder esta

Respostas a este tópico

Boa noite Max, não consegui achar nenhum problema no código, mas talvez seja o caso de você revisar se seu display é ânodo comum ou cátodo comum, pois esse código vale apenas para displays de cátodo comum.

Rafael, o meu é catodo comum , igual o usado pelo criador do sketch.

Analisei tudo e não achei nada para o mistério. Você reparou que para o 3 acende o segmento e para o 7

não acende?

Obrigado

Max, analisei renovo o código e não achei nada, inclusive achei esse mesmo código aqui na minha biblioteca de exemplos rsrs

Mande foto do circuitinho, uma foto que de pra conferir suas ligações físicas! Abraços

Obrigado Rafael, vou mandar.

Rafael, tive que desmanchar o circuito pois não tinha jumpers para uma emergência.

Quando eu o refizer mando foto.

Desculpe-me o obrigado. 

Bom dia Max, 

Informe o link de onde copiou esse sketch.

Ou copiou errado ou sua montagem esta errada. 

Confira todas as ligações.

Murta, tive que desmontá-lo para uma emergência (falta de jumpers).

Desculpe-me e obrigado.

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço