Hola, soy nuevo en el foro, y espero que sea posible que ayudarme
Quiero enviar un String de un NRF24L01 (emisor) a un receptor que tengo en otra computadora.
Pero no sé si es posible porque en el receptor solo me salen simbolos, estuve leyendo y me parece que el problema es por los códigos ASCII, pero no estoy seguro, y no se si es posible hacer que aunque se envien codigos ASCII el receptor pueda interpretar y sacar el caracter correcto por el monitor serial en lugar de simbolos extraños.
He utilizado unos códigos que he encontrado en internet y los he modificado con este fin, ya que en el codigo de esa pagina el ejemplo solo envia letras.
Lo que quiero es enviar la hora que tiene el reloj DS1307 que tengo en el arduino emisor, junto con otros valores.
En el monitor serial del emisor se imprime todo correctamente, pero en el monitor serial del receptor solo salen caracteres sin sentido.
Estos son los códigos:
Emisor:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <Time.h>
#include <DS1307RTC.h>
RF24 radio(9,10);
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
float t;
int constante=3;
void setup() {
pinMode(10, OUTPUT);
Serial.begin(9600);
radio.begin();
setSyncProvider (RTC.get);
radio.setRetries(15,15); // Maximos reintentos
//radio.setPayloadSize(8); // Reduce el payload de 32 si tienes problemas
// Open pipes to other nodes for communication
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[1]);
}
void loop() {
radio.stopListening(); // Paramos la escucha para poder hablar
t=analogRead(0)* (5.0 / 1023.0);;
if(second()==0){
String Enviar= "";
Enviar+= String (day());
Enviar+= ("/");
Enviar+= String (month());
Enviar+= ("/");
Enviar+= String (year());
Enviar+= (" ");
Enviar+= String (hour());
Enviar+= (":");
Enviar+= String (minute());
Enviar+= (":");
Enviar+= String (second());
Enviar+= (" ");
Enviar+= String (t);
Enviar+= (" ");
Enviar+= String (constante);
Serial.println (Enviar);
bool envio = radio.write( &(Enviar), sizeof(Enviar));
}
}
Receptor
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
String Enviar= "";
RF24 radio(9,10);
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
void setup(void)
{
pinMode(10, OUTPUT);
Serial.begin(9600);
radio.begin();
radio.setRetries(15,15);
//radio.setPayloadSize(8);
radio.startListening();
radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
}
void loop ()
{
if ( radio.available() ) // Si hay datos disponibles
{
radio.read(&Enviar, sizeof (Enviar));
Serial.println(Enviar);
}
}
gracias