/*
Código demonstrativo para a aula de Bancos de Dados aplicados à Internet das Coisas,
Curso de Engenharia e Administração de Sistemas de Banco de Dados,
Faculdade de Tecnologia - UNICAMP.
Adilson Marques Moralles - ex179269
*/
#include <LiquidCrystal.h>
#define PINO_TRIGGER 10
#define PINO_ECHO 9
const float BETA = 3950;
int polegadas = 0;
int centimetros = 0;
int pino_Led = 13;
int porta_LDR = A3;
long readUltrasonicDistance(){
digitalWrite(PINO_TRIGGER, LOW);
delayMicroseconds(2);
digitalWrite(PINO_TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(PINO_TRIGGER, LOW);
return pulseIn(PINO_ECHO, HIGH);
}
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int pino_sensor = A0;
void setup() {
Serial.begin(9600);
pinMode(PINO_TRIGGER, OUTPUT);
pinMode(PINO_ECHO, INPUT);
pinMode(pino_Led, OUTPUT);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Fac. Tecnologia");
lcd.setCursor(0,1);
lcd.print("Unicamp Limeira");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Banco de Dados");
lcd.setCursor(0,1);
lcd.print("Aplicados a IoT");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Projeto 02 ");
lcd.setCursor(0,1);
lcd.print(" ---------- ");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Componente");
lcd.setCursor(0,1);
lcd.print("Adilson M. Moralles");
delay(2000);
lcd.clear();
}
void loop() {
int temp_c = 1 / (log(1 / (1023. / analogRead(pino_sensor) - 1)) / BETA + 1.0 / 298.15) - 273.15;
int temp_f = (temp_c * 9) / 5 + 32;
int valor_LDR = analogRead(porta_LDR);
int luminosidade = map(valor_LDR,8,1015,100,0);
centimetros = 0.01723 * readUltrasonicDistance();
polegadas = (centimetros / 2.54);
lcd.setCursor(0,0);
lcd.print("Recuperar Dados");
lcd.setCursor(0,1);
lcd.print(" dos sensores");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(temp_c,DEC);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Temp: ");
lcd.print(temp_f,DEC);
lcd.print("F");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Dist: ");
lcd.print(centimetros);
lcd.print(" cm");
lcd.setCursor(0,1);
lcd.print("Dist: ");
lcd.print(polegadas);
lcd.print(" pol.");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LDR: ");
lcd.print(valor_LDR);
lcd.setCursor(0,1);
lcd.print("Luminosidade: ");
lcd.print(luminosidade);
lcd.print("%");
if ( luminosidade < 51 ) {
digitalWrite(pino_Led, HIGH);
} else {
digitalWrite(pino_Led, LOW);
}
delay(2000);
lcd.clear();
}