Você está na página 1de 7

Arduino e display de 7

segmentos com 4 digitos


Ol galera. A dica de hoje como utilizar um display de 7 segmentos com 4 dgitos, com esse display
possvel fazer vrios projetos como relgios, visualizao de dados de sensores de temperatura, distancia,
possvel ainda criar cronmetros entre outros.
Esse display foi um presente que ganhei de um amigo certa vez Como ele iria joga-lo fora e eu
pensei que algum dia poderia ser til ter um desses, pedi a ele que me presenteasse (risos)
Enfim, acabei guardando to bem o presente que demorei a encontra-lo, mas como naquele ditado em que
diz: Quem procura acha! Acabei encontrando-o e resolvi criar esse tutorial.
Primeiramente devemos recorrer ao seu datasheet que pode ser encontrado AQUI, ou ainda ver a figura
abaixo:

Como voces podem ver os anodos so os pinos 12, 9, 8 e 6. Os demais pinos so para os segmentos: A
pino 11, B pino 7, C pino 4, D pino 2, E pino 1, F pino 10, G pino 5 e DP (pontos) pino 3.
Sabendo disso, segue um cdigo simples de como mostrar os nmeros:
001 /*
002 # Autor: Fernando Krein Pinheiro
003 # Data: 10/07/2012
004 # Linguagem: C/C++
005
006 # ========= IMPORTANTE ===========
007 # O codigo esta livre para usar,
008 # citar e compartilhar desde que
009 # mantida sua fonte e seu autor.

010 # Obrigado.
011
012 =================================*/
013
014 #define DIGITO_1 9 //Anodo 12
015 #define DIGITO_2 10 //Anodo 9
016 #define DIGITO_3 11 // Anodo 8
017 #define DIGITO_4 12 //Anodo 6
018
019 #define SEGMENTO_A 2 // display 11
020 #define SEGMENTO_B 3 // dysplay 7
021 #define SEGMENTO_C 4 // display 4
022 #define SEGMENTO_D 5 // display 2
023 #define SEGMENTO_E 6 // display 1
024 #define SEGMENTO_F 7 // display 10
025 #define SEGMENTO_G 8 // display 5
026 #define PONTO 13 // display 3
027
028 #define ON

HIGH

029 #define OFF LOW


030
031 void setup()
032 {
033
034

pinMode(DIGITO_1, OUTPUT);

035
036

pinMode(DIGITO_2, OUTPUT);
pinMode(DIGITO_3, OUTPUT);

037
038

pinMode(DIGITO_4, OUTPUT);
pinMode(PONTO, OUTPUT);

039
040

pinMode(SEGMENTO_A, OUTPUT);

041
042

pinMode(SEGMENTO_B, OUTPUT);
pinMode(SEGMENTO_C, OUTPUT);

043
044

pinMode(SEGMENTO_D, OUTPUT);
pinMode(SEGMENTO_E, OUTPUT);

045
046

pinMode(SEGMENTO_F, OUTPUT);
pinMode(SEGMENTO_G, OUTPUT);

047
048 }
049
050 void loop()
051 {
052

digitalWrite(DIGITO_1, HIGH);

053

digitalWrite(DIGITO_2, HIGH);

054

digitalWrite(DIGITO_3, HIGH);

055
056

digitalWrite(DIGITO_4, HIGH);
digitalWrite(PONTO, HIGH);

057
058

ZERO();

059
060

delay(1000);
UM();

061
062

delay(1000);
DOIS();

063
064

delay(1000);
TRES();

065
066

delay(1000);
QUATRO();

067
068

delay(1000);
CINCO();

069
070

delay(1000);
SEIS();

071
072

delay(1000);
SETE();

073
074

delay(1000);
OITO();

075
076

delay(1000);
NOVE();

077

delay(1000);

078
079 }
080 void ZERO()
081 {
082

digitalWrite(SEGMENTO_A, LOW);

083
084

digitalWrite(SEGMENTO_B, LOW);
digitalWrite(SEGMENTO_C, LOW);

085
086

digitalWrite(SEGMENTO_D, LOW);
digitalWrite(SEGMENTO_E, LOW);

087
088

digitalWrite(SEGMENTO_F, LOW);
digitalWrite(SEGMENTO_G, HIGH);

089 }
090 void UM()
091 {
092

digitalWrite(SEGMENTO_A, HIGH);

093
094

digitalWrite(SEGMENTO_B, LOW);
digitalWrite(SEGMENTO_C, LOW);

095
096

digitalWrite(SEGMENTO_D, HIGH);
digitalWrite(SEGMENTO_E, HIGH);

097
098

digitalWrite(SEGMENTO_F, HIGH);
digitalWrite(SEGMENTO_G, HIGH);

099 }
100 void DOIS()
101 {
102

digitalWrite(SEGMENTO_A, LOW);

103
104

digitalWrite(SEGMENTO_B, LOW);
digitalWrite(SEGMENTO_C, HIGH);

105
106

digitalWrite(SEGMENTO_D, LOW);
digitalWrite(SEGMENTO_E, LOW);

107
108

digitalWrite(SEGMENTO_F, HIGH);
digitalWrite(SEGMENTO_G, LOW);

109
110 }
111 void TRES()
112 {
113
114

digitalWrite(SEGMENTO_A, LOW);
digitalWrite(SEGMENTO_B, LOW);

115
116

digitalWrite(SEGMENTO_C, LOW);
digitalWrite(SEGMENTO_D, LOW);

117
118

digitalWrite(SEGMENTO_E, HIGH);
digitalWrite(SEGMENTO_F, HIGH);

119
120 }

digitalWrite(SEGMENTO_G, LOW);

121 void QUATRO()


122 {
123
124

digitalWrite(SEGMENTO_A, HIGH);
digitalWrite(SEGMENTO_B, LOW);

125
126

digitalWrite(SEGMENTO_C, LOW);
digitalWrite(SEGMENTO_D, HIGH);

127
128

digitalWrite(SEGMENTO_E, HIGH);
digitalWrite(SEGMENTO_F, LOW);

129

digitalWrite(SEGMENTO_G, LOW);

130
131 }
132 void CINCO()
133 {
134

digitalWrite(SEGMENTO_A, LOW);

135
136

digitalWrite(SEGMENTO_B, HIGH);
digitalWrite(SEGMENTO_C, LOW);

137
138

digitalWrite(SEGMENTO_D, LOW);
digitalWrite(SEGMENTO_E, HIGH);

139
140

digitalWrite(SEGMENTO_F, LOW);
digitalWrite(SEGMENTO_G, LOW);

141 }
142 void SEIS()
143 {

144

digitalWrite(SEGMENTO_A, LOW);

145
146

digitalWrite(SEGMENTO_B, HIGH);
digitalWrite(SEGMENTO_C, LOW);

147
148

digitalWrite(SEGMENTO_D, LOW);
digitalWrite(SEGMENTO_E, LOW);

149
150

digitalWrite(SEGMENTO_F, LOW);
digitalWrite(SEGMENTO_G, LOW);

151 }
152 void SETE()
153 {
154

digitalWrite(SEGMENTO_A, LOW);
digitalWrite(SEGMENTO_B, LOW);

155
156

digitalWrite(SEGMENTO_C, LOW);
digitalWrite(SEGMENTO_D, HIGH);

157
158

digitalWrite(SEGMENTO_E, HIGH);
digitalWrite(SEGMENTO_F, HIGH);

159

digitalWrite(SEGMENTO_G, HIGH);

160
161 }
162 void OITO()
163 {
164

digitalWrite(SEGMENTO_A, LOW);

165
166

digitalWrite(SEGMENTO_B, LOW);
digitalWrite(SEGMENTO_C, LOW);

167
168

digitalWrite(SEGMENTO_D, LOW);
digitalWrite(SEGMENTO_E, LOW);

169
170

digitalWrite(SEGMENTO_F, LOW);
digitalWrite(SEGMENTO_G, LOW);

171
172 }
173 void NOVE()
174 {
digitalWrite(SEGMENTO_A, LOW);
175
176

digitalWrite(SEGMENTO_B, LOW);
digitalWrite(SEGMENTO_C, LOW);

177
178

digitalWrite(SEGMENTO_D, HIGH);
digitalWrite(SEGMENTO_E, HIGH);

179
180

digitalWrite(SEGMENTO_F, LOW);
digitalWrite(SEGMENTO_G, LOW);

181
182 }
E para minha tristeza e insatisfao, um dos segmentos do primeiro digito est queimado portanto no
liga
e
no
forma
o
numero
corretamente.
Mas nesse casso ele pode ser isolado via cdigo e ainda assim tenho 3 dgitos!
Veja o vdeo: