collapse

* Links de Robótica

* Posts Recentes

Palavras Cruzadas por Hugu
[Hoje às 00:54]


[Projecto] Bomba Airsoft por jm_araujo
[Ontem às 16:54]


Apresentação por Tech_JA
[Ontem às 09:19]


Medir Agua que está no Poço por filjoa
[21 de Setembro de 2017, 20:58]


URGENTE - display de 7 segmentos com backpack por helderjsd
[20 de Setembro de 2017, 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[19 de Setembro de 2017, 10:20]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]

Autor Tópico: Display de segmentos com 4 digitos em arduino  (Lida 909 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline duaron

  • Mini Robot
  • *
  • Mensagens: 12
    • Dual Station Informática
Display de segmentos com 4 digitos em arduino
« em: 30 de Outubro de 2014, 12:38 »
Boas

Venho aqui deixar uma pequena experiencia que fiz para explorar um display de segmentos com 4 digitos que veio com o meu kit de arduino.
Como podem ver no video está a fazer uma contagem automatica e um loop que fiz no final.

Deixo o codigo tambem para verem e comentarem.

Código: http://pastebin.com/qEWTte3d

Video demo:

Pseudo esquema (o fritzing nao tinha o meu display exato)




Cumprimentos
duaron

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.126
  • NERD!
Re: Display de segmentos com 4 digitos em arduino
« Responder #1 em: 30 de Outubro de 2014, 13:24 »
Permite-me alguns comentários:
Deves colocar as resistêncais nos segmentos (fios azuis) e não nos fios comuns (amarelos) como fizeste, para que o brilho não varie consoante o nº de segmentos iluminados (como está a acontecer e vê-se bem no vídeo que o 1 e o 7 são mais brilhantes).
O código ficava melhor com umas otimizações: os padrões para os numeros deviam estar num array de arrrays.
Em vez de:
Código: [Seleccione]
int one[] = {0,0,1,1,0,0,0};
int two[] = {1,1,0,1,1,0,1};
int three[] = {0,1,1,1,1,0,1};
int four[] = {0,0,1,1,0,1,1};
int five[] = {0,1,1,0,1,1,1};
int six[] = {1,1,1,0,1,1,1};
int seven[] = {0,0,1,1,1,0,0};
int eight[] = {1,1,1,1,1,1,1};
int nine[] = {0,0,1,1,1,1,1};
int zero[] = {1,1,1,1,1,1,0};
passavas a ter:
Código: [Seleccione]
int numeros[][7] = {{1,1,1,1,1,1,0}, //0
                   {0,0,1,1,0,0,0}, //1
                   {1,1,0,1,1,0,1}, //2
                   {0,1,1,1,1,0,1}, //3
                   {0,0,1,1,0,1,1}, //4
                   {0,1,1,0,1,1,1}, //5
                   {1,1,1,0,1,1,1}, //6
                   {0,0,1,1,1,0,0}, //7
                   {1,1,1,1,1,1,1}, //8
                   {0,0,1,1,1,1,1}}; //9

O que te permitia simplificar a função printNumber() para:
Código: [Seleccione]

void printNumber(int n, int index){
  clearLeds();
  if (n>=0 && n<=9) {
    lightNumber(numeros[n]);
  } elseif  (n==99) {
      int test[] = {1,1,0,1,1,0,1}; 
      lightNumber(test);
  }
  digitalWrite((10+index),LOW);
}

Não fiz uma análise esxaustiva do código, mas quando vejo muito cut&paste de código  como no caso do printNumber, torna-se obvio que dá para otimizar.

Offline duaron

  • Mini Robot
  • *
  • Mensagens: 12
    • Dual Station Informática
Re: Display de segmentos com 4 digitos em arduino
« Responder #2 em: 31 de Outubro de 2014, 10:07 »
Muito obrigado pelo comment, parece me que realmente pode ficar muito mais simples. Daqui a pouco já vou experimentar essas alterações e depois posto aqui o resultado.

Mais uma vez obrigado.