Hola a todos, Tengo un Arduino mega embed con el que quiero sincronizar con un iPad, la cuestión es que el mismo código, probado con un Arduino UNO me funciona correctamente (envía y recibe), pero al poner lo mismo en mega no funciona correctamente, lo curioso es que envía los datos del Arduino al iPad, pero no envía los datos del iPad al Arduino, e probado obteniendo los voltajes del Arduino UNO, obteniendo los voltajes de Arduino mega y cambiando los pines de mega, siempre me hace lo mismo, con Arduino UNO funciona perfectamente y con mega no deja enviar los datos del iPad al Arduino
Os dejo un código simple con el que hago las pruebas
#include <SoftwareSerial.h>
char *s;
SoftwareSerial miBT(9,11);
//Funciona 9-11
String stringDataBluetooh;
void setup() {
Serial.begin(9600);
miBT.begin(38400);
}
void loop() {
if (Serial.available()) {
miBT.write(Serial.read());
Serial.println("Entra");
}
stringDataBluetooh = "";
if (miBT.available()) {
while (miBT.available()) {
char character = miBT.read();
stringDataBluetooh.concat(character);
delay(5);
}
Serial.print("Lectura Bluetooh: ");
Serial.println(stringDataBluetooh);
}
delay(1000);
String strData = "rt_1t_" + String(random(0,90)) +"_41_42_";
Serial.println(strData);
sendToTheApp(strData);
}
// Envia los datos a la app
void sendToTheApp(String str) {
int numberData = str.length();
int i = 0;
while (i <= numberData) {
char oneLetter = str[i];
miBT.write(oneLetter);
i++;
}
}
Acaso Arduino mega tiene pines en concreto para la recepción de datos?, ya se me acabaron las ideas para comprobar que le ocurre, así que cualquier comentario es de agredecer, un saludo
Hola de nuevo, e estado buscando información acerca de lo que me comentas de los 4 puertos seriales y ahora lo entiendo, no hay que poner ningún puerto, tan solo escribiendo "Serial1" o "Serial2" ya obtengo los datos de esos pines, algo que no comprendía, dejo mi código de pruebas porque creo que a mas de una persona le va a pasar lo mismo, y más si está empezando
Os comento el problema que tengo en mi caso y como lo e solucionado (seguramente no sea la mejor solución pero a mi me sirve), encima de la placa Arduino embude tengo una placa de pruebas con resistencias terminales soldados, y tan solo tengo la fila impar soldada (ya que no tengo espacio y me sobran pines) así que e tenido que hacer la transmisión por el SoftwareSerial y la recepción por Serial3
#include <SoftwareSerial.h>
char *s;
SoftwareSerial miBT(9,11);
//Funciona 9-11
String stringDataBluetooh;
void setup() {
Serial.begin(9600);
Serial3.begin(38400);
miBT.begin(38400);
}
void loop() {
stringDataBluetooh = "";
if (Serial3.available()) {
while (Serial3.available()) {
char character = Serial3.read();
stringDataBluetooh.concat(character);
delay(5);
}
Serial.print("Lectura Bluetooh: ");
Serial.println(stringDataBluetooh);
}
delay(1000);
String strData = "rt_1t_" + String(random(0,90)) +"_41_42_";
Serial.println(strData);
sendToTheApp(strData);
}
// Envia los datos a la app
void sendToTheApp(String str) {
int numberData = str.length();
int i = 0;
while (i <= numberData) {
char oneLetter = str[i];
miBT.write(oneLetter);
i++;
}
}
Ya os comento que es un código de pruebas
Un saludo!