#include <dht.h> //DHT biblothéque open source permet de lire les données d'un capteur
// ( humidité température )
#define DHT22_PIN PB5//définir un nom pour une broche de microcontroleur PB5
//fait référence à la broche5 du port B
#define CLOCK PB0//fait référence à la broche 0 du port B
#define LATCH PB2//fait référence à la broche 2 du port B
#define DATA PB1//fait référence à la broche 1du port B
byte NUM[]={
B01111110,B00001100,B10110110,B10011110,B11001010,B11011100,B11111100,B00001110,B11111110,B11011110,B11101010,B11110000};
void setup(){ //setup est une fonction pour configurer les broches du modules d'afficheur en tant qu'entrée ou sortie
pinMode(DHT22_PIN, INPUT);
pinMode(CLOCK, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(DATA, OUTPUT); }
void loop(){//lire les donnérs du capteur qui sont connectée au pin DHT22_PIN
dht DHT;DHT.read22(DHT22_PIN);
int temperature = DHT.temperature;//stocker dans un variable Temperature les valeurs qui sont mesuré par le capteur T à partir de DHT
int temperatureDigit1 = temperature / 10;//divise Temperature par 10 et stocker la résultat dans variable appelé températureDigit1,il affiche partie décimal
int temperatureDigit2 = temperature % 10;//(% modulo) stocker la résultat dans un variable appelé températureDigit2, affiche le reste de le division de température par 10
digitalWrite(LATCH, LOW);//met la broche LATCH à LOW pour commencer la transmission des données
shiftOut(DATA, CLOCK, MSBFIRST, NUM[temperatureDigit2]);//shifitout() envoyer chaque chiffre qui est converti en binaire au premiere afficheur 7seg
shiftOut(DATA, CLOCK, MSBFIRST, NUM[temperatureDigit1]);//shifitout() envoyer chaque chiffre qui est converti en binaire au deuxième afficheur 7seg
digitalWrite(LATCH, HIGH);//met la broche LATCH à HICHT pour que la transmission des données se termine delay(1000); //attendre 1s entre chaque lecture de température et humidité
delay(1000);
digitalWrite(LATCH, LOW);
shiftOut(DATA,CLOCK , MSBFIRST, B11110000 );
shiftOut(DATA, CLOCK, MSBFIRST, B00000000);
digitalWrite(LATCH, HIGH);
delay(1000);
int humidity = DHT.humidity;
int humidityDigit1 = humidity / 10;//divise humidity par 10 et stocker la résultat dans variable appelé humidityDigit1,il affiche partie décimal
int humidityDigit2 = humidity % 10;//(% modulo) stocker la résultat dans un variable appelé humidityDigit2, affiche le reste de le division de humidity par 10
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, NUM[humidityDigit2]);
shiftOut(DATA, CLOCK, MSBFIRST, NUM[humidityDigit1]);
digitalWrite(LATCH, HIGH);
delay(1000);
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST,B11101010 );
shiftOut(DATA, CLOCK, MSBFIRST,B00000000);
digitalWrite(LATCH, HIGH);
delay(1000);}//attendre 1s entre chaque lecture de température et humidité