/*
Aluno: Joao Domingues de Souza; Matricula: ex-182233; Turma: 15; Projeto Prático 02 Estação Coletora de Informações Climáticas
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int temperatura = A0;
const int fotoresistor = A1;
const int trigger_espaco = 2;
const int echo_espaco = 3;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
lcd.init();
lcd.backlight();
pinMode(trigger_espaco, OUTPUT);
pinMode(echo_espaco, INPUT);
}
void loop()
{
displayStaticInfo();
float tempC = readTemperature();
float tempF = tempC * 9.0 / 5.0 + 32;
int luminosity = readLuminosity();
float distanceCm = readDistance();
float distancePol = distanceCm * 0.393701;
displayTemperature(tempC, tempF);
displayLuminosity(luminosity);
displayDistance(distanceCm, distancePol);
}
int readLuminosity()
{
int sensorValue = analogRead(fotoresistor);
return map(sensorValue, 0, 1023, 0, 100);
}
float readTemperature()
{
int sensorValue = analogRead(temperatura);
float voltage = sensorValue * 5.0 / 1023.0;
float temperatureC = (voltage - 0.5) * 100.0;
return temperatureC;
}
float readDistance()
{
digitalWrite(trigger_espaco, LOW);
delayMicroseconds(2);
digitalWrite(trigger_espaco, HIGH);
delayMicroseconds(10);
digitalWrite(trigger_espaco, LOW);
long duration = pulseIn(echo_espaco, HIGH);
float distanceCm = duration * 0.034 / 2;
return distanceCm;
}
void displayTemperature(float tempC, float tempF)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(tempF, 1);
lcd.print(" F");
delay(1000);
}
void displayDistance(float distanceCm, float distancePol)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Dist: ");
lcd.print(distanceCm);
lcd.print(" cm");
lcd.setCursor(0, 1);
lcd.print("Dist: ");
lcd.print(distancePol);
lcd.print(" in");
delay(1000);
}
void displayLuminosity(int luminosity)
{
int rawValue = analogRead(fotoresistor);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LDR: ");
lcd.print(rawValue);
lcd.setCursor(0, 1);
lcd.print("Luminos: ");
lcd.print(luminosity);
lcd.print(" %");
delay(1000);
}
void displayStaticInfo()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Fac. Tecnologia");
lcd.setCursor(0,1);
lcd.print("Unicamp Limeira");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Bancos de Dados ");
lcd.setCursor(0,1);
lcd.print("Aplicados a IoT ");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Projeto 02 ");
lcd.setCursor(0,1);
lcd.print("----------------");
delay(3000);
lcd.setCursor(0,0);
lcd.print("Componentes");
lcd.setCursor(0,1);
lcd.print("Joao Domingues");
delay(3000);
lcd.clear();
}