#include <DHT.h>
#include <elapsedMillis.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h> //Software Serial Port
LiquidCrystal_I2C lcd(0x3F, 20, 4); //LCD, ull amb l'adreça I2C 0X3F
#define RXPIN 10
#define TXPIN 11
SoftwareSerial BT1(RXPIN, TXPIN); // RX | TX, BlueTooh
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE); //Sensor de temperatura i humitat
int maxTmp = 0; //Màxims i Mínims
int minTmp = 999;
int maxHum = 0;
int minHum = 999;
bool bAuto = true;
#define RELEPIN 3 //On hi ha el relé connectat
elapsedMillis tReadTmp; //Per llegir la temperatura
elapsedMillis tSendDades; //Per enviar dades al mòbil
void setup() {
Serial.begin(9600);
pinMode(RXPIN, INPUT);
pinMode(TXPIN, OUTPUT);
pinMode(RELEPIN, OUTPUT);
digitalWrite(RELEPIN, LOW); //Relé apagat
BT1.begin(9600);
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print("Curs Arduino-2016");
Wire.begin();
dht.begin();
}
void loop() {
String str1;
String str2;
if (tReadTmp > 1000)
{
tReadTmp = 0;
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
int h = dht.readHumidity();
// Read temperature as Celsius
int t = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
maxTmp = max(t, maxTmp);
minTmp = min(t, minTmp);
maxHum = max(h, maxHum);
minHum = min(h, minHum);
str1 = "Te:" + String(t) + " Ma:" + String(maxTmp) + " Mi:" + String(minTmp);
str2 = "Hu:" + String(h) + " Ma:" + String(maxHum) + " Mi:" + String(minHum);
lcd.setCursor(0, 1);
lcd.print(str1);
lcd.setCursor(0, 2);
lcd.print(str2);
if (bAuto == true)
{
lcd.setCursor(10, 3);
lcd.print("AUTOMATIC");
if (t <= 20)
{
lcd.setCursor(0, 3);
lcd.print("Rele: ON ");
digitalWrite(RELEPIN, HIGH);
}
if (t >= 22)
{
lcd.setCursor(0, 3);
lcd.print("Rele: OFF");
digitalWrite(RELEPIN, LOW);
}
}
else
{
lcd.setCursor(0, 3);
lcd.print("Rele: ON ");
lcd.setCursor(10, 3);
lcd.print("MANUAL ");
digitalWrite(RELEPIN, HIGH);
}
}
//------------------------------------------------------------
//Enviem al mòbil
if (tSendDades > 2000)
{
tSendDades = 0;
BT1.println(str1);
BT1.println(str2);
}
//------------------------------------------------------------
//Bluetooh
if (BT1.available())
{
char c = BT1.read();
Serial.println(c);
if (c == 'a')
{
bAuto = true;
}
if (c == 'm')
{
bAuto = false;
}
}
}
|