Usaremos como sensor o LM 45 um sinal de 0 a 1VDC, com uma resolução de 10mV/graus Celcius e o arduino nos fornecerá um sinal digital de 10 bits (0 a 206) que converteremos de 0 a 100 °C para exibirmos no LCD e no serial do PC.
O Set point poderá ser ajustado através do potenciômetro e seu valor exibido no LCD e Serial.
O código...
//-------------------------------------------------------------//
// Projeto Desenvolvedores 4.0 - Desenvolvimento com Arduino
// Programa/hardware: 008 - Enviando dados ao monitor Serial
// Autor:Clodoaldo Silva
// Revisão: 27Abr2020
//---------------------------------------------------------------
//inclui a biblioteca do LCD
#include <LiquidCrystal.h>
//http://www.arduino.cc/en/Tutorial/LiquidCrystalDisplay
//DEFINIÇÕES DO HARDWARE DE DESENVOLVIMENTO
//Entradas digitais
#define S1 A0 //Nomeia o pino A0 (analógico) como (digital)
#define S2 A1 //indem
#define S3 A2 //indem
#define S4 A3 //indem
//Entradas analógicas
#define Sinal_01 A4 //Preparado p/ receber sinais analógico
#define Sinal_02 A5 //indem
//Saídas Digitais
#define LED_vermelho 10 //define do pino 10 como saída
#define LED_amarelo 9 //define do pino 9 como saída
#define LED_verde 8 //define do pino 8 como saída
#define Lampada 7 //define do pino 7 como saída
#define Motor 6 //define do pino 6 como saída
//DEFINIÇÕES E TIPOS DE VARIÁVEIS
float Valor_AD1 = 0; // Valor lido no pino A4
float Set = 0; // variável trabalhada p/ ler tensão
float Valor_AD2 = 0; // Valor lido no pino A5
float Temp = 0; // variável trabalhada p/ ler temperatura
//DEFINE PINOS PARA LCD JÁ NA BIBLIOTECA
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
/*
Respectivamente
LCD RS pin to digital pin 12
LCD Enable pin to digital pin 11
LCD R/W pin to ground
LCD D4 pin to digital pin 5
LCD D5 pin to digital pin 4
LCD D6 pin to digital pin 3
LCD D7 pin to digital pin 3
*/
void setup()
{
// Inicializa o LCD com 20 colunas e 4 linhas
lcd.begin(20, 4);
Serial.begin(9600);
//Configurando os pinos definidos como saídas.
pinMode(LED_vermelho, OUTPUT);
pinMode(LED_amarelo, OUTPUT);
pinMode(LED_verde, OUTPUT);
pinMode(Lampada, OUTPUT);
pinMode(Motor, OUTPUT);
//Configurando os pinos definidos como entradas.
//Sinais discretos - 4 Entradas
pinMode(S1, INPUT);
pinMode(S2, INPUT);
pinMode(S3, INPUT);
pinMode(S4, INPUT);
//Sinais analógicos - 2 Entradas
pinMode(Sinal_01, INPUT);
pinMode(Sinal_02, INPUT);
}
//-------------------------------------------
void loop()
{
//Leitura da variável temperatura
Valor_AD2 = analogRead(Sinal_02); // Lê o pino analógico
//e armazena na variável Valor_AD
Temp = Valor_AD2 * 0.48543689320388349514563106796117; //Multiplica o valor AD
//Dados para o LCD
lcd.setCursor(0, 0); // Posiciona
lcd.print("Arduino: Temperatura"); // Escreve no LCD
lcd.setCursor(0, 1);
lcd.print("Temperatura: " );
lcd.print(Temp); // Imprime a variável Vol no LCD
lcd.print(" C" ); // Escreve a unidade
//Dados para o PC local
Serial.print("Temperatura = "); //imprime os valores de Temperatura na serial
Serial.println(Temp); //imprime os valores de Temperatura na serial
//Leitura da variável Set point
Valor_AD1 = analogRead(Sinal_01);
Set = Valor_AD1 * 0.09765625; //Multiplica o valor AD
//Dados para o LCD
lcd.setCursor(0, 2);
lcd.print("Set Point = " );
lcd.print(Set); // Imprime a variável no LCD
lcd.print(" C" ); // Escreve a unidade
//Dados para o PC local
Serial.print("Set point = ");
Serial.println(Set); //imprime os valores do Set point na serial
//Aciona o motor e apresenta o status Coloca no LCD
if (Temp > Set) // Se a temperatura for maior que o Set point
{
digitalWrite(Motor, HIGH); // Liga motor
lcd.setCursor(0, 3);
lcd.print("Motor = Ligado : " );
Serial.println("Motor Ligado"); //imprime os valores do Set point na serial
}
else
{
digitalWrite(Motor, LOW);
lcd.setCursor(0, 3);
lcd.print("Motor = Desligado : " );
Serial.println("Motor Desligado"); //imprime os valores do Set point na serial
}
}
Até a próxima...
"A persistência é o caminho do êxito."
Charles Chaplin.
www.clubedaeletronica.com.br
Autor: Clodoaldo Silva...