// CASO 4
// DISPLAY ANODO COMUM
// USANDO VETOR e A FUNÇÃO ESCREVE DISPLAY
#define a 2 // conexão do pino 2 com o segmento a
#define b 3 // conexão do pino 3 com o segmento b
#define c 4 // conexão do pino 4 com o segmento c
#define d 5 // conexão do pino 5 com o segmento d
#define e 6 // conexão do pino 6 com o segmento e
#define f 7 // conexão do pino 7 com o segmento f
#define g 8 // conexão do pino 8 com o segmento g
#define dp 9 // conexão do pino 9 com o segmento dp
int tempo = 20; // variável tempo para o delay.
// o valor 20 foi escolhido para
// que o display pareça aceso.
// declaração do vetor para controlar o estado dos pinos
const byte Pinos[8] = { 2, 3, 4, 5, 6, 7, 8, 9 };
// declaração do vetor que corresponde aos segmentos
// que devem ser acesos, os segmentos a, b , c
// o valor foi obtido considerenado o uso da função
// bitRead
// os valores estão em binário, hexadecimal e decimal
// apenas para exemplificar
const byte abc[3]=
{
0b11111000, // segmentos abc acesos - valor binário.
0xF8, // segmentos abc acesos - valor hexadecimal.
248, // segmentos abc acesos - valor decimal
};
void setup()
{
// contador crescente até 7 para configurar pinos como saida
for(int i = 0; i < 8; i++)
{
pinMode(Pinos[i], OUTPUT);
}
delay(10); //pequeno atraso
// o trecho abaixo garante que o display iniciará
// totalmente apagado
for(int i = 0; i < 8; i++)
{
digitalWrite(Pinos[i], 1);
}
}
// criação da função para escrever no display
void escreveDisplay(int num)
{
byte numBit = abc[num];
for (int i = 0; i < 8; i++)
{
int bit = bitRead(numBit, i);
digitalWrite(Pinos[i], bit);
}
}
void loop()
{
// o conteudo da posição 0 do vetor abc
// que é o valor em binário para que os segmentos
// abc sejam acesos
// será lido e escrito nas respectivas posições
escreveDisplay(0);
delay(tempo); // pequeno atraso
// garante que o display esteja apagado
for(int i = 0; i < 8; i++)
{
digitalWrite(Pinos[i], 1);
}
delay(300); // atraso
// o conteudo da posição 1 do vetor abc
// que é o valor em hexadecimal para que os segmentos
// abc sejam acesos
// será lido e escrito nas respectivas posições
escreveDisplay(1);
delay(tempo);
// garante que o display esteja apagado
for(int i = 0; i < 8; i++)
{
digitalWrite(Pinos[i], 1);
}
delay(300);
// o conteudo da posição 2 do vetor abc
// que é o valor em decimal para que os segmentos
// abc sejam acesos
// será lido e escrito nas respectivas posições
escreveDisplay(2);
delay(tempo);
// garante que o display esteja apagado
for(int i = 0; i < 8; i++)
{
digitalWrite(Pinos[i], 1);
}
delay(300);
}