Bonjour à tous,
J'ai fais un petit programme tout simple et fonctionnel, pour m'améliorer j'aimerai votre avis sur la structure
J'ai utilisé :
LCD 1602 + LEDs + Potentiomètre + DHT11
J'ai repris quelques codes et réécris à ma manière (plus lisibles) en y ajoutant quelques conditions.
Pouvez vous me donner votre avis, par exemple si l'écriture est trop complexe, des ligne inutiles ou une façon de mieux les écrire , des composants manquant ect ....
Le code fonctionne.
Le but étant de :
- Lecture de température et hygrométrie
- Allumer certaines Leds en fonction de la température et du taux d'humidité.
- Ecriture des valeurs sur le LCD
- Ecriture sur LCD si température trop chaude, froide, OK
- Ecriture sur LCD si hygrométrie trop sec, humide, OK
(les valeurs de température/hygrometrie sont celles de test.)
C'est un début pour une futur automatisation de ma serre à bonsaï.
Votre avis serai très apprécié ![]()
Voici le schéma :
Voici le code :
#include <LiquidCrystal.h> //library
#include <SimpleDHT.h> //library
int DHT11pin = A5; //DHT PIN
SimpleDHT11 dht11;
LiquidCrystal lcd(8, 9, 10, 11, 12, 13); //LCD pins
void setup() {
Serial.begin(9600);
lcd.begin(16, 2); //set lcd to 16 positions and 2 rows
//Réglage LEDs
pinMode(2,OUTPUT); // Bleu température froide : en dessous de 20°C
pinMode(3,OUTPUT); // Vert température : tout est OK entre 20°C et 30°C
pinMode(4,OUTPUT); // Rouge température chaude : au dessus de 30°C
pinMode(5,OUTPUT); // Blanc hygrométrie basse : en dessous de 20%
pinMode(6,OUTPUT); // Vert hygrometrie : tout est OK entre 20% et 30%
pinMode(7,OUTPUT); // Jaune hygrométrie haute : au dessus de 30%
}
void loop() {
// Ecriture des datas
byte temperature = 0;
byte humidity = 0;
byte data[40] = {0};
// lecture LCD
if (dht11.read(DHT11pin, &temperature, &humidity, data))
// Température écriture
lcd.setCursor(0, 0);
// print text
lcd.print("Temp: C ");
lcd.setCursor(6,0);
// print temperature data
lcd.print(temperature);
// Hygrométrie écriture
lcd.setCursor(0,1);
// print text
lcd.print("Hygr: % ");
lcd.setCursor(6,1);
// print humidity data
lcd.print(humidity);
// LEDs écriture TEMPERATURE
if (temperature <= 20 ) {
lcd.setCursor(11, 0);
// print text
lcd.print("COLD " ); }
if ( temperature > 20 & temperature < 30 ) {
lcd.setCursor(11, 0);
// print text
lcd.print("OK "); }
if (temperature >= 30 ) {
lcd.setCursor(11, 0);
// print text
lcd.print("HOT "); }
// LEDs écriture HYGGROMETRIE
if (humidity <= 20 ) {
lcd.setCursor(11, 1);
// print text
lcd.print(" SEC " ); }
if (humidity > 20 & humidity < 30 ) {
lcd.setCursor(11, 1);
// print text
lcd.print("OK "); }
if (humidity >= 30 ) {
lcd.setCursor(11, 1);
// print text
lcd.print("HUMID"); }
// Allumage des LEDs
if (temperature <= 20 ) { // Bleu = Trop froid
digitalWrite (2, HIGH); }
else {
digitalWrite (2, LOW); }
if ( temperature > 20 & temperature < 30 ) { // Vert = Tout est OK
digitalWrite (3, HIGH); }
else {
digitalWrite (3, LOW); }
if (temperature >= 30 ) { // Rouge = Trop chaud
digitalWrite (4, HIGH); }
else {
digitalWrite (4, LOW); }
if (humidity < 20 ) { // Blanc = Trop humide
digitalWrite (5, HIGH); }
else {
digitalWrite (5, LOW); }
if ( humidity >= 20 & humidity <= 30 ) { // Vert = Tout est OK
digitalWrite (6, HIGH); }
else {
digitalWrite (6, LOW); }
if (humidity > 30 ) { // Jaune = Trop sec
digitalWrite (7, HIGH); }
else {
digitalWrite (7, LOW); }
// Attendre 2s pour nouvelle lecture des data
delay(2000);
}
Merci à vous.
