Modell järnväg - DCC kommando Station genom att använda Arduino: (1 / 3 steg)
Steg 1: Arduino kod - kommando station med knappsats
Nu lagt 16 växlar kommando Station. Se instructable på valdeltagandet / poäng krets diagram med Arduino Mini Pro modul.
Den modifierade koden inklusive valdeltagandet kontroll är bifogat nedan.
Grundläggande tillbehör dekoder packet är:
0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1
Från att analysera paketet används av Lenz (kompakt / Atlas) för poäng kontroll, jag har använt följande binära paketformat för byte 1 och 2:
tunAddr = 1
Valdeltagandet 1a: 1000 0001 1111 1000 / valdeltagandet 1b: 1000 0001 1111 1001
Valdeltagandet 2a: 1000 0001 1111 1010 / valdeltagandet 2b: 1000 0001 1111 1011
Valdeltagandet 3a: 1000 0001 1111 1100 / valdeltagandet 3b: 1000 0001 1111 1101
Valdeltagandet 4a: 1000 0001 1111 1110 / valdeltagandet 4b: 1000 0001 1111 1111
tunAddr = 2
------------------------------------------------------------------------------------------------------------
Valdeltagandet 5a: 1000 0010 1111 1000 / valdeltagandet 5b: 1000 0010 1111 1001
Valdeltagandet 6a: 1000 0010 1111 1010 / valdeltagandet 6b: 1000 0010 1111 1011
Valdeltagandet 7a: 1000 0010 1111 1100 / valdeltagandet 7b: 1000 0010 1111 1101
Valdeltagandet 8a: 1000 0010 1111 1110 / valdeltagandet 8b: 1000 0010 1111 1111
-----------------------------------------------------------------------------------------------------------
Valdeltagandet 9a: 1000 0011 1111 1000 / valdeltagandet 9b: 1000 0011 1111 1001
osv...
Utdrag ur modifierade koden:
Tillsätt 2 mer "struct" meddelande uppdateringar
void amend_tun1 (struct Message & x)
{
x.data[0] = 0x81; tillbehör-avkodare 0x80 & adress 1
x.data[1] = 0;
}
void amend_tun2 (struct Message & x)
{x.data[0] = 0x82; / / tillbehör dekoder 0x80 & adress 2
x.data[1] = 0;
}
Lägg till nya tomrum för räls/växlar:
booleska read_turnout() {
Delay(20);
booleska changed_t = false;
get_key();
om (key_val > = 101 & & key_val < = 404 & & vända == 1) {
data = 0xf8; / = binär 1111 1000
amend_tun1(MSG[1]);
}
om (key_val > = 505 & & key_val < = 808 & & vända == 1) {
data = 0xf8; / = binär 1111 1000
amend_tun2(MSG[1]);
}
om (key_val == 101 & & vända == 1) {
om (tun1 == 1) {
data | = 0; T1a
changed_t = true;}
om (tun1 == 0) {
data | = 0x01; t1b
changed_t = true;}
}
om (key_val == 202 & & vända == 1) {
om (tun2 == 1) {
data | = 0x02; T2A
changed_t = sant;
}
om (tun2 == 0) {
data | = 0x03; t2b
changed_t = sant; }
}
om (key_val == 303 & & vända == 1) {
om (tun3 == 1) {
data | = 0x04; t3a
changed_t = sant;
}
om (tun3 == 0) {
data | = 0x05; t3b
changed_t = true;}
}
om (key_val == 404 & & vända == 1) {
om (tun4 == 1) {
data | = 0x06; t4a
changed_t = sant;
}
om (tun4 == 0) {
data | = 0x07; f4B
changed_t = true;}
}
om (key_val == 505 & & vända == 1) {
om (tun5 == 1) {
data | = 0; T5a
changed_t = sant;
}
om (tun5 == 0) {
data | = 0x01; t5b
changed_t = true;}
}
etc ......................