Paso 1: Código de Arduino - estación de mando con teclado
Ahora ha añadido 16 desvíos para estación de mando. Ver instructivo en el séquito / puntos circuito diagrama utilizando el módulo Arduino Mini Pro.
El código modificado incluyendo el control de asistencia se adjunta a continuación.
Básico paquete decodificador de accesorios es:
10AAAAAA 0 0 1AAACDDD EEEEEEEE 0 1
De analizar el paquete utilizado por Lenz (compacto / Atlas) para puntos de control, he utilizado el siguiente formato de paquetes binarios para bytes 1 y 2:
tunAddr = 1
1a participación: 1000 0001 1111 1000 / participación 1b: 1000 0001 1111 1001
Participación 2a: 1000 0001 1111 1010 / participación 2b: 1000 0001 1111 1011
Séquito de la 3a: 1000 0001 1111 1100 / participación 3b: 1000 0001 1111 1101
Séquito de la 4a: 1000 0001 1111 1110 / participación 4b: 1000 0001 1111 1111
tunAddr = 2
------------------------------------------------------------------------------------------------------------
Participación 5a: 1000 0010 1111 1000 / participación 5b: 1000 0010 1111 1001
Séquito de la 6a: 1000 0010 1111 1010 / participación 6b: 1000 0010 1111 1011
Séquito de la 7a: 1000 0010 1111 1100 / desvío 7b: 1000 0010 1111 1101
Séquito de la 8a: 1000 0010 1111 1110 / participación 8b: 1000 0010 1111 1111
-----------------------------------------------------------------------------------------------------------
Séquito de la 9a: 1000 0011 1111 1000 / participación 9b: 1000 0011 1111 1001
etc....
Extracto de código modificado:
2 Añadir mensaje 'struct' más actualizaciones
void amend_tun1 (struct mensaje & x)
{
x.Data[0] = 0x81; decodificador de accesorios 0 x 80 y dirección 1
x.Data[1] = 0;
}
void amend_tun2 (struct mensaje & x)
{x.data[0] = 0x82; / / accesorios decodificador 0 x 80 y dirección 2
x.Data[1] = 0;
}
Añadir nuevo vacío para desvíos:
Boolean read_turnout() {}
Delay(20);
Boolean changed_t = false;
get_key();
Si (key_val > = 101 & & key_val < = 404 & & activar == 1) {}
datos = 0xf8; / / = 1111 1000 binario
amend_tun1(MSG[1]);
}
Si (key_val > = 505 & & key_val < = 808 & & activar == 1) {}
datos = 0xf8; / / = 1111 1000 binario
amend_tun2(MSG[1]);
}
Si (key_val == 101 & & activar == 1) {}
Si (tun1 == 1) {}
datos | = 0; T1a
changed_t = true;}
Si (tun1 == 0) {}
datos | = 0 x 01; T1b
changed_t = true;}
}
Si (key_val == 202 & & activar == 1) {}
Si (tun2 == 1) {}
datos | = 0 x 02; T2a
changed_t = true;
}
Si (tun2 == 0) {}
datos | = 0 x 03; T2b
changed_t = true; }
}
Si (key_val == 303 & & activar == 1) {}
Si (tun3 == 1) {}
datos | = 0 x 04; T3a
changed_t = true;
}
Si (tun3 == 0) {}
datos | = 0 x 05; T3B
changed_t = true;}
}
Si (key_val == 404 & & activar == 1) {}
Si (tun4 == 1) {}
datos | = 0 x 06; T4A
changed_t = true;
}
Si (tun4 == 0) {}
datos | = 0x07; F4B
changed_t = true;}
}
Si (key_val == 505 & & activar == 1) {}
Si (tun5 == 1) {}
datos | = 0; T5A
changed_t = true;
}
Si (tun5 == 0) {}
datos | = 0 x 01; T5b
changed_t = true;}
}
etc ......................