Com este exemplo você fará uma leitura analógica através do pino A0 do Arduino, utilizando um potenciômetro. Ao pegar essa leitura analógica o programa converterá esse valor lido em tensão variando de 0V a 5V, após convertido esse valor de tensão irá ser mostrado no display de 7 segmentos e no bargraph de LEDs.
Dificuldade:
Montagem:
Programação:
Material Utilizado:
Display de 7 segmentos
A Montagem
O Sketch
#define POT A0 //Define POT como A0
#define L_1 A1 //Define L_1 como A1
#define L_2 A2 //Define L_2 como A2
#define L_3 A3 //Define L_3 como A3
#define L_4 A4 //Define L_4 como A4
#define L_5 A5 //Define L_5 como A5
#define A_display 4 //Define A_display como 4
#define B_display 5 //Define B_display como 5
#define C_display 6 //Define C_display como 6
#define D_display 7 //Define D_display como 7
#define E_display 8 //Define E_display como 8
#define F_display 3 //Define F_display como 3
#define G_display 2 //Define G_display como 2
float tensao; //Variável para armazenar o valor da tensão
void setup()
{
Serial.begin(9600); //Inicia a Serial com um baud rate de 9600
pinMode(L_1, OUTPUT); //Configura o pino A1 como saída
pinMode(L_2, OUTPUT); //Configura o pino A2 como saída
pinMode(L_3, OUTPUT); //Configura o pino A3 como saída
pinMode(L_4, OUTPUT); //Configura o pino A4 como saída
pinMode(L_5, OUTPUT); //Configura o pino A5 como saída
pinMode(A_display, OUTPUT); //Configura o pino 4 como saída
pinMode(B_display, OUTPUT); //Configura o pino 5 como saída
pinMode(C_display, OUTPUT); //Configura o pino 6 como saída
pinMode(D_display, OUTPUT); //Configura o pino 7 como saída
pinMode(E_display, OUTPUT); //Configura o pino 8 como saída
pinMode(F_display, OUTPUT); //Configura o pino 3 como saída
pinMode(G_display, OUTPUT); //Configura o pino 2 como saída
apaga_display(); //Executa a função para apagar todos os segmentos do display
}
void loop()
{
tensao = analogRead(POT); //Pega o valor do potenciômetro e armazena na variável tensao
tensao = (tensao / 1023) * 5; //Faz o cálculo de conversão do valor analógico para tensão
Serial.print("Tensao = "); //Imprime "Tensão = " na serial
Serial.print(tensao); //Imprime o valor convertido em tensão na serial
Serial.println("V"); //Imprime símbolo de Vols (V) na serial
delay(10); //Aguarda 10 milissegundos
bargraph(); //Executa a função de acionamento do Bargraph
}
void bargraph()
{
if(tensao < 1) //Se a tensão for menor que 1V
{
zero_display(); //Executa a função para acender o 0 no display
}
if(tensao >= 1 && tensao < 2) //Se a tensão for maior ou igual a 1V e menor que 2V
{
um_display(); //Executa a função para acender o 1 no display
digitalWrite(L_1, HIGH); //Aciona o LED do pino A1
}
else digitalWrite(L_1, LOW); //Senão desliga o LED do pino A1
if(tensao >= 2 && tensao < 3) //Se a tensão for maior ou igual a 2V e menor que 3V
{
dois_display(); //Executa a função para acender o 2 no display
digitalWrite(L_1, HIGH); //Aciona o LED do pino A1
digitalWrite(L_2, HIGH); //Aciona o LED do pino A2
}
else digitalWrite(L_2, LOW); //Senão desliga o LED do pino A2
if(tensao >= 3 && tensao < 4) //Se a tensão for maior ou igual a 3V e menor que 4V
{
tres_display(); //Executa a função para acender o 3 no display
digitalWrite(L_1, HIGH); //Aciona o LED do pino A1
digitalWrite(L_2, HIGH); //Aciona o LED do pino A2
digitalWrite(L_3, HIGH); //Aciona o LED do pino A3
}
else digitalWrite(L_3, LOW); //Senão desliga o LED do pino A3
if(tensao >= 4 && tensao < 5) //Se a tensão for maior ou igual a 4V e menor que 5V
{
quatro_display(); //Executa a função para acender o 4 no display
digitalWrite(L_1, HIGH); //Aciona o LED do pino A1
digitalWrite(L_2, HIGH); //Aciona o LED do pino A2
digitalWrite(L_3, HIGH); //Aciona o LED do pino A3
digitalWrite(L_4, HIGH); //Aciona o LED do pino A4
}
else digitalWrite(L_4, LOW); //Senão desliga o LED do pino A4
if(tensao == 5) //Se a tensão for maior ou igual a 4V e menor que 5V
{
cinco_display(); //Executa a função para acender o 5 no display
digitalWrite(L_1, HIGH); //Aciona o LED do pino A1
digitalWrite(L_2, HIGH); //Aciona o LED do pino A2
digitalWrite(L_3, HIGH); //Aciona o LED do pino A3
digitalWrite(L_4, HIGH); //Aciona o LED do pino A4
digitalWrite(L_5, HIGH); //Aciona o LED do pino A5
}
else digitalWrite(L_5, LOW); //Senão desliga o LED do pino A5
}
void zero_display() //Função para acender o 0 no display
{
apaga_display(); //Executa a função para apagar todos os segmentos do display
digitalWrite(A_display, HIGH); //Acende o segmento A no display (Pino 4)
digitalWrite(B_display, HIGH); //Acende o segmento B no display (Pino 5)
digitalWrite(C_display, HIGH); //Acende o segmento C no display
digitalWrite(D_display, HIGH); //Acende o segmento D no display
digitalWrite(E_display, HIGH); //Acende o segmento E no display
digitalWrite(F_display, HIGH); //Acende o segmento F no display
}
void um_display() //Função para acender o 1 no display
{
apaga_display(); //Executa a função para apagar todos os segmentos do display
digitalWrite(B_display, HIGH); //Acende o segmento B no display (Pino 5)
digitalWrite(C_display, HIGH); //Acende o segmento C no display (Pino 6)
}
void dois_display() //Função para acender o 2 no display
{
apaga_display(); //Executa a função para apagar todos os segmentos do display
digitalWrite(A_display, HIGH); //Acende o segmento A no display (Pino 4)
digitalWrite(B_display, HIGH); //Acende o segmento B no display (Pino 5)
digitalWrite(D_display, HIGH); //Acende o segmento D no display (Pino 7)
digitalWrite(E_display, HIGH); //Acende o segmento E no display (Pino 8)
digitalWrite(G_display, HIGH); //Acende o segmento G no display (Pino 2)
}
void tres_display() //Função para acender o 3 no display
{
apaga_display(); //Executa a função para apagar todos os segmentos do display
digitalWrite(A_display, HIGH); //Acende o segmento A no display (Pino 4)
digitalWrite(B_display, HIGH); //Acende o segmento B no display (Pino 5)
digitalWrite(C_display, HIGH); //Acende o segmento C no display (Pino 6)
digitalWrite(D_display, HIGH); //Acende o segmento D no display (Pino 7)
digitalWrite(G_display, HIGH); //Acende o segmento G no display (Pino 2)
}
void quatro_display() //Função para acender o 4 no display
{
apaga_display(); //Executa a função para apagar todos os segmentos do display
digitalWrite(B_display, HIGH); //Acende o segmento B no display (Pino 5)
digitalWrite(C_display, HIGH); //Acende o segmento C no display (Pino 6)
digitalWrite(F_display, HIGH); //Acende o segmento F no display (Pino 3)
digitalWrite(G_display, HIGH); //Acende o segmento G no display (Pino 2)
}
void cinco_display() //Função para acender o 5 no display
{
apaga_display(); //Executa a função para apagar todos os segmentos do display
digitalWrite(A_display, HIGH); //Acende o segmento A no display (Pino 4)
digitalWrite(C_display, HIGH); //Acende o segmento C no display (Pino 6)
digitalWrite(D_display, HIGH); //Acende o segmento D no display (Pino 7)
digitalWrite(F_display, HIGH); //Acende o segmento F no display (Pino 3)
digitalWrite(G_display, HIGH); //Acende o segmento G no display (Pino 2)
}
void apaga_display()
{
digitalWrite(A_display, LOW); //Apaga o segmento A do display (Pino 4)
digitalWrite(B_display, LOW); //Apaga o segmento B do display (Pino 5)
digitalWrite(C_display, LOW); //Apaga o segmento C do display (Pino 6)
digitalWrite(D_display, LOW); //Apaga o segmento D do display (Pino 7)
digitalWrite(E_display, LOW); //Apaga o segmento E do display (Pino 8)
digitalWrite(F_display, LOW); //Apaga o segmento F do display (Pino 3)
digitalWrite(G_display, LOW); //Apaga o segmento G do display (Pino 2)
}