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