Voltímetro integrando Serial Monitor,
Bargraph e Display de 7 segmentos.

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:

Arduino Uno

Cabo USB A para B

Protoboard 830

Resistor 330Ω

Potenciômetro 10KΩ

Display de 7 segmentos

LED Vermelho

LED Amarelo

LED Verde

Alguns Jumpers

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)

}