Hola,
uso SoftwareSerial porque mi objetivo es que este proyecto funcione en un Arduino Nano, y como el Nano no tiene HardwareSerial, emulo un serial por software, para que así el proyecto sea lo más parecido posible a mi objetivo final.
Con Serial1 también lo he probado, y el resultado es el mismo.
Ya les he pedido ayuda a los de Priority 1, estoy a la espera de que me contesten.
Código que he usado para probar con HardwareSerial en Arduino Mega 2560 (he comprobado la disponibilidad del Serie1 antes de cada acomunicación):
int newtag[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int data1 = 0;
unsigned long setime;
void setup(){
Serial.begin(9600); // start serial to PC
Serial1.begin(9600); // start serial to Serial1 reader
delay(10);
}
void loop(){
if (Serial1.available() > 0){
Serial.println("OK SD2");
//Serial1.print(F("SD2"));
Serial1.write(0x53);
Serial1.write(0x44);
Serial1.write(0x32);
Serial1.write(0x0d);//crn->carriage return (en decimal 13: Serial1.write(13))0x0d
delay(500);
}
else
Serial.println("KO SD2");
if (Serial1.available() > 0){
Serial.println("OK READ SD2");
Serial.println(Serial1.read());
delay(500);
}
else
Serial.println("KO READ SD2");
if (Serial1.available() > 0){
Serial.println("OK LTG");
//Serial1.print(F("LTG"));
Serial1.write(0x4c);
Serial1.write(0x54);
Serial1.write(0x47);
Serial1.write(0x0d);//crn->carriage return (en decimal 13: Serial1.write(13))
delay(500);
}
else
Serial.println("KO LTG");
if (Serial1.available() > 0){
Serial.println("OK READ LTG");
Serial.println(Serial1.read());
delay(500);
}
else
Serial.println("KO READ LTG");
if (Serial1.available() > 0){
Serial.println("OK RAT");
//Serial1.print("RAT");
Serial1.write(0x4d);
Serial1.write(0x4f);
Serial1.write(0x46);
Serial1.write(0x0d);
delay(500);
}
else
Serial.println("KO RAT");
if (Serial1.available() > 0){
Serial.println("OK READ RAT");
for (int z = 0 ; z < 15 ; z++) // read the rest of the tag
{
data1 = Serial1.read();
newtag[z] = data1;
Serial.print(data1);
}
Serial.println("");
Serial1.flush(); // stops multiple reads
}
else
Serial.println("KO READ RAT");
delay(1000);
}
Y me da el error de comando no entendido:
OK SD2
OK READ SD2
0
OK LTG
OK READ LTG
0
OK RAT
OK READ RAT
000000000000000
Lo único que se me ocurre probar mientras estoy a la espera de respuesta del fabricante, es alimentar el Arduino Mega 2560 con la misma fuente que la placa (transformador de 6v), por el pin VIN (creo que este es el de entrada), pero no sé si tendré algún conflicto al estar alimentado también por USB (para ver el monitor serie). En teoría esto no afecta para nada, pero no sé...