//////////////////////////////////////////////// BRANCHEMENT ///////////////////////////////////////////////////////
// La led RGB // La sonde DHT22 // Le bouton //
// // // //
// Broche 3 : La broche Rouge de la LED RGB // Broche 2 : pin data de la sonde // Broche 4 //
// Broche 5 : La broche Vert de la LED RGB // Avec une resistance de 4.7k // Et au - //
// Broche 6 : La broche Bleu de la LED RGB // entre le + et la pin data de la sonde // //
// // // //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// import des librairies
#include <SPI.h>
#include <RF24.h>
#include "DHT.h"
// on definie les pins du nrf24l01
RF24 radio(7,8);
// on definie la sonde sur le pin 2
DHT dht(2, DHT22);
// on definie quelques variables et constante
char* pourcent = "%";
const int R=1;
const int V=1;
const int B=1;
//On défini le bouton
const int buttonPin = 4;
int buttonState = 0; // état du bouton est a 0
int lastButtonState = 0; // l'ancien état est a 0
//les leds
const int ledRouge=3; // Constante pour la broche 3
const int ledVert=5; // Constante pour la broche 5
const int ledBleu=6; // Constante pour la broche 6
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // le bouton en input pullup
pinMode (ledVert,OUTPUT); // Broche ledVert configurée en sortie
pinMode (ledRouge,OUTPUT); // Broche ledRouge configurée en sortie
pinMode (ledBleu,OUTPUT); // Broche ledBleu configurée en sortie
radio.begin(); // on init le module nrf24l01
radio.openWritingPipe(0x1111111111); // on defini le channel
dht.begin(); // on init la sonde
Serial.begin(9600); // on init la com serie de l'arduino
Serial.println("Prêt ... "); // on écrit dans le port serie de l'arduino qu'on est prêt
}
void loop() {
// lit l'état du bouton
buttonState = digitalRead(buttonPin);
// compare avec l'état précédant
if (buttonState != lastButtonState) {
// si l'etat du bouton est a 1 (bouton relâché) on ecrit off dans la com serie et rien d 'autre
if (buttonState == HIGH) {
Serial.println("off");
} else {
// si l'état du bouton est a 0 (bouton enclenché) on écrit on dans la com série et lance la fonction "sonde"
Serial.println("on");
sonde();
}
// Delay pour la sensibilité du bouton
delay(50);
}
// sauve l'état du bouton pour la réinitialiser la boucle
lastButtonState = buttonState;
}
void sonde()
{
// on defini les variables qu'on va envoyer
char outBuffer[32]= ""; // 32 bytes maximum
char floatBuf1[10];
char floatBuf2[10];
// lecture de la sonde
float h = dht.readHumidity();
float t = dht.readTemperature();
// convertion float en string
dtostrf(h, 6, 2, floatBuf1);
dtostrf(t, 6, 2, floatBuf2);
// ecriture du buffer en string
sprintf(outBuffer,"Temp=%s °C et Humi=%s %s", floatBuf2, floatBuf1, pourcent);
//alimente le module nrf24l01+
radio.powerUp();
// transmition du buffer vers le raspberry
radio.write(outBuffer, strlen(outBuffer));
//arrêt de l’alimentation du module nrf24l01+
radio.powerDown();
//communication avec le port serie de l'arduino.
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C");
Serial.print(" et ");
Serial.print("Humidity: ");
Serial.print(h);
Serial.println(" %\t");
// allume une couleur en fonction de la température
if (t >= 30) {
//---- rouge ---
digitalWrite(ledRouge,HIGH); // allume la couleur voulue
delay(2000); // pause
digitalWrite(ledRouge,LOW); // éteint la couleur voulue
}
else if ( 22 < t < 30) {
//---- vert ---
digitalWrite(ledVert,HIGH); // allume la couleur voulue
delay(2000); // pause
digitalWrite(ledVert,LOW); // éteint la couleur voulue
}
else if ( t <= 22) {
//---- bleu ---
digitalWrite(ledBleu,HIGH); // allume la couleur voulue
delay(2000); // pause
digitalWrite(ledBleu,LOW); // éteint la couleur voulue
}
}