Bonjour, j'ai comme projet de faire un pot de fleur intelligent qui marchera avec une pompe (dont voici le lien ci-dessous) et une électrovanne.
http://www.selectronic.fr/pompe-miniature-de-bassin.html
Voici mon programme, j'espère que vous pourrez m'aider à la perfectionner pour que ma pompe puisse fonctionner. Merci
#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <Time.h>
const int RelayPin = 10;
const int LumPin = 1;
const int EauPin = 8;
const int BatPin = 0;
const int ledPin = 13;
const int DureeArrosage1 = 20;
const int DureeArrosage2 = 25;
const int DureeArrosage3 = 30;
const long SeuilArrosage1 = 30000;
const long SeuilArrosage2 = 40000;
const int DureeCycle = 10;
const float BatSeuil = 12.2; //
const long LumSeuilEeprom = 5000; //Minimum de luminosité pour enregistrer dans EEprom
const long HeureMinuteSeuil = 2030; //Heuure minute du déclenchement
int LumValue;
int EauValue;
long ArrosageMs;
long CycleMs;
int CptArrosage = 0;
int EepromRang;
long LumTotal = 0;
int boolArrosage = 0;
long HeureMinute;
int DureeArrosage;
int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique
float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique
float tension=0.0; // Variable tension mesurée
float tension_batterie_mV=0.0; // Variable tension batterie calculée
float tension_batterie_V=0.0; // Variable tension batterie calculée
float tension_regulateur=9070.0;
LiquidCrystal lcd(12,11,5,4,3,2);
void ecrireEEPROM(long valeur){
int resteMod;
int varent;
resteMod = valeur%255;
varent = (valeur-resteMod)/255;
EepromRang++;
EEPROM.write(EepromRang,varent);
EepromRang++;
EEPROM.write(EepromRang,resteMod);
//Ecriture pour dire ou on est arrivé
resteMod = EepromRang%255;
varent = (EepromRang-resteMod)/255;
EEPROM.write(0,varent);
EEPROM.write(1,resteMod);
}
int lireEEPROMrang()
{
int i = 0;
int retour;
byte valeur;
valeur = EEPROM.read(0);
i = (int)valeur;
retour = i * 255;
valeur = EEPROM.read(1);
i = (int)valeur;
retour += i;
if (retour==0){retour=1;}
return retour;
}
void setup()
{
lcd.begin(16,2);
pinMode(EauPin, INPUT);
pinMode(RelayPin, OUTPUT);
pinMode(ledPin, OUTPUT);
CycleMs = DureeCycle * 60000;
digitalWrite(RelayPin,HIGH);
EepromRang = lireEEPROMrang();
setTime(19,0,0,9,7,2014);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Programme");
lcd.setCursor(0,1);
lcd.print("arrosage auto");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Bienvenue");
delay(3000);
}
void loop() {
HeureMinute = hour()*100 + minute();
if (boolArrosage==1 && hour()==0){
boolArrosage = 0;
LumTotal = 0;
}
//Recupération du degré de luminosité
LumValue = analogRead(LumPin);
LumTotal += LumValue;
//Recupération Eau
EauValue = digitalRead(EauPin);
if (EauValue == 1){
digitalWrite(ledPin, HIGH);
}else{
digitalWrite(ledPin, LOW);
}
//Recupération tension batterie
mesure_brute=analogRead(BatPin);
mesuref=float(mesure_brute)*5000.0/1024.0;
tension=mesuref/1000.0; // en Volts
tension_batterie_mV=mesuref+tension_regulateur;
tension_batterie_V=tension_batterie_mV/1000.0;
lcd.clear();
lcd.setCursor(0,0);
if (hour()<10){lcd.print("0");}
lcd.print(hour());
lcd.print(":");
if (minute()<10){lcd.print("0");}
lcd.print(minute());
lcd.print(" ");
lcd.print("T(v)=");
lcd.print(tension_batterie_V,2);
lcd.setCursor(0,1);
lcd.print("Lum=");
lcd.print(LumTotal);
lcd.print(" Nb=");
lcd.print(CptArrosage);
if (EauValue == 1 && tension_batterie_V >= BatSeuil && boolArrosage == 0 && HeureMinute >= HeureMinuteSeuil){
boolArrosage = 1;
if (LumTotal < SeuilArrosage1){
DureeArrosage = DureeArrosage1;
}else{
if (LumTotal >= SeuilArrosage1 && LumTotal < SeuilArrosage2){
DureeArrosage = DureeArrosage2;
}else{
DureeArrosage = DureeArrosage3;
}
}
ArrosageMs = DureeArrosage * 60000;
digitalWrite(RelayPin,LOW);
CptArrosage++;
delay(ArrosageMs);
digitalWrite(RelayPin,HIGH);
if (LumTotal > LumSeuilEeprom){ecrireEEPROM(LumTotal);}
delay(2000);
}else{
delay(CycleMs);
}
}
Moderator edit:
</mark> <mark>[code]</mark> <mark>
</mark> <mark>[/code]</mark> <mark>
tags added.