Hola
Pues al final voy a empezar a hacer unas pequeñas pruebas conectado el receptor al PC. En principio simplemente quiero probar a conectarlos y que comuniquen correctamente estando conectado cada uno a un puerto serie del arduino (puerto hardware / puerto software).
Receptor => Puerto Serie Soft (rx) => Puerto Serie Hard (tx) => PC
PC => Puerto Serie Hard (rx) => Puerto Serie Soft (tx) => Receptor
En principio creo ;D :

que la comunicación empieza desde el receptor que hace una petición al programa del PC. Suponiendo que esto es así, he conseguido apañar el siguiente código de un par de ejemplos de las referencias de arduino.
#define bit9600Delay 84
#define halfBit9600Delay 42
byte rx = 6;
byte tx = 7;
byte SWval;
byte incomingByte;
void setup()
{
Serial.begin(9600); // abre el puerto serie, y le asigna la velocidad de 9600 bps
pinMode(rx,INPUT);
pinMode(tx,OUTPUT);
digitalWrite(tx,HIGH);
}
void SWprint(int data)
{
byte mask;
//startbit
digitalWrite(tx,LOW);
delayMicroseconds(bit9600Delay);
for (mask = 0x01; mask>0; mask <<= 1) {
if (data & mask){ // choose bit
digitalWrite(tx,HIGH); // send 1
}
else{
digitalWrite(tx,LOW); // send 0
}
delayMicroseconds(bit9600Delay);
}
//stop bit
digitalWrite(tx, HIGH);
delayMicroseconds(bit9600Delay);
}
int SWread()
{
byte val = 0;
while (digitalRead(rx));
//wait for start bit
if (digitalRead(rx) == LOW) {
delayMicroseconds(halfBit9600Delay);
for (int offset = 0; offset < 8; offset++) {
delayMicroseconds(bit9600Delay);
val |= digitalRead(rx) << offset;
}
//wait for stop bit + extra
delayMicroseconds(bit9600Delay);
delayMicroseconds(bit9600Delay);
return val;
}
}
void loop()
{
SWval = SWread();
// AQUI ES DONDE LUEGO TRABAJARÍA EL SWval PARA LIMPIARLO
Serial.print(SWval);
// envía datos sólo si los recibe:
if (Serial.available() > 0)
{
// lee el byte de entrada:
incomingByte = Serial.read();
SWprint(incomingByte);
}
SWprint(SWval);
}
Estaría bien el código ¿?. En principio lo he compilado y no da error, pero me gustaría alguna opinión más autorizada antes de conectar la historia.
Lo único que pretendo hacer es leer por el puerto serie soft lo que viene del receptor, pasarlo por el puerto serie hard al PC, esperar la respuesta de este por el mismo puerto hard y mandarla al receptor por el puerto serie soft.
Despúes ya sería cuestión de trabajarse la señal.
El arduino iria conectado al receptor mediante un cable nokia que ya he usado en un par de montajes para convertir la señal TTL a rs232.
Se agradece enormemente cualquier comentario.
Saludos y suerte.