SystemGardenWithoutDelay.ino
#include <SoftwareSerial.h>
SoftwareSerial HC06(0,1);
#include <LiquidCrystal.h>
LiquidCrystal Lcd(7, 6, 5, 4, 3, 2);
double version = 2.3 ;
double seuilhumid = 0.0 ;
double timer = 0.0 ;
double humidite = 0.0 ;
double statelcd = 1 ;
bool etat = false ;
String trame = "";
String bluetoothname = "SystemGarden";
String bluetoothcode = "1234";
unsigned long previousMillis = 0; // Derniere activation
const long interval = 2000; //Intervalle
// make bluetooth character:
byte icon[8] = {
0b00100,
0b00110,
0b10101,
0b01110,
0b01110,
0b10101,
0b00110,
0b00100
};
void DigitalWrite(int pinNumber, boolean status)
{
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, status);
}
void Arrosage();
void Arrosagemanuel();
void setup() {
//SETUP CODE
HC06.begin(9600);
Lcd.begin(16,2);
// create a new character
Lcd.createChar(0, icon);
seuilhumid = 50.0 ;
timer = 10.0 ;
humidite = 49.07 ;
Lcd.setCursor(0, 0);
Lcd.print("SystemGarden" );
Lcd.print(" " );
Lcd.print(version );
Lcd.print(" ");
Lcd.setCursor(0, 1);
Lcd.print("-" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("--" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("---" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("----" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("-----" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("------" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("-------" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("--------" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("---------" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("----------" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("-----------" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("------------" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("-------------" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("--------------" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("---------------" );
Lcd.print(" ");
delay( 100 );
Lcd.setCursor(0, 1);
Lcd.print("----------------" );
Lcd.print(" ");
delay(2000);
Serial.begin(9600) ;
}
void loop() {
Serial.println(etat);
Lcd.setCursor(0, 0);
Lcd.print("Info " );
Lcd.write(byte(0));
Lcd.print(" ");
humidite = (analogRead(0)+analogRead(1)+analogRead(2)) / 3 ;
if (( (humidite) < (seuilhumid) ))
{
Arrosage();
}
HC06.print(timer);
HC06.print("x");
HC06.print(humidite);
HC06.print("x");
HC06.print(seuilhumid);
//réception données blutooth
while (HC06.available()) {
trame = HC06.readStringUntil('x');
timer = trame.toInt();
trame = HC06.readStringUntil('x');
seuilhumid = trame.toInt();
trame = HC06.readStringUntil('f');
etat = trame;
delay(500);
if (etat == true){
Arrosagemanuel();
}
else if (etat == false){
}
if (etat == true){
DigitalWrite(13, HIGH);
DigitalWrite(12, HIGH);
Lcd.setCursor(0, 0);
Lcd.print("Arrosage ");
Lcd.setCursor(0, 1);
Lcd.print("Manuel ");
}else if (etat == false){
DigitalWrite(13, LOW);
DigitalWrite(12, LOW);
Lcd.clear() ;
}
}
/* Vérifie si la différence entre l'heure actuelle
et le dernier clignotement supérieure à
l'intervalle */
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (statelcd == 1) {
Lcd.setCursor(0, 1);
Lcd.print("Humidite:" );
Lcd.print(humidite);
Lcd.print("%");
Lcd.print(" ");
statelcd = 2;
} else if (statelcd == 2) {
Lcd.setCursor(0, 1);
Lcd.print("Bluetooth:" );
Lcd.print(bluetoothname);
Lcd.print(" ");
statelcd = 3;
}else if (statelcd == 3) {
Lcd.setCursor(0, 1);
Lcd.print("Code BT:" );
Lcd.print(bluetoothcode);
Lcd.print(" ");
statelcd = 4;
}else if (statelcd == 4) {
Lcd.setCursor(0, 1);
Lcd.print("Timer:" );
Lcd.print(timer);
Lcd.print("sec");
Lcd.print(" ");
statelcd = 5;
}else if (statelcd == 5) {
Lcd.setCursor(0, 1);
Lcd.print("Seuil:" );
Lcd.print(seuilhumid);
Lcd.print("%");
Lcd.print(" ");
statelcd = 1;
}
}
}
// Void Arrosage et Arrosage manuel
void Arrosagemanuel()
{
if (etat == true){
DigitalWrite(13, HIGH);
Lcd.setCursor(0, 0);
Lcd.print("Arrosage ");
Lcd.setCursor(0, 1);
Lcd.print("Manuel ");
}else if (etat == false){
DigitalWrite(13, LOW);
Lcd.clear() ;
}
}
void Arrosage()
{
DigitalWrite(13, HIGH);
Lcd.setCursor(0, 1);
Lcd.print("Arrosage ");
Lcd.print(timer);
Lcd.print("s");
delay (timer * 1000);
DigitalWrite(13, LOW);
}