Bonjour,
J'ai pour projet, d'automatisé une installation, commande d'électrovanne, mesure de température, hygrométrie,etc...
Ce projet consistera à changer l'eau de plusieurs bacs automatiquement, ouverture d'électrovannes pour vider puis d'une pompe pour remplir.
Ils seront commandé par des capteur de niveau.
Mais tout d'abord, je souhaite automatisé la production d'eau (osmose inverse) via des capteurs de niveau.
Fonction: Mémorisation des périodes de commutations, et si possible, envoi d'un sms à ce moment (je ne refuse pas d'info à ce niveau)
Mais avant d'aller plus loin, j'ai déjà(...) un problème:
Mon horloge ne fonctionne pas après l'extinction de l'alimentation.
(Elle se remet à zéro)
Sinon, elle fonctionne correctement(affichage sur lcd) tant que je ne l'ai pas débrancher de l'usb.
Petit détail qui à son importance, la pile devient assez chaude quand je débranche l'alim, comme si la pile alimentait également le lcd , résultat, les piles se vites en quelque minute.
Voici les codes, le premier pour configurer l'heure une première et unique fois
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
void setup () {
Serial.begin(57600);
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
rtc.begin();
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop () {
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.print(" since midnight 1/1/1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");
// calculate a date which is 7 days and 30 seconds into the future
DateTime future (now.unixtime() + 7 * 86400L + 30);
Serial.print(" now + 7d + 30s: ");
Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();
Serial.println();
delay(3000);
}
Le second qui affiche le tout sur un lcd:
/************************************************************
Horloge Arduino
Horloge simple avec un Arduino, un module breakout
RTC DS1307 et un afficheur LCD.
Branchements du breakout RTC DS1307:
Gnd --> GND
Vcc --> 5 V
Sda --> analog pin A4
Scl --> analog pin A5
Branchements de l'afficheur LCD:
LCD RS pin --> digital pin 12
LCD Enable pin --> digital pin 11
LCD D4 pin --> digital pin 5
LCD D5 pin --> digital pin 4
LCD D6 pin --> digital pin 3
LCD D7 pin --> digital pin 2
LCD R/W pin --> ground
http://electroniqueamateur.blogspot.ca/2013/06/une-horloge-pour-votre-arduino-real.html
***************************************************/
#include <LiquidCrystal.h>
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
Wire.begin();
RTC.begin();
lcd.begin(16, 2);
// following line sets the RTC to the date & time this sketch was compiled
//RTC.adjust(DateTime(__DATE__, __TIME__));
}
void loop() {
DateTime now = RTC.now();
// l'heure sur la premiêre ligne du LCD
lcd.setCursor(4, 0);
lcd.print(now.hour());
lcd.print(":");
if (now.minute() < 10) {
lcd.print("0");
}
lcd.print(now.minute());
lcd.print(":");
if (now.second() < 10) {
lcd.print("0");
}
lcd.print(now.second());
// la date sur la deuxième ligne du LCD
lcd.setCursor(2, 1);
lcd.print(now.day());
lcd.print(" ");
switch (now.month()) {
case 1:
lcd.print("janvier");
break;
case 2:
lcd.print("fevrier");
break;
case 3:
lcd.print("mars");
break;
case 4:
lcd.print("avril");
break;
case 5:
lcd.print("mai");
break;
case 6:
lcd.print("juin");
break;
case 7:
lcd.print("juillet");
break;
case 8:
lcd.print("aout");
break;
case 9:
lcd.print("septembre");
break;
case 10:
lcd.print("octobre");
break;
case 11:
lcd.print("novembre");
break;
case 12:
lcd.print("decembre");
break;
}
lcd.print(" ");
lcd.print(now.year());
delay(1000);
lcd.clear();
}
Je précise que je débute totalement dans cette univers, même si, du fait de mes études, je touche un "petit peu" à l'informatique.
Merci