LusoRobótica - Robótica em Português
Robótica => Tutoriais => Tópico iniciado 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:
/*
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
-
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.
-
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.
-
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++) {
-
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
-
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:
/*
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
-
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
-
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
-
Isso é basicamente um semáforo mas controlado por um botão em vez de por tempo.