Hello à tous,
Je reviens vers vous car je manque de temps mais j'essaie toujours à mes heures perdues d'avancer, 5 min par ci par là...
J'ai un vrai soucis sur mon code, je pense que je n'en suis pas loin, mais j'avoue ne pas bien comprendre comment fonctionne la librairie.
J'ai regardé sur le site
http://tmrh20.github.io/RF24/classRF24.html avec la page documentation, mais ça ne répond pas à ma question ou alors il me manque clairement quelque chose dans la compréhension.
Code : Tout sélectionner
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(2);
DallasTemperature sensors(&oneWire);
// ce,csn pins
RF24 radio(9,10);
void setup(void)
{
sensors.begin();
Serial.begin(57600);
Serial.println("**************V1 Send Sensor Data***********");
radio.begin();
radio.setPALevel(RF24_PA_LOW);
radio.setChannel(0x4c);
// open pipe for writing
radio.openWritingPipe(0xF0F0F0F0E1LL);
radio.enableDynamicPayloads();
radio.setAutoAck(true);
radio.powerUp();
Serial.println("...Sending");
}
void loop(void)
{
sensors.begin(); //demarrage du capteur de temperature
sensors.requestTemperatures(); // demmande mesure de temperature
sensors.getTempCByIndex(0); // Lecture de la temperature
Serial.print("Temperature sent: ");
Serial.println(sensors.getTempCByIndex(0));
radio.write();
delay(500);
}
Donc voici mon code, celui ci ne peut pas fonctionner puisque le radio.write manque d'argument : la référence, la taille de l'envoi.
Dans la doc c'est expliqué ici :
Code : Tout sélectionner
bool RF24::write ( const void * buf,
uint8_t len
)
Be sure to call openWritingPipe() first to set the destination of where to write to.
This blocks until the message is successfully acknowledged by the receiver or the timeout/retransmit maxima are reached. In the current configuration, the max delay here is 60-70ms.
The maximum size of data written is the fixed payload size, see getPayloadSize(). However, you can write less, and the remainder will just be filled with zeroes.
TX/RX/RT interrupt flags will be cleared every time write is called
Parameters
buf Pointer to the data to be sent
len Number of bytes to be sent
radio.stopListening();
radio.write(&data,sizeof(data));
Returns
True if the payload was delivered successfully false if not
Definition at line 876 of file RF24.cpp.
Je me dis très bien il faut donc que j'utilise la valeur de sortie de sensors.requestTemperatures() qui est égale à 2512 soit en utilisant sensors.getTempCByIndex(0) 25.12°
Sauf que le paramètre const void *, soit le 1er argument de radio.write, je n'arrive pas du tout à insérer la variable de température.
J'arrive à envoyer du texte sans soucis, avec une chaine de caractère avec en intégrant en définition "const char *str_on" et dans le void loop radio.print(str_on) ça passe assez bien.
Par contre la température qui est une variable flottante si j'ai bien compris je n'y arrive pas.
J'ai tenté de définir le code de la manière suivante :
Code : Tout sélectionner
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(2);
DallasTemperature sensors(&oneWire);
float temp;
// ce,csn pins
RF24 radio(9,10);
void setup(void)
{
sensors.begin();
Serial.begin(57600);
Serial.println("**************V1 Send Sensor Data***********");
radio.begin();
radio.setPALevel(RF24_PA_LOW);
radio.setChannel(0x4c);
// open pipe for writing
radio.openWritingPipe(0xF0F0F0F0E1LL);
radio.enableDynamicPayloads();
radio.setAutoAck(true);
radio.powerUp();
Serial.println("...Sending");
}
void loop(void)
{
sensors.begin(); //demarrage du capteur de temperature
sensors.requestTemperatures(); // demmande mesure de temperature
temp = sensors.getTempCByIndex(0); // Lecture de la temperature
Serial.print("Temperature sent: ");
Serial.println(sensors.getTempCByIndex(0));
radio.write(temp;4);
delay(500);
}
En faisant de cette manière, j'ai un retour d'erreur un peu partout que je ne parviens pas à résoudre.
Pourtant si j'ai bien compris, j'ai défini la variable temp en variable flotante, la variable flotante étant sensors.geTempCByindec(0), et je demande au module d'écrite le data temp avec 4 octet.
Si quelqu'un pouvait m'éclairer car là je nage...