collapse

* Posts Recentes

Dúvida com fonte de alimentação comutada por filjoa
[28 de Outubro de 2024, 21:57]


Motoserra Stihl 120C por dropes
[26 de Outubro de 2024, 19:01]


Shelly em jeito de watchdog por SerraCabo
[24 de Outubro de 2024, 19:24]


Meu novo robô por josecarlos
[06 de Outubro de 2024, 13:33]


Sirene NOVA maluca por dropes
[01 de Outubro de 2024, 18:26]


Transmissão de energia sem fios por dropes
[21 de Setembro de 2024, 16:50]


Spot Welder - O que acham? por jm_araujo
[20 de Setembro de 2024, 09:34]


Fita Isoladora - Tipos ou Qualidades diferentes? por dropes
[21 de Agosto de 2024, 15:53]


Cabo/Tubo? para passar ligação sensores - horta por SerraCabo
[21 de Agosto de 2024, 12:14]


Impressora - Valerá a pena? por dropes
[16 de Agosto de 2024, 17:09]

Autor Tópico: [Arduino] Display 7 Segmentos - Básico  (Lida 29926 vezes)

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

Offline joaoamaral

  • Mini Robot
  • *
  • Mensagens: 218
[Arduino] Display 7 Segmentos - Básico
« 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.



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
« Última modificação: 13 de Dezembro de 2008, 09:11 por joaoamaral »
Twitter: @joaoamaral | Skype: joaoamaral

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.378
    • Tiago Rodrigues
Re: [Arduino] Display 7 Segmentos - Básico
« Responder #1 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.

Offline PDI

  • Mini Robot
  • *
  • Mensagens: 677
Re:[Arduino] Display 7 Segmentos - Básico
« Responder #2 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.
Alfredo Garcia

Offline C. Ramos

  • Mini Robot
  • *
  • Mensagens: 21
Re: [Arduino] Display 7 Segmentos - Básico
« Responder #3 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++) {




Offline Tyran

  • Mini Robot
  • *
  • Mensagens: 293
Re: [Arduino] Display 7 Segmentos - Básico
« Responder #4 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

Offline leandrosilva

  • Mini Robot
  • *
  • Mensagens: 45
Re: [Arduino] Display 7 Segmentos - Básico
« Responder #5 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.



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. <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

Offline DFC17

  • Mini Robot
  • *
  • Mensagens: 43
Re: [Arduino] Display 7 Segmentos - Básico
« Responder #6 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

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: [Arduino] Display 7 Segmentos - Básico
« Responder #7 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

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: [Arduino] Display 7 Segmentos - Básico
« Responder #8 em: 13 de Setembro de 2010, 21:50 »
Isso é basicamente um semáforo mas controlado por um botão em vez de por tempo.
Avr fanboy