I'm trying to do something seemingly simple, but I'm running into difficulties. I want to send about 5 separate integers between two Arduinos over software serial. I have written the following, but I rarely get the two numbers on the receiving end - they're usually garbled or in the wrong order. I'm sure that I'm missing something obvious, but I can't work it out no matter how hard I try. Any help would be greatly appreciated.
Sender:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
int val, val2;
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
val = 123;
val2 = 456;
if(mySerial.read()=='#')
{
mySerial.write(highByte(val));
mySerial.write(lowByte(val));
delay(3);
}
if(mySerial.read() == '~')
{
mySerial.write(highByte(val2));
mySerial.write(lowByte(val2));
delay(3);
}
}
Receiver:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
byte val;
byte low, high;
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
mySerial.write('#');
byte h = mySerial.read();
byte l = mySerial.read();
int y = word(h, l);
delay(2);
mySerial.write('~');
byte h2 = mySerial.read();
byte l2 = mySerial.read();
int z = word(h2, l2);
Serial.println(y);
Serial.println(z);
Serial.println();
}