Bonjour,
Je m'appelle Enzo et je suis en fin de L1 à l'université de Bordeaux en filière IMSAT (vu que vous demandez une présentation je la pose là, si il fallait le faire ailleurs je m'excuse). Je me suis mis à bosser sur l'électronique suite à mes cours (surtout d'Elec Programée) pour réviser et faire 2-3 projets sympas vu qu'on en a pas en L1.
Comme premier projet, j'ai comme idée de faire une station météo avec une carte Arduino Uno, à laquelle j'ai ajouté un Shield pour y brancher un Groove DHT22. À tout ça j'ai branché un écran LCD 16x2 I2C et sur un breadboard 2 boutons. Le but c'est que l'écran LCD soit éteint et que des qu'on appuie sur l'un des deux boutons, soit afficher la température soit l'humidité.
J'ai fais de nombreux test:
Tout d'abord les boutons avec le DHT22 pour afficher soit la température soit l'humidité sur le moniteur Série, ça fonctionne.
#include "Grove_Temperature_And_Humidity_Sensor.h"
#define DHTTYPE DHT22
#define DHTPIN 2
DHT dht(DHTPIN, DHTTYPE);
#if defined(ARDUINO_ARCH_AVR)
#define debug Serial
#elif defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_SAM)
#define debug SerialUSB
#else
#define debug Serial
#endif
//configuration boutons
int bouton_temp = 3;
int bouton_hum = 4;
void setup() {
debug.begin(115200);
debug.println("DHTxx test!");
Wire.begin();
pinMode(bouton_temp, INPUT_PULLUP);
pinMode(bouton_hum, INPUT_PULLUP);
dht.begin();
}
void loop() {
float temp_hum_val[2] = {0};
//Lecture états des boutons
digitalRead(bouton_temp);
digitalRead(bouton_hum);
if (digitalRead(bouton_hum) == HIGH) {
!dht.readTempAndHumidity(temp_hum_val);
Serial.print("Humidity: ");
Serial.print(temp_hum_val[0]);
Serial.print(" %\t");
delay(2000);
}
if (digitalRead(bouton_temp) == HIGH){
!dht.readTempAndHumidity(temp_hum_val);
Serial.print("Temperature: ");
Serial.print(temp_hum_val[1]);
Serial.println(" *C");
delay(2000);
}
else {
Serial.println("No data");
}
delay(250);
}
Ensuite l'écran LCD avec le DHT 22 où j'affiche la température et ça se rafraîchit toutes les 2 secondes, ça fonctionne.
#include <LiquidCrystal_I2C.h>
#include <Grove_Temperature_And_Humidity_Sensor.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define DHTTYPE DHT22
#define DHTPIN 2
DHT dht(DHTPIN, DHTTYPE);
#if defined(ARDUINO_ARCH_AVR)
#define debug Serial
#elif defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_SAM)
#define debug SerialUSB
#else
#define debug Serial
#endif
void setup() {
debug.begin(115200);
Wire.begin();
dht.begin();
lcd.init();
lcd.clear();
lcd.backlight();
}
void loop() {
float temp_hum_val[2] = {0};
if (!dht.readTempAndHumidity(temp_hum_val)) {
lcd.setCursor(0,0);
lcd.print("Temperature");
lcd.setCursor(0,1);
lcd.print(temp_hum_val[1]);
} else {
lcd.setCursor(0,0);
debug.println("Fail");
}
delay(2000);
}
Et enfin j'ai essayé de fusionner les deux car je me dis que si j'arrive à faire fonctionner ces deux codes je peux les fusionner pour finir mon projets sauf qu'au moment d'appuyer sur l'un des deux boutons l'écran affiche une suite de caractère qui ont aucun sens et j'ai l'impression qu'il reste bloqué. Je vous laisse une vidéo pour illustrer ce que je dis ainsi que le code.
Si quelqu'un peut m'aider ça m'aiderait fortement ! Ça fait 2 semaines que je suis bloqué là dessus et ça commence à m'énerver sachant que j'aimerai passer à un autre projet.
Merci par avance la communauté.
Le code en question:
//Définition Bilbiothèques
#include <Grove_Temperature_And_Humidity_Sensor.h>
#include <LiquidCrystal_I2C.h>
//Configuration DHT22
#define DHTTYPE DHT22
#define DHTPIN 2
DHT dht(DHTPIN, DHTTYPE);
#if defined(ARDUINO_ARCH_AVR)
#define debug Serial
#elif defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_SAM)
#define debug SerialUSB
#else
#define debug Serial
#endif
//Configuration Ecran
LiquidCrystal_I2C lcd(0x27,16,2);
//configuration boutons
int bouton_temp = 3;
int bouton_hum = 4;
void setup() {
//Initialisation debug
debug.begin(115200);
//Initialisation Ecran
lcd.begin(16,2);
lcd.init();
lcd.clear();
lcd.backlight();
//Initialisation Boutons
pinMode(bouton_temp, INPUT_PULLUP);
pinMode(bouton_hum, INPUT_PULLUP);
//Initialisation DHT22
Wire.begin();
dht.begin();
}
void loop() {
//mets les variables du DHT22 à 0
float temp_hum_val[2] = {0};
if (digitalRead(bouton_temp) == HIGH){
!dht.readTempAndHumidity(temp_hum_val);
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("temperature");
lcd.setCursor(0,1);
lcd.print(temp_hum_val[1]);
delay(2000);
}
else if (digitalRead(bouton_hum) == HIGH){
!dht.readTempAndHumidity(temp_hum_val);
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("humidite");
lcd.setCursor(0,1);
lcd.print(temp_hum_val[0]);
delay(2000);
}
else {
lcd.noBacklight();
lcd.clear();
}
delay(250);
}
L'illustration en question: