Bonjour,
Alors voila je suis en train de faire un placard de culture indoor, le tout assisté par arduino qui va gérer la lumière, la ventilation interne qui affichera l'heure, l’état de la lumière,de la ventilation (15minute on 15 minute off) et enfin la température et l'humidité
pour cela j'ai réuni :
un arduino uno
un écran lcd 16x2
un dht22
une carte tiny rtc ds1307
une carte 4 relais
Mais voila, jamais ne se passe rien comme cela devrai j'ai des problemes
petit un, l'heure est instable sur mon écran, elle n'actualise pas les minute ou ne les passe carrément pas, ou alors passe de la bonne heure a une complètement différente cela par intermittence
de plus quand ma sortie relais et activé et une minute se passe, le relais se coupe et se relance
voila j'espere que vous pourriez m'aider
ci joint le code
#include <Wire.h>
#include <DS1307.h>
#include <DHT.h>
#include <LiquidCrystal.h>
#define DHTPIN 12
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int brasseur = 8;
const int lumiere = 9;
int lampe_on = 530;
int lampe_off = 2330;
int minut;
int heure;
int seconde;
int date;
int mois;
int annee;
int temps_perso;
void setup() {
// put your setup code here, to run once:
/*RTC.stop();
RTC.set(DS1307_SEC,55); //réglage secondes
RTC.set(DS1307_MIN,28); //réglage minutes
RTC.set(DS1307_HR,23); //réglage heures
RTC.set(DS1307_DOW,1); //réglage jour de la semaine
RTC.set(DS1307_DATE,8); //réglage date
RTC.set(DS1307_MTH,9); //réglage mois
RTC.set(DS1307_YR,16); //réglage année
RTC.start();
*/
pinMode(lumiere, OUTPUT);
pinMode(brasseur, OUTPUT);
digitalWrite(lumiere, LOW);
digitalWrite(brasseur, LOW);
dht.begin();//TOUCHE PAS A CA PETIT CON :)
lcd.begin(16,2);//TOUCHE PAS A CA PETIT CON :)
lcd.print(" cara de concha ");
lcd.setCursor(0,1);
lcd.print(" v1.0 ");
delay(3000);
lcd.clear();
}
void loop() {
// put your main code here, to run repeatedly:
{
dht.begin();
lcd.begin(16,2);
for (int i=0;i<20;i++)// lcd page 1
{
// debut du texte a modif de A a Z
//Récupérer l'heure du DS1307**********************************************************************************************
heure = RTC.get(DS1307_HR,true);
minut = RTC.get(DS1307_MIN,false);
seconde = RTC.get(DS1307_SEC,false);
date = RTC.get(DS1307_DATE,false);
mois = RTC.get(DS1307_MTH,false);
annee = RTC.get(DS1307_YR,false);
temps_perso = (heure * 100) + minut; //creation temps_perso
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h)) {
} else {
if(temps_perso > lampe_on && temps_perso < lampe_off){
digitalWrite(lumiere,HIGH);
}
else
{
digitalWrite(lumiere, LOW);
}
}
// fin du texte a modifier
lcd.setCursor(0,0);
lcd.print("TEMP ");
lcd.print(t);
lcd.print(" C");
lcd.setCursor(7,1);
lcd.print("H ");
lcd.print(h);
lcd.print(" %");
lcd.setCursor(0,1);
if (heure < 10)
{
lcd.print("0");
}
lcd.print(RTC.get(DS1307_HR,true));
lcd.print("H");
if (minut < 10)
{
lcd.print("0");
}
lcd.print(RTC.get(DS1307_MIN,false));
lcd.print(" ");
}
delay(1000);
lcd.clear();
for (int i=0;i<10;i++)// lcd pages 2
{
// debut du texte a modif de A a Z
//Récupérer l'heure du DS1307**********************************************************************************************
heure = RTC.get(DS1307_HR,true);
minut = RTC.get(DS1307_MIN,false);
seconde = RTC.get(DS1307_SEC,false);
date = RTC.get(DS1307_DATE,false);
mois = RTC.get(DS1307_MTH,false);
annee = RTC.get(DS1307_YR,false);
temps_perso = (heure * 100) + minut; //creation temps_perso
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h)) {
} else {
if(temps_perso > lampe_on && temps_perso < lampe_off){
digitalWrite(lumiere,HIGH);
}
else
{
digitalWrite(lumiere, LOW);
}
}
// fin du texte a modifier
lcd.setCursor(0,0);
lcd.print("BRASSEUR = ");
lcd.setCursor(11,0);
if(digitalRead(brasseur) == HIGH)
{
lcd.print("ON ");
}
else
{
lcd.print("OFF");
}
delay(10);
lcd.setCursor(0,1);
if(digitalRead(lumiere) == HIGH)
{
lcd.print("LAMPE = ON");
}
else
{
lcd.print("LAMPE = OFF");
}
delay(10);
}
delay(1000);
lcd.clear();
}
}