bonsoir a tous,
mon projet consiste a réaliser une petite station météo ou le récepteur reçoit la température l'humidité et la valeur de la tension de la lipo
la température/humidité est donnée par un DHT22!
mon problème est au niveau du récepteur!
en effet lors de ma compilation j'ai une erreur :" void value not ignored as it ought to be" sur la ligne de code :
done = radio.read( &meteo, sizeof(meteo) );
(la ligne ce trouve vers la fin du code !
je vous avoue que je sèche sur la question, je ne voie pas ou ce trouve le problème !
merci d'avance pour votre aide.
voici le code du récepteur dans son intégralité:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "RTClib.h"
#include "DHT.h"
#define DHTPIN 9
#define DHTTYPE DHT22
#define bouton 4
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 20, 4);
DHT dht(DHTPIN, DHTTYPE);
RF24 radio(8,7);
float temp;
float hum;
struct DATA {
float T;
float H;
int Vbat;
} meteo;
unsigned long start_backlight = 0;
unsigned long tempoDepart = 0;
boolean lightON = false;
float Vbat;
int RougePin = 6;
int VertPin = 5;
int BleuPin = 3;
int Rouge ;
int Bleu ;
int Vert ;
int data;
float T11;
float H11;
float V;
uint8_t batFull[8] = {0xe,0xe,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f};
uint8_t batHalf[8] = {0xe,0xe,0x11,0x11,0x11,0x1f,0x1f,0x1f};
uint8_t batVide[8] = {0xe,0xe,0x11,0x11,0x11,0x11,0x11,0x1f};
void setup(){
Serial.begin(9600);
radio.begin();
radio.setPALevel(RF24_PA_MAX); //puissance maximum
radio.setChannel(0x20); //canal 32
radio.setDataRate(RF24_1MBPS);
radio.openReadingPipe(1, 0xF0F0F0F0F0LL);
radio.enableDynamicPayloads();
radio.setAutoAck(1);
radio.setRetries(15,15);
radio.powerUp();
radio.startListening();
pinMode(bouton, INPUT);
pinMode(RougePin, OUTPUT);
pinMode(VertPin, OUTPUT);
pinMode(BleuPin, OUTPUT);
lcd.begin();
lcd.clear();
lcd.createChar(0, batFull);
lcd.createChar(1, batHalf);
lcd.createChar(2, batVide);
lcd.noBacklight();
lcd.setCursor(7, 0);
lcd.print("/");
lcd.setCursor(10, 0);
lcd.print("/");
lcd.setCursor(8, 1);
lcd.print(":");
lcd.setCursor(11, 1);
lcd.print(":");
lcd.setCursor(0, 2);
lcd.print("INT: ");
lcd.setCursor(10, 2);
lcd.print((char)223);
lcd.setCursor(11, 2);
lcd.print("C");
lcd.setCursor(17, 2);
lcd.print("% ");
lcd.setCursor(0, 3);
lcd.print("EXT: ");
lcd.setCursor(10, 3);
lcd.print((char)223);
lcd.setCursor(11, 3);
lcd.print("C");
lcd.setCursor(17, 3);
lcd.print("% ");
}
void readDHT22() {
T11 = 0;
H11 = 0;
if ((millis()-tempoDepart) >= 2000){
dht.begin();
tempoDepart = millis();
}
T11 = dht.readTemperature();
H11 = dht.readHumidity();
}
void affichage() {
DateTime now = rtc.now();
lcd.setCursor(5, 0);
convertion(now.day());
lcd.setCursor(8, 0);
convertion(now.month());
lcd.setCursor(11, 0);
lcd.print(now.year());
lcd.setCursor(6, 1);
convertion(now.hour());
lcd.setCursor(9, 1);
convertion(now.minute());
lcd.setCursor(12, 1);
convertion(now.second());
bat_affiche();
lcd.setCursor(5, 3);
lcd.print(temp ,1);
lcd.setCursor(13, 3);
lcd.print(hum ,1);
lcd.setCursor(5, 2);
lcd.print(T11 ,1);
lcd.setCursor(13, 2);
lcd.print(H11 ,1);
}
void convertion(int nombre) {
if (nombre >=0 && nombre < 10) {
lcd.print("0");
}
lcd.print(nombre);
}
void bat_affiche(){
lcd.setCursor(19,3);
if( V >= 3.7) {
lcd.print((char)0);
}
if(V <3.7 && V>=3.4) {
lcd.print((char)1);
}
if(V<3.4) {
lcd.print((char)2);
}
}
void RGB_LED(){
Rouge = 255;
Vert = 255;
Bleu = 255;
if ( temp <= -3 ) {
analogWrite(RougePin, 0);
analogWrite(VertPin, 0);
analogWrite(BleuPin, 0);
}
else if ( temp > -3 && temp < 0 ) {
Rouge = map(temp,-3,0,0,255);
Vert = map(temp,-3,0,0,255);
analogWrite(RougePin, Rouge);
analogWrite(VertPin, Vert);
analogWrite(BleuPin, 0);
}
else if ( temp >= 0 && temp < 20 ) {
Bleu = map(temp,0,20,0,255);
Vert = map(temp,0,20,255,0);
analogWrite(RougePin, 255);
analogWrite(VertPin, Vert);
analogWrite(BleuPin, Bleu);
}
else if ( temp >= 20 && temp < 28 ) {
Rouge = map(temp,20,28,255,0);
analogWrite(RougePin, Rouge);
analogWrite(VertPin, 0);
analogWrite(BleuPin, 255);
}
else if ( temp >= 28 && temp < 30 ) {
Vert = map(temp,28,30,0,255);
analogWrite(RougePin, 0);
analogWrite(VertPin, Vert);
analogWrite(BleuPin, 255);
}
else if ( temp >= 30 ) {
analogWrite(RougePin, 0);
analogWrite(VertPin, 255);
analogWrite(BleuPin, 255);
}
}
void loop() {
if (digitalRead(bouton) == HIGH) {
start_backlight = millis();
lcd.backlight();
lightON = true;
}
else {
if((lightON == true) && (millis() - start_backlight >= 20000 )) {
lcd.noBacklight();
start_backlight = 0 ;
lightON = false;
}
}
readDHT22();
if (radio.available())
{
bool done = false;
while (!done)
{
done = radio.read( &meteo, sizeof(meteo) ); //ERREUR : void value not ignored as it ought to be
}
Serial.print("got request: ");
Serial.println(meteo.T);
Serial.println(meteo.H);
temp = meteo.T ;
hum = meteo.H ;
V = meteo.Vbat * (5.0/1023.0) ;
}
}
affichage();
RGB_LED();
}