Soy nuevo en este sitio, pero tengo un problema y es posible que pueda ayudarme. Tengo un grupo de autos que habla y escucha una línea serial de 0V / + 12V. Mi objetivo es enviar algunos comandos adicionales al grupo de instrumentos. Estoy usando el Serial2 de MEGA para esto y Serial para monitorear toda la red.
El problema es que tengo que esperar que la línea quede inactiva / silenciosa para que mi mensaje no interrumpa ninguna otra línea enviada por otros dispositivos en la red.
Tengo esto hasta ahora:
#define Kbus Serial2
#define get_Kbus_data serialEvent2
#define Kbus_rx 17
#define Kbus_tx 16
byte Kdata;
uint8_t left_blinker[10]={0xD0, 0x08, 0xBF, 0x5B, 0x20, 0x00, 0x04, 0x00, 0x00, 0x18};
int time_Kbus;
void setup()
{
pinMode(Kbus_rx,INPUT_PULLUP);
pinMode(Kbus_tx,OUTPUT);
Serial.begin(9600, SERIAL_8E1);
Kbus.begin(9600, SERIAL_8E1);
}
void loop()
{
if(millis()- time_Kbus > 1 ) Kbus.write(left_blinker, sizeof(left_blinker));
}
void get_Kbus_data()
{
Kdata = Kbus.read();
Serial.println(Kdata,HEX);
// Serial.write(Kdata);
time_Kbus = millis();
}
Estoy usando dos optoaisladores para obtener las señales correctas de 0V / + 12V.
Estoy usando 4N35 optos y un 2N3904 como Q1
He notado una cosa al trabajar con esto. El Arduino no envía los ceros iniciales de, como 0x08 sale como > 8 así que tal vez el extremo receptor no lo reconoce ?!
Puedo leer la línea usando este circuito y otro código, pero no he probado el lado del "remitente".
Creo que esto es todo lo que tengo.
ACTUALIZACIÓN # 1 = Falta la unión entre los dos optos y la línea GND corregida.