Neste post será mostrado como programar um Display de 7 segmentos no Arduino.
O display de 7 segmentos consiste basicamente de um componente com 8 LEDs, e que estão dispostos de tal forma que permite exibir valores de 0 a 9, e também incluem o ponto decimal.
Os display de 7 segmentos podem ser encontrados com duas formas de ligação interna, catodo comum ou anodo comum, na figura abaixo é mostrado o circuito do display com catado comum:
E na figura abaixo é mostrado o circuito para o display com anodo comum:
É preciso se atentar ao tipo de ligação interna do display, pois o circuito pode não funcionar caso seja utilizado um display de modelo diferente.
Diagrama esquemático do circuito
Antes de programar o display de 7 segmentos no Arduino, devemos nos atentar ao fato que estamos ligando LEDs novamente, então precisamos adicionar um resistor para cada segmento do circuito. Abaixo é possível verificar o diagrama esquemático do circuito.
Código para ser gravado no Arduino
Abaixo é mostrado o código para ser gravado no Arduino.
/**************************************************************
counter 0 to 9 with the 7 display
www.wantronics.com.br
**************************************************************/
#define segmentA 9
#define segmentB 10
#define segmentC 13
#define segmentD 12
#define segmentE 11
#define segmentF 8
#define segmentG 7
int i;
int j;
// Mapping the Arduino pins connected to the display
int segment[] ={segmentA, segmentB, segmentC, segmentD,
segmentE, segmentF, segmentG};
// Displays numbers
int digit[10][8] { // A B C D E F G
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 0, 0, 1, 1}, // 9
};
void setup()
{
pinMode (segmentA, OUTPUT);
pinMode (segmentB, OUTPUT);
pinMode (segmentC, OUTPUT);
pinMode (segmentD, OUTPUT);
pinMode (segmentE, OUTPUT);
pinMode (segmentF, OUTPUT);
pinMode (segmentG, OUTPUT);
}
void loop()
{
for (j = 0; j < 10; j++) {
for (i = 0; i < 7; i++) {
digitalWrite (segment[i], digit[j][i]);
}
delay (1000);
}
}
O código percorre um vetor e uma matriz, o vetor é responsável por mapear os pinos do Arduino que estão conectados ao display de 7 segmentos, e a matriz é responsável por definir qual LED do display será acionado ou não, de acordo com o número que se quer exibir no display.
Simulação no Tinkercad
Abaixo é possível verificar o funcionamento do display de 7 segmentos conectado ao Arduino no Tinkercad.