/*BARREIRA_AVALIACAO_PRATICA_COMPLETO_SET_2024
********************************************************************************************
********************************************************************************************
*
ETECAF SISTEMAS EMBARCADOS 2
SEM2 - 3 BIMESTRE - 2024
Avaliação prática
**************************ESCREVA SEU NOME COMPLETO ABAIXO**********************************
*
===> ESCREVA AQUI O SEU NOME COMPLETO <===
>>>>>>>CORRETO<<<<<<<<<
*******************************************************************************************
*******************************************************************************************
*/
//+++++++++++++++++++++++++++ INICIO DAS CONFIGURAÇÕES GERAIS +++++++++++++++++++++++++++++
//Ligações dos componentes aos pinos do microcontrolador.
#define potenciometro A2 //........................cursor do potenciômetro no pino A2
#define dataPin 2 //...............................data pin do DHT no pino 2
#define RGBvm 7 //.................................pino LED vermelho do RGB no pino 7
#define RGBvd 8 //.................................pino LED verde do RGB no pino 8
#define RGBaz 9 //.................................pino LED azul do RGB no pino 9
#define LedTemp 5 //...............................LED indicador de temperatura no pino 5
#define LedUmid 6 //...............................LED indicador de umidade no pino 6
//Inclusão das bibliotecas
#include <Wire.h> //...............................biblioteca da comunicação I2C
#include <LiquidCrystal_I2C.h> //..................biblioteca LCD com I2C
#include <dht.h> //................................biblioteca DHT
//Endereço do I2C
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++ PROCEDIMENTO +++++++++++++++
// modifique o enderço do I2C
LiquidCrystal_I2C lcd(0x27,16,2); //...............endereco do I2C 0x27 e tamanho do LCD
//Criação o objeto DHT
dht DHT; //........................................objeto DHT
// VARIÁVEIS GLOBAIS:
//Variáveis de temperatura, umidade e do potênciometro:
float temp, umid, tempSoma, umidSoma, tempMedia, umidMedia = 0;
long potem, potSoma, potMedia = 0;
int potMap, LedT, LedU = 0;
//Inicializa Variáveis de Tempo:
int tempo = 2000;
//++++++++++++++++++++++++ FIM DAS CONFIGURAÇÕES GERAIS ++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++ INICIO DO SETUP ++++++++++++++++++++++++++++++++++++++
void setup()
{
//inicialização do LCD
lcd.init();
//definição dos pinos dos LEDs como saída
pinMode(LedTemp ,OUTPUT);//.............................A cor do LED deve ser vermelha
pinMode(LedUmid ,OUTPUT);//.............................A cor do LED deve ser verde
pinMode(RGBvm ,OUTPUT);
pinMode(RGBvd ,OUTPUT);
pinMode(RGBaz ,OUTPUT);
}
//+++++++++++++++++++++++++++++++++++++ FIM DO SETUP +++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++ INICIO DO LOOP ++++++++++++++++++++++++++++++++++++
void loop()
{
// LIGA O BACKLIGHT
lcd.setBacklight(HIGH);
// Leitura dos dados da saída do DHT22
int readData = DHT.read22(dataPin);
// CONTADOR PARA OBTENÇÃO DA MÉDIA DAS LEITURAS DE TEMPERATURA
// UMIDADE E DO POTENCIÔMETRO
for(int i=1; i<=101; i++)//.................contador crescente até 100
{
temp = DHT.temperature; //.................lendo o valor da temperatura
tempSoma = temp + tempSoma; //.............somar o resultando com o valor da leitura
tempMedia = tempSoma/100;//................obtenção da média
umid = DHT.humidity; //....................lendo o valor da temperatura
umidSoma = umid + umidSoma;//..............somar o resultando com o valor da leitura
umidMedia = umidSoma/100;//................obtenção da média
potem = analogRead(A2);//..................leitura do valor do potenciômetro
potSoma = potem + potSoma;//...............somar o resultado com o valor da leitura
potMedia = potSoma/100;//..................obtenção da média
}
// condições de comando para o LED indicador da temperatura
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++ PROCEDIMENTO +++++++++++++++
// modifique o valor da temperatura em função da temperatura indicada no LCD.
// subtraia 1 do valor medido e anote na condição do if abaixo.
if (tempMedia > 21)//......................comparando o valor do acionamento do LED
{
digitalWrite(LedTemp, 1);//..............seta o LED da Temperatura
LedT = 1; //......................iguala a 1 a variável LedT
}
else
{
digitalWrite(LedTemp,0);//.............reseta o LED Temperatura
LedT = 0; //......................iguala a 0 a variável LedT
}
// condições de comando para o LED indicador da umidade
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++ PROCEDIMENTO +++++++++++++++
// modifique o valor da umidade em função do valor da umidade indicada no LCD.
// subtraia 1 do valor medido e anote na condição do if abaixo.
if (umidMedia < 50)//......................compara o valor do acionamento do LED
{
digitalWrite(LedUmid, 1);//..............seta o LED da Umidade
LedU=1;
}
else
{
digitalWrite(LedUmid,0);//.............reseta o LED Temperatura
LedU=0;
}
// mapeamento do potenciômetro
potMap= map(potMedia, 0, 1023 , 0, 270);//..relaciona 0 a 1023 com 0 a 270 - giro do potenciômetro
// condições de comando para o LED RGB
if (potMap < 90)//..........................cursor entre 0 e 89
{
digitalWrite(RGBvm,1);//..................acende o LED vermelho
}
else
{
digitalWrite(RGBvm,0);//..................apaga o LED vermelho
}
if (potMap >90 && potMap < 180)//...........cursor entre 90 e 179
{
digitalWrite(RGBvd,1);//..................acende o LED verde
}
else
{
digitalWrite(RGBvd,0);//..................apaga o LED verde
}
if (potMap >181)//..........................cursor maior do que 180
{
digitalWrite(RGBaz,1);//..................acende LED azul
}
else
{
digitalWrite(RGBaz,0);//..................apaga LED azul
}
// TELA 1 DO LCD
// MOSTRA NA PRIMEIRA LINHA A IDENTIFICAÇÃO DA ESCOLA E DO COMPONENTE CURRICULAR
// E NA SEGUNDA, O NOME DO ALUNO
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++ PROCEDIMENTO +++++++++++++++
// modifique o texto acrescentando o sua turma (A ou B) após SEM2. DEIXE A LINHA CENTRALIZADA
lcd.setCursor(1,0);
lcd.print("ETECAF SEM2");
// Troque NOME pelas iniciais dos seus nomes. Deixe o texto centralizado.
lcd.setCursor(7,1);
lcd.print("NO");
delay(2000);
lcd.clear();
delay(50);
// Duplique a configuração feita acima apenas para a linha 1.
lcd.setCursor(7,1);
lcd.print("NO");
// comando para rotacionar a linha do nome.
// As iniciais devem ser deslocadas para a esquerda,para a direita e depois para o centro
// sem seir do espaço disponível no display
for(int cont = 0; cont <6; cont ++)//.......contador para que as letras mudem de posição
{
lcd.scrollDisplayLeft();//.............rolar uma posição para a esquerda
delay(50);
}
delay(500);//..............................tempo mostrando o texto na esquerda
for(int cont = 0; cont <12; cont ++)//......contador para que as letras mudem de posição
{
lcd.scrollDisplayRight();//............rolar uma posição para a direita
delay(50);
}
delay(500);//..............................tempo mostrando o texto na direita
for(int cont = 0; cont <6; cont ++)//.......contador para que as letras mudem de posição
{
lcd.scrollDisplayLeft();//.............rolar uma posição para a esquerda
delay(50);
}
delay(500);//..............................tempo mostrando o texto no centro.
lcd.clear();//.............................apaga o LCD
delay(200);//..............................aguarda apagado
// TELA 2 DO LCD
// mostra valor medido da temperatura e da umidade
lcd.setCursor(1,0);
lcd.print("Temp = ");
lcd.print(tempMedia);
lcd.print("C");
lcd.setCursor(1,1);
lcd.print("Umid = ");
lcd.print(umidMedia);
lcd.print("%");
delay(tempo);
lcd.clear();
delay(200);
// TELA 3 DO LCD
// mostra valor do potenciômetro
// mostra os estados dos LEDs da temperatura e da umidade
lcd.setCursor(1,0);
lcd.print("Pot Map = ");
lcd.print(potMap);
lcd.setCursor(1,1);
lcd.print("LedT=");
lcd.print(LedT);
lcd.setCursor(8,1);
lcd.print("LedU=");
lcd.print(LedU);
delay(tempo);
lcd.clear();
delay(200);
// zerar variaveis
tempSoma=0;
tempMedia=0;
umidSoma=0;
umidMedia=0;
potSoma=0;
potMedia=0;
//++++++++++++++++++++++++++++++++++++ FIM DO LOOP +++++++++++++++++++++++++++++++++++++++++++
}