Bonjour à vous,
Je tiens à préciser que je suis débutant, j'avance à petit pas.
Voici mon projet, j'ai une sonde pour la température extérieur avec arduino nano, ds18b20 et nrfl01+ et une autre pour l'eau (même montage) et un récepteur composé d'un arduino uno, un nrf24l01+ et un ecran I2C 20x4.
Mon problème est le suivant, le uno réceptionne bien les températures mais n'arrivent pas à les mettre au bon endroit.
La valeur float temperature1 devrait être réceptionnée en float temperature1 et s'afficher pour TempEau et float temperature devrait être réceptionnée en float temperature et s'afficher pour TempExt.
Mais là, les valeurs sont mélangées et ne sont pas attribuées aux bonnes variables.
J'ai ajouté un delay à la fin du void loop mais le résultat n'est pas top.
Je viens d'y passer quelques journées mais là je suis sec, pourriez vous m'aider?
Par avance, merci
Je vais essayer de poster mes lignes de codes, qui ne sont pas toujours bien organisées:
Recepteur uno
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <VirtualWire.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "printf.h"
LiquidCrystal_I2C lcd(0x27, 20, 4);
RF24 radio(9,10);
//address through which two modules communicate.
const byte address[][6] = {"00001", "00002","00003"};
float temperature, temperature1;
float temperaturedeg = 1;
void setup()
{
digitalWrite(2, LOW);
// initialise l'afficheur LCD
lcd.begin();
// efface l'ecran et place le curseur en 0,1
lcd.clear();
// allumer retroeclairage
lcd.backlight();
// activer l'affichage
lcd.display();
lcd.setCursor(0,0);
lcd.print("TempExt:"); // print a simple message
lcd.setCursor(0,2);
lcd.print("TempEau:");
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, address[1]);
radio.openReadingPipe(1, address[1]);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
delay(1000);
}
void loop()
{
//Read the data if available in buffer
if (radio.available())
{
lcd.clear();
radio.read(&temperature, sizeof(temperature));
lcd.setCursor(0,0);
lcd.print("TempExt:");
lcd.setCursor(8,0);
Serial.print("ext");
Serial.print(temperature);
lcd.print(temperature, 1);
Serial.println(temperature);
lcd.setCursor(0,2);
radio.read(&temperature1, sizeof(temperature1));
lcd.print("TempEau:");
lcd.setCursor(8,2);
Serial.print("eau");
Serial.print(temperature1);
lcd.print(temperature1, 1);
}
if (temperature < temperaturedeg) { //Si la température lue est inférieure à la température de consigne, on active le relais
lcd.setCursor(0,1); //on place le curseur de l'écran LCD au début de la 1ère ligne
lcd.print("Mode hors gel");
}
else
{
lcd.setCursor(0,1); //on place le curseur de l'écran LCD au début de la 1ère ligne
lcd.print("Mode normal ");
}
delay(1000);
}
Emetteur TempEau
#include <Wire.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <printf.h>
// definition de la sonde dallas
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Sonda1 = { 0x28, 0x1D, 0x60, 0x45, 0x92, 0x06, 0x02, 0x0E };
RF24 radio(9,10); // CE, CSN
//const byte address[6] = "00001";
const byte address[][6] = {"00001", "00002","00003"};
// definition de la constante temp pour envoi
float temperature1;
void setup(){
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(address[1]);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
delay(1000);
}
void loop(){
sensors.requestTemperatures();
Serial.print("TempEau : ");
Serial.print(" ");
Serial.print(sensors.getTempC(Sonda1));
Serial.println(" ");
if (temperature1<-124.00){
Serial.print("Erreur mesure");
sensors.requestTemperatures();
}
else
{
float temperature1 = sensors.getTempCByIndex(0);
radio.write(&temperature1, sizeof(temperature1));
delay(10);
}
}
Emetteur TempExt
#include <Wire.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <RF24.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <printf.h>
// definition de la sonde dallas
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Sonda0 = { 0x28, 0x53, 0x4F, 0x45, 0x92, 0x13, 0x02, 0xEC };
RF24 radio(9,10); // CE, CSN
//const byte address[6] = "00001";
const byte address[][6] = {"00001", "00002","00003"};
// definition de la constante temp pour envoi
float temperature=sensors.getTempC(Sonda0);
void setup(){
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(address[1]);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
delay(1000);
}
void loop(){
sensors.requestTemperatures();
Serial.print("Temp ext: ");
Serial.print(" ");
Serial.print(sensors.getTempC(Sonda0));
Serial.println(" ");
if (temperature<-124.00){
Serial.print("Erreur mesure");
sensors.requestTemperatures();
}
else
{
float temperature = sensors.getTempCByIndex(0);
radio.write(&temperature, sizeof(temperature));
delay(10);
}
}
&