130 lines
3.1 KiB
Arduino
130 lines
3.1 KiB
Arduino
|
// ---------- Conexión a módulo Bluetooth ---------
|
||
|
// HC - 06 ARDUINO
|
||
|
// VCC - 5V
|
||
|
// GND - GND
|
||
|
// TXD - 10
|
||
|
// RXD - 11
|
||
|
// --------------------------------------------------
|
||
|
// #include <SoftwareSerial.h> // SoftwareSerial miBT(10,11); // miBT.begin(9600);
|
||
|
// Pines del chip I2C al LCD:
|
||
|
// (addr,en,rw,rs,d4,d5,d6,d7,BackLight, BLstatus)
|
||
|
#include <DHT.h>
|
||
|
#include <Wire.h>
|
||
|
#include <RTClib.h>
|
||
|
#include <LiquidCrystal_I2C.h>
|
||
|
#define DHTPIN 10
|
||
|
#define DHTTYPE DHT11
|
||
|
#define relLuz 13
|
||
|
#define relVent 12
|
||
|
#define relBomb 11
|
||
|
#define sHum1 A0
|
||
|
#define sHum2 A1
|
||
|
#define sHum3 A2
|
||
|
#define sHum4 A3
|
||
|
#define dist A6
|
||
|
DHT dht(DHTPIN, DHTTYPE);
|
||
|
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address [0x27 o 0x3F]
|
||
|
DateTime fecha;
|
||
|
RTC_DS3231 reloj;
|
||
|
bool alarma = true;
|
||
|
byte hum1, hum2, hum3, hum4;
|
||
|
|
||
|
|
||
|
void setup() {
|
||
|
Serial.begin(9600);
|
||
|
lcd.begin(20,4);
|
||
|
dht.begin();
|
||
|
if(!reloj.begin()) {
|
||
|
Serial.println("Modulo RTC no encontrado!!");
|
||
|
while(1); // 1 = true - blucle infito si no hay modulo
|
||
|
}
|
||
|
//reloj.adjust(DateTime(__DATE__, __TIME__)); // Descomentar para ajustar fecha y hora
|
||
|
}
|
||
|
|
||
|
void loop() {
|
||
|
lcd.clear();
|
||
|
lcd.home();
|
||
|
fecha = reloj.now();
|
||
|
mostrarFechaSerie();
|
||
|
horaLCD();
|
||
|
imprDist();
|
||
|
delay(1000);
|
||
|
}
|
||
|
|
||
|
void imprDist() {
|
||
|
lcd.setCursor(0, 2);
|
||
|
lcd.print(pow(3027.4 / analogRead(dist), 1.2134));
|
||
|
lcd.print(" cm.");
|
||
|
}
|
||
|
/*
|
||
|
if(fecha.hour() == 13 && fecha.minute() == 00) {
|
||
|
if(alarma == true) {
|
||
|
Serial.println("Alarma 1 PM");
|
||
|
alarma = false;
|
||
|
}
|
||
|
}
|
||
|
getFecha();
|
||
|
delay(1000);
|
||
|
if(fecha.hour() == 12 && fecha.minute() ==30) {
|
||
|
alarma = true;
|
||
|
}
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
//En caso de ser necesario mostrar hora, este codigo añade un 0 a los valores menores a 10
|
||
|
String getHora(char var) {
|
||
|
switch (var) {
|
||
|
case 'h':
|
||
|
if(fecha.hour() < 10) {
|
||
|
return ('0'+(String)fecha.hour()); break;
|
||
|
} else {
|
||
|
return (String)fecha.hour();break;
|
||
|
}
|
||
|
case 'm':
|
||
|
if(fecha.minute() <10) {
|
||
|
return ('0'+(String)fecha.minute()); break;
|
||
|
} else {
|
||
|
return (String)fecha.minute();break;
|
||
|
}
|
||
|
case 's':
|
||
|
if(fecha.second() <10) {
|
||
|
return ('0'+(String)fecha.second()); break;
|
||
|
} else {
|
||
|
return (String)fecha.second();break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//Hora en LCD
|
||
|
void horaLCD() {
|
||
|
lcd.print("La hora es: ");
|
||
|
lcd.print(getHora('h'));
|
||
|
lcd.print(":");
|
||
|
lcd.print(getHora('m'));
|
||
|
lcd.print(":");
|
||
|
lcd.print(getHora('s'));
|
||
|
}
|
||
|
|
||
|
// Enviar hora y fecha por puerto serie
|
||
|
void mostrarFechaSerie() {
|
||
|
Serial.print(fecha.day());
|
||
|
Serial.print("/");
|
||
|
Serial.print(fecha.month());
|
||
|
Serial.print("/");
|
||
|
Serial.print(fecha.year());
|
||
|
Serial.print(" ");
|
||
|
Serial.print(getHora('h'));
|
||
|
Serial.print(":");
|
||
|
Serial.print(getHora('m'));
|
||
|
Serial.print(":");
|
||
|
Serial.println(getHora('s'));
|
||
|
}
|
||
|
|
||
|
void sensarHumedad() {
|
||
|
hum1 = map(analogRead(sHum1), 0, 1023, 0, 100);
|
||
|
hum2 = map(analogRead(sHum2), 0, 1023, 0, 100);
|
||
|
hum3 = map(analogRead(sHum3), 0, 1023, 0, 100);
|
||
|
hum4 = map(analogRead(sHum4), 0, 1023, 0, 100);
|
||
|
}
|
||
|
|