Stap 1: Arduino code - opdracht station met toetsenbord
Nu 16 wissels aan opdracht Station toegevoegd. Zie instructable op de opkomst / punten circuit diagram met behulp van de Arduino Mini Pro module.
De gewijzigde code met inbegrip van opkomst controle is die hieronder zijn toegevoegd.
Fundamentele accessoire decoder packet is:
0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1
Uit de analyse van het pakket gebruikt door Lenz (Compact / Atlas) voor controle van de punten, ik heb de volgende binaire pakketindeling gebruikt voor bytes 1 en 2:
tunAddr = 1
Opkomst 1a: 1000 0001 1111 1000 / opkomst 1b: 1000 0001 1111 1001
Opkomst 2a: 1000 0001 1111 1010 / opkomst 2b: 1000 0001 1111 1011
Opkomst 3a: 1000 0001 1111 1100 / opkomst 3b: 1000 0001 1111 1101
Opkomst 4a: 1000 0001 1111 1110 / opkomst 4b: 1000 0001 1111 1111
tunAddr = 2
------------------------------------------------------------------------------------------------------------
Opkomst 5a: 1000 0010 1111 1000 / opkomst 5b: 1000 0010 1111 1001
Opkomst 6a: 1000 0010 1111 1010 / opkomst 6b: 1000 0010 1111 1011
Opkomst 7a: 1000 0010 1111 1100 / opkomst 7b: 1000 0010 1111 1101
Opkomst 8a: 1000 0010 1111 1110 / opkomst 8b: 1000 0010 1111 1111
-----------------------------------------------------------------------------------------------------------
Opkomst 9a: 1000 0011 1111 1000 / opkomst 9b: 1000 0011 1111 1001
enz...
Uittreksel uit de gewijzigde code:
Toevoegen 2 meer 'struct' bericht bijgewerkt
VOID amend_tun1 (struct bericht & x)
{
x.data[0] = 0x81; accessoire decoder 0x80 & adres 1
x.data[1] = 0;
}
VOID amend_tun2 (struct bericht & x)
{x.data[0] = 0x82; / / accessoire decoder 0x80 & adres 2
x.data[1] = 0;
}
Toevoegen nieuwe leegte voor wissels:
Booleaanse read_turnout() {}
vertraging(20);
Boole changed_t = false;
get_key();
Als (key_val > = 101 & & key_val < = 404 & & zet == 1) {}
gegevens = 0xf8; / / = binaire 1111 1000
amend_tun1(msg[1]);
}
Als (key_val > = 505 & & key_val < = 808 & & zet == 1) {}
gegevens = 0xf8; / / = binaire 1111 1000
amend_tun2(msg[1]);
}
Als (key_val == 101 & & zet == 1) {}
Als (tun1 == 1) {}
gegevens | = 0; t1a
changed_t = true;}
Als (tun1 == 0) {}
gegevens | = 0x01; T1b
changed_t = true;}
}
Als (key_val == 202 & & zet == 1) {}
Als (tun2 == 1) {}
gegevens | = 0x02; T2a
changed_t = true;
}
Als (tun2 == 0) {}
gegevens | = 0x03; T2B
changed_t = true; }
}
Als (key_val == 303 & & zet == 1) {}
Als (tun3 == 1) {}
gegevens | = 0x04; T3a
changed_t = true;
}
Als (tun3 == 0) {}
gegevens | = 0x05; t3b
changed_t = true;}
}
Als (key_val == 404 & & zet == 1) {}
Als (tun4 == 1) {}
gegevens | = 0x06; T4a
changed_t = true;
}
Als (tun4 == 0) {}
gegevens | = 0x07; f4b
changed_t = true;}
}
Als (key_val == 505 & & zet == 1) {}
Als (tun5 == 1) {}
gegevens | = 0; t5a
changed_t = true;
}
Als (tun5 == 0) {}
gegevens | = 0x01; t5b
changed_t = true;}
}
etc ......................