problem looks like:
software serial rx on pin 2 , receiving data from another arduino (eq: "2 24 18 24 16"), it perfectly works on arduino UNO (tested on 2 different boards from robotdyn and arduino.cc) but on arduino mega this is not working (also tested on 2 boards), only zeros are received. Does anybody know why?
#include <SoftwareSerial.h>
#include <Thread.h>
SoftwareSerial mySerial(19, 20); // RX(TX of the module should be connected), TX(not used)
Thread EXTboard = Thread();
int input_pin = 5;
int output_pin = 6;
int someData [5];
int sombodysId, sombodysOldId, tempIn, humIn, tempOut, humOut;
bool shouldbeignored = false;
unsigned long long mytime;
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
mySerial.setTimeout(1000);
pinMode(output_pin, OUTPUT); digitalWrite(output_pin, HIGH);
EXTboard.onRun(getSomeInfo);
EXTboard.setInterval(30000);
}
void loop() {
if (EXTboard.shouldRun())EXTboard.run();
if (digitalRead(input_pin))shouldbeignored = false; getSomeInfo(); shouldbeignored = true;
}
void getSomeInfo() {
if (shouldbeignored) {
shouldbeignored = false;
} else {
mytime = millis();
digitalWrite(output_pin, LOW);
delay(500);
if (mySerial.available()) {
someData[0] = mySerial.parseInt(); someData[1] = mySerial.parseInt();
someData[2] = mySerial.parseInt(); someData[3] = mySerial.parseInt();
someData[4] = mySerial.parseInt();
}
sombodysId = someData[0], tempIn = someData[1], humIn = someData[2], tempOut = someData[3], humOut = someData[4];
shouldbeignored = false;
digitalWrite(output_pin, HIGH);
Serial.print(someData[0]);
Serial.print(' ');
Serial.print(someData[1]);
Serial.print(' ');
Serial.print(someData[2]);
Serial.print(' ');
Serial.print(someData[3]);
Serial.print(' ');
Serial.println(someData[4]);
}
}