Hola y buen día,
Quería presentarles un problema que llevo varios días dando vuelta y después de investigar en varios foros no consigo encontrar una solución.
Tengo dos Arduino nano conectados a sus respectivos NRF24l01, estoy usando los ejemplos "MultiCeiverDemo" que vienen en la librería de TMRh20 (v1.4.1). El único cambio que le hice a los ejemplos es el siguiente:
El que funciona como receptor (una línea).
struct PayloadStruct
{
unsigned long nodeID;
**float payloadID; <-------------------------------------------------- "unsigned long" por "float"**
};
PayloadStruct payload;
El que funciona como transmisor (dos líneas)
struct PayloadStruct
{
unsigned long nodeID;
**float payloadID; // <-------------------------------------------------- "unsigned long" por "float"**
};
PayloadStruct payload;
void loop() {
if (role <= 53) {
// This device is a TX node
unsigned long start_timer = micros(); // start the timer
bool report = radio.write(&payload, sizeof(payload)); // transmit & save the report
unsigned long end_timer = micros(); // end the timer
if (report) {
// payload was delivered
Serial.print(F("Transmission of payloadID "));
Serial.print(payload.payloadID); // print payloadID
Serial.print(F(" as node "));
Serial.print(payload.nodeID); // print nodeID
Serial.print(F(" successful!"));
Serial.print(F(" Time to transmit: "));
Serial.print(end_timer - start_timer); // print the timer result
Serial.println(F(" us"));
} else {
Serial.println(F("Transmission failed or timed out")); // payload was not delivered
}
**payload.payloadID = 99.99; // <----------- "payload.payloadID++" por "payload.payloadID= 99.99"**
el resultado se muestra correctamente el el monitor
El problema acontece cuando cambio uno de los Arduino nano, por ya sea un MKR WIFI 1010 o MKR 1400 (son los que tengo pero sospecho me pasaría con cualquier MKR). el resultado es:
el hecho de mandar la variable como float deja de ser reconocida con el MKR, cabe aclarar que si dejo el ejemplo original (con unsigned long) el receptor MKR si recibe un valor, pero este no es el correcto. Aquí el monitor con el código original:
Ya había encontrado una publicación de alguien que reporto algo parecido, pero sin respuesta. este es el link: https://forum.arduino.cc/t/mkr-1010-with-nrf-problems/882817
¿Alguna idea que pueda probar? ya he probado con receptores con su capacitor de 10microF, he probado con receptores en su adaptador de 5v (como el de la imagen). Igual mencionar, tengo conmigo unos 12 transmisores, ya pobre todos y el problema es el mismo (haciendo todo tipo de combinaciones), tengo de los normales y los que tienen antena integrada. Los ajustes al ejemplo original son únicamente lo que menciono arriba (y bueno, también ajuste la parte donde se definen los Pines para CE y CSN que tiene que ajustarse para cada placa). ¿Es posible que la librería no sea compatible?
como nota adicional, tengo tres tipos de respuesta por parte del MKR, como mencione he probado muchos receptores, algunos de ellos me dan "ovf", como el de la imagen de arriba, otros me da 115 (cuando el valor que estoy transmitiendo es 99.99) y solo uno de ellos me oscila entre el valor correcto 99.99 y 115, lo cual solo me deja mas confundido.
Ojala alguien de ustedes ya haya tenido ese problema y pueda orientarme. Saludos.