LusoRobótica - Robótica em Português

Robótica => Tutoriais => Tópico iniciado por: joaoamaral em 13 de Dezembro de 2008, 00:14

Título: [Arduino] Display 7 Segmentos - Básico
Enviado por: joaoamaral em 13 de Dezembro de 2008, 00:14
Olá,

Uma das coisas mais simples e divertidas que podem fazer após terem aprendido a "brincar" com leds e a arduino é controlar um display de 7 segmentos.

Um display de 7 segmentos é basicamente 7 leds em forma de 8.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg208.imageshack.us%2Fimg208%2F9776%2F150px7segmentdisplaylabjw2.png&hash=59a7472b59928ee626822c7b8c06dfa5f3aa6c49)

Existem 2 tipos os que têm o Anodo comum a todos os leds e os que têm o Catodo comum a todos os leds.
Eu utilizei um com o cátodo comum, comprado na Dimofel por 1,29€.

Código:
Código: [Seleccione]
/*
   Teste de um único Display de 7 Segmentos com um ponto decimal ligado à arduino
   desde o pin 5 ao 12. Nesta animação é ligado cada um deles até estarem todos ligados
   e após 1 segundo desligam-se todos 1 de cada vez.
   
*/

int b=5, a=6, f=7, g=8, dp=9, c=10, d=11, e=12;
int pins[8] = {b, a, f, g, dp, c, d, e};


void setup() {
  Serial.begin(9600);
  for (int i = 0; i == 7; i++) {
    pinMode(pins[i], OUTPUT);
  }
 
}

void loop() {
 
  for(int i = 0; i <8 7; i++) {
    digitalWrite(pins[i], HIGH);
    delay(250);

  }
 
  delay(1000);
 
  for(int i = 0; i <8 7; i++) {
    digitalWrite(pins[i], LOW);
    delay(250);

  }
 
}

Uma imagem do projecto pode ser vista aqui:
http://flickr.com/photos/luxifer/3103748664/

Referências:
http://en.wikipedia.org/wiki/Seven-segment_display
http://en.wikipedia.org/wiki/Seven-segment_display_character_representations
http://www.dnatechindia.com/index.php/Tutorials/8051-Tutorial/7-Seg-Interfacing.html

Dúvidas e sugestões são sempre bem vindas. :)
João Amaral
Título: Re: [Arduino] Display 7 Segmentos - Básico
Enviado por: TigPT em 13 de Dezembro de 2008, 00:23
Sim senhor, muito bom, realojei a imagem que não estava a dar, e vou meter no index do arduino.

Obrigado por partilhares, bom projecto.
Título: Re:[Arduino] Display 7 Segmentos - Básico
Enviado por: PDI em 30 de Junho de 2009, 20:43
Eu tentei por esse código mas da-me erro, foi mesmo esse que usas-te, não terás deixado nenhum erro ao passa-lo para aqui.
Título: Re: [Arduino] Display 7 Segmentos - Básico
Enviado por: C. Ramos em 13 de Novembro de 2009, 06:45
O código tem um erro na linha 22 e 30.

Onde está:

for(int i = 0; i <8 7; i++) {

deve estar:

for(int i = 0; i < 7; i++) {



Título: Re: [Arduino] Display 7 Segmentos - Básico
Enviado por: Tyran em 13 de Novembro de 2009, 08:36
Deve ter sido uma tentativa falhada de um par de <3 ... lolol

Agora a sério, se olharmos à lógica do programa é mesmo isso, descarta-se o 7 e fica o 8, porque <8 => 0-7 pinos que dá 8 pinos (7 segmentos + DP).
Mas o autor que foi ele que fez  ;D

cumpzz
Título: Re: [Arduino] Display 7 Segmentos - Básico
Enviado por: leandrosilva em 08 de Setembro de 2010, 17:29
Olá,

Uma das coisas mais simples e divertidas que podem fazer após terem aprendido a "brincar" com leds e a arduino é controlar um display de 7 segmentos.

Um display de 7 segmentos é basicamente 7 leds em forma de 8.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg208.imageshack.us%2Fimg208%2F9776%2F150px7segmentdisplaylabjw2.png&hash=59a7472b59928ee626822c7b8c06dfa5f3aa6c49)

Existem 2 tipos os que têm o Anodo comum a todos os leds e os que têm o Catodo comum a todos os leds.
Eu utilizei um com o cátodo comum, comprado na Dimofel por 1,29€.

Código:
Código: [Seleccione]
/*
   Teste de um único Display de 7 Segmentos com um ponto decimal ligado à arduino
   desde o pin 5 ao 12. Nesta animação é ligado cada um deles até estarem todos ligados
   e após 1 segundo desligam-se todos 1 de cada vez.
   
*/

int b=5, a=6, f=7, g=8, dp=9, c=10, d=11, e=12;
int pins[8] = {b, a, f, g, dp, c, d, e};


void setup() {
  Serial.begin(9600);
  for (int i = 0; i == 7; i++) {
    pinMode(pins[i], OUTPUT);
  }
 
}

void loop() {
 
  for(int i = 0; i <8 7; i++) {
    digitalWrite(pins[i], HIGH);
    delay(250);

  }
 
  delay(1000);
 
  for(int i = 0; i <8 7; i++) {
    digitalWrite(pins[i], LOW);
    delay(250);

  }
 
}

Uma imagem do projecto pode ser vista aqui:
http://flickr.com/photos/luxifer/3103748664/ (http://flickr.com/photos/luxifer/3103748664/)

Referências:
http://en.wikipedia.org/wiki/Seven-segment_display (http://en.wikipedia.org/wiki/Seven-segment_display)
http://en.wikipedia.org/wiki/Seven-segment_display_character_representations (http://en.wikipedia.org/wiki/Seven-segment_display_character_representations)
http://www.dnatechindia.com/index.php/Tutorials/8051-Tutorial/7-Seg-Interfacing.html (http://www.dnatechindia.com/index.php/Tutorials/8051-Tutorial/7-Seg-Interfacing.html)

Dúvidas e sugestões são sempre bem vindas. <img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":)" title="Smile" />
João Amaral

Boas, realmente o codigo aparenta um pequeno erro no ciclo for,
for (int i = 0; i == 7; i++)
deveria estar
for (int i = 0; i <=7; i++)
xD
Título: Re: [Arduino] Display 7 Segmentos - Básico
Enviado por: DFC17 em 13 de Setembro de 2010, 20:46
bem pensei que o codigo seria o mesmo para o que queria mas parece que ja e diferente, a explicaçao que dei nao foi a mais correcta, eu queria um codigo que entrasse um impulso da corrente no 2 do arduino e ligasse o 13, depois com outro impulso entrasse na mesma no 2 e desligasse o 13 e ligava o 12, depois com o terceiro impulso desligasse o 12 e ligasse o 11. obrigado
Título: Re: [Arduino] Display 7 Segmentos - Básico
Enviado por: andre_f_carvalho em 13 de Setembro de 2010, 20:57
bem pensei que o codigo seria o mesmo para o que queria mas parece que ja e diferente, a explicaçao que dei nao foi a mais correcta, eu queria um codigo que entrasse um impulso da corrente no 2 do arduino e ligasse o 13, depois com outro impulso entrasse na mesma no 2 e desligasse o 13 e ligava o 12, depois com o terceiro impulso desligasse o 12 e ligasse o 11. obrigado

no arduino n sei mas no picaxe poderias contornar isso com memorias, em que se ela estivesse num determinado valor iria ligar a saída pretendida
Título: Re: [Arduino] Display 7 Segmentos - Básico
Enviado por: senso em 13 de Setembro de 2010, 21:50
Isso é basicamente um semáforo mas controlado por um botão em vez de por tempo.