Hola. Nada de lo expresado en este hilo me terminaba de convencer.
Mis temores y los aspectos vertidos por KillerJC me dejaron pensando una semana y puse manos a obra (desde cero) y encontré en las Compuertas Lógicas una nueva respuesta que realmente; ahora me atrevo a decir que es “mi solución” y quería compartirla contigo.
Quiero contarte que podes conectar dos dispositivos Seriales con una la librería SoftwareSerial.h por medio de Compuertas Lógicas
Esta Interface está alimentada con un Cargador de Celular de 5Vcc 800mA
Te deseo lo mejor y espero que te sea de utilidad como lo ha sido en mi caso. Te mando un gran abrazo y cuidate mucho. COVID anda dando vueltas.
// 10/02/2021 Lectura/Escritura de 2 Bluetooth
// con PUERTAS LOGICAS (Inversor +/-, AND y OR)
// y una Interrupcion en el PIN D2
#include <SoftwareSerial.h>
SoftwareSerial Integrado(3,4);
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f,20,4);
String mensaje="";
int y=0;
void setup() {
Serial.begin(9600);
mensaje.reserve(15);
Integrado.begin(9600);
pinMode(2,INPUT); digitalWrite(2,LOW);
pinMode(3,INPUT);
pinMode(4,OUTPUT);
// Disparo del Dispositivo #2
pinMode(12,OUTPUT); digitalWrite(12,LOW);
// Pines 2y3 - LOW, HIGH , CHANGE, RISSING (->+) y FALINGH (+>-)
attachInterrupt(digitalPinToInterrupt(2),Segundo,CHANGE);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.home(),
lcd.setCursor(00,0); lcd.print("BTH y GATEs");
lcd.setCursor(00,1); lcd.print("L 2");
lcd.setCursor(00,2); lcd.print("L 3");
lcd.setCursor(00,3); lcd.print("L 4");
Serial.println("Comenzar");
}
void loop(){
if (Integrado.available()>0){
String mensaje="";
while(Integrado.available()){
char c=Integrado.read(); delay(10);
mensaje+=c;
}
Serial.println(mensaje);
lcd.setCursor(00,y); lcd.print(mensaje);
Integrado.println("Arduino: "+mensaje);
delay(250);
}
}
void Segundo(){
int valor=digitalRead(2);
if (!valor){digitalWrite(12,LOW); y=1;}else{digitalWrite(12,HIGH); y=2;}
}