Quiero enviar un personaje de un transmisor Zigbee a un Arduino Mega 2560. Después de recibir el personaje, Arduino debe enviar algunos datos a Zigbee. Pero Arduino siempre está recibiendo valores basura en la consola. Si envío un carácter, supongamos que 'a', en lugar de 'a', la consola Arduino siempre muestra 'y'. Es lo mismo para cada personaje que envío.
#include <EEPROM.h>
#include <SoftwareSerial.h>
SoftwareSerial XBee(19, 18); // RX, TX
int addr = 0;
unsigned long startMillis; //some global variables available anywhere in the program
unsigned long currentMillis;
const unsigned long period = 1000; //the value is a number of milliseconds
void setup()
{
XBee.begin(9600);
Serial1.begin(9600);
Serial.begin(9600);
startMillis = millis(); //initial start time
}
void loop()
{
int id = 1;
EEPROM.write(addr, id);
if (Serial1.available()>0)
{
currentMillis = millis(); //get the current "time" (actually the number of milliseconds since the program started)
if (currentMillis - startMillis >= period) //test whether the period has elapsed
{
char recbyte=Serial.read();
Serial.print(recbyte);
// delay(1500);
Serial1.write(id);
Serial1.write(" 30 ");
Serial1.write(" 99 ");
Serial1.write(" 72 ");
Serial1.write(" 1098 ");
Serial1.write(" 728 ");
Serial1.write(" 578 ");
// Serial1.write("$");
Serial1.write('PS=1\r\n');
Serial1.end();
startMillis = currentMillis;
}
}
}