bonsoir tout le monde,
voilà, on m'a refilé un programme pour la gestion de mon aquarium mais à vrai dire, je suis débutant en arduino et je n'y comprends pas grand chose en programmation.
je sais juste qu'il affiche la température de la rampe d'éclairage, de l'eau du bac, il actionne un ventilo et il fait fonctionner mes 3 drivers pour les leds...le tout afficher sur un lcd 20*4.
j'aurais bien voulu que vous me donniez un coup de main pour essayer de mieux comprendre ce fameux programme:
#include "LiquidCrystal.h"
#include "WProgram.h"
#include "Wire.h"
#include "DS1307.h"
LiquidCrystal lcd(30, 31, 32, 33, 34, 35, 36);
int white = 5;
int royalblue = 6;
int blue = 7;
int ventilateur = 9;
int valeurPWM=0;
int minut;
int heure;
int seconde;
int time;
float sensorPineau;
float sensorPinled;
float tempeau;
float templed;
float temp1;
float Vact = 0; // variable valeur instantanée
int Fd=20; // facteur de division de la moyenne = moyenne toutes les FD boucles ici 20
long Accm=0; // accumulateur pour moyenne
int Nbcl=0; // compteur de boucles
void setup() {
lcd.begin(20,4);
Serial.begin(9600);
pinMode(white, OUTPUT);
pinMode(royalblue, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(ventilateur, OUTPUT);
}
void loop(){
//***** temperature eau *********
sensorPineau = analogRead(0);
Vact = ((sensorPineau*0.5)+1.5)*100 ;
Accm=Accm+Vact;
Nbcl ++;
if (Nbcl == Fd) {
temp1 = (Accm / Fd) ;
tempeau = temp1/100;
Accm= Accm-(Accm/20) ;
Nbcl= 19;
}
else{
tempeau = (Accm / Nbcl) ;
tempeau = tempeau/100;
}
//***** temperature led *********
sensorPinled = analogRead(1);
templed = sensorPinled*0.5 ;
//Récupération de l'heure du DS1307**********************************************************************************************
heure = RTC.get(DS1307_HR,true);
minut = RTC.get(DS1307_MIN,true);
seconde = RTC.get(DS1307_SEC,true);
time = (heure * 100) + minut;
//Affichage ******************************************************************************************
lcd.setCursor(0,0);
lcd.print (" POLOTCHE REEF TANK ");
lcd.setCursor(0,1);
lcd.print(" ");
if (heure < 10)
{
lcd.print("0");
}
lcd.print(heure);
lcd.print("H");
if (minut < 10)
{
lcd.print("0");
}
lcd.print(minut);
lcd.print(" ");
delay (5000);
lcd.setCursor(0,2);
lcd.print(" ");
lcd.print(tempeau);
lcd.print((char)223);
lcd.print(" ");
delay (5000);
//*****Controle des sorties eclairage *********
//***on-off***** white ***
if ((time >= 9300) && (time < 1045)){
valeurPWM = map(time, 930, 1044, 0, 255);
analogWrite (white, valeurPWM);
lcd.setCursor(0,3);
lcd.print("message.........");
delay(5000);
}
else if ((time >= 2215) && (time < 2300)){
valeurPWM = map(time, 2215, 2259, 255, 0);
analogWrite (white, valeurPWM);
lcd.setCursor(0,3);
lcd.print("message.........");
delay(5000);
}
else if ((time >= 1045 ) && (time < 2230)) {
analogWrite(white, 255);
}
else {
analogWrite(white, 0);
lcd.setCursor(0,1);
lcd.print("message.........");
delay(5000);
}
//***on-off***** royalblue ***
if ((time >= 9300) && (time < 1045)){
valeurPWM = map(time, 930, 1044, 0, 255);
analogWrite (royalblue, valeurPWM);
lcd.setCursor(0,3);
lcd.print("message.........");
delay(5000);
}
else if ((time >= 2215) && (time < 2300)){
valeurPWM = map(time, 2215, 2259, 255, 0);
analogWrite (royalblue, valeurPWM);
lcd.setCursor(0,3);
lcd.print("message.........");
delay(5000);
}
else if ((time >= 1045 ) && (time < 2230)) {
analogWrite(royalblue, 255);
}
else {
analogWrite(royalblue, 0);
lcd.setCursor(0,3);
lcd.print("message.........");
delay(5000);
}
//***on-off***** blue ***
if ((time >= 9300) && (time < 1045)){
valeurPWM = map(time, 930, 1044, 0, 255);
analogWrite (blue, valeurPWM);
lcd.setCursor(0,3);
lcd.print("message.........");
delay(5000);
}
else if ((time >= 2215) && (time < 2300)){
valeurPWM = map(time, 2215, 2259, 255, 0);
analogWrite (blue, valeurPWM);
lcd.setCursor(0,3);
lcd.print("message.........");
delay(5000);
}
else if ((time >= 1045 ) && (time < 2230)) {
analogWrite(blue, 255);
}
else {
analogWrite(blue, 0);
lcd.setCursor(0,3);
lcd.print("message.........");
delay(5000);
}
//***on-off***** ventilateur led ***
lcd.setCursor(0,0);
lcd.print(" ");
lcd.print(templed);
lcd.print((char)223);
lcd.print(" ");
if (templed > 30){
analogWrite(ventilateur, 255);
lcd.setCursor(0,3);
lcd.print("ventilateur ");
lcd.print(" ON");
delay(5000);
}
else {
analogWrite(ventilateur, 0);
lcd.setCursor(0,3);
lcd.print("ventilateur ");
lcd.print(" OFF");
delay(5000);
}
}
j'ai réussi a cabler le ds1307 ainsi que le lcd. J'ai quelque chose qui s'affiche
Et enfin, le programme fonctionne avec des sondes lm35 mais je dispose aussi de sonde ds18b20, peut on modifier le programme pour qu'il fonctionne avec ces dernières sondes?
merci