Étape 1: Code Arduino - station de commande avec clavier
Maintenant ajouté 16 branchements au poste de commande. Voir instructable sur le taux de participation / points de circuit diagramme à l’aide du module Arduino Mini Pro.
Le code modifié, y compris le contrôle du taux de participation est joint ci-dessous.
Paquet de décodeur base accessoire est :
10AAAAAA 0 1AAACDDD 0 ELAYAR 0 1
D’analyser les paquets utilisé par Lenz (Compact / Atlas) pour les points de contrôle, j’ai utilisé le format de paquet binaire suivant pour octets 1 et 2 :
tunAddr = 1
Taux de participation 1 a: 1000 0001 1111 1000 / 1 b taux de participation : 1000 0001 1111 1001
Branchement 2 a: 1000 0001 1111 1010 / 2 b taux de participation : 1000 0001 1111 1011
Branchement 3 a: 1000 0001 1111 1100 / branchement 3 b: 1000 0001 1111 1101
Branchement 4 a: 1000 0001 1111 1110 / participation 4 b: 1000 0001 1111 1111
tunAddr = 2
------------------------------------------------------------------------------------------------------------
Taux de participation 5 a: 1000 1000 de 1111 0010 / participation 5 b: 1000 1001 de 1111 0010
Branchement 6 a: 1000 1010 de 1111 0010 / 6 b taux de participation : 1000 0010 1111 1011
Taux de participation 7 a: 1000 1100 de 1111 0010 / 7 b taux de participation : 1000 1101 de 1111 0010
Taux de participation 8 a: 1000 0010 1111 1110 / 8 b taux de participation : 1000 0010 1111 1111
-----------------------------------------------------------------------------------------------------------
Taux de participation 9 a: 1000 0011 1111 1000 / 9 b taux de participation : 1000 0011 1111 1001
etc....
Extrait de code modifié :
2 ajouter plus de message "struct" mises à jour
void amend_tun1 (struct Message & x)
{
x.Data[0] = 0 x 81 ; décodeur accessoire 0 x 80 & adresse 1
x.Data[1] = 0 ;
}
void amend_tun2 (struct Message & x)
{x.data[0] = 0 x 82; / / accessoires décodeur 0 x 80 & adresse 2
x.Data[1] = 0 ;
}
Ajouter nouveau vide des branchements :
Boolean read_turnout() {}
Delay(20) ;
changed_t booléen = false ;
get_Key() ;
Si (key_val > = 101 & & key_val < = 404 & & tourner == 1) {}
données = 0xf8 ; / / = 1111 1000 binaire
amend_tun1(MSG[1]) ;
}
Si (key_val > = 505 & & key_val < = 808 & & tourner == 1) {}
données = 0xf8 ; / / = 1111 1000 binaire
amend_tun2(MSG[1]) ;
}
Si (key_val == 101 & & tourner == 1) {}
Si (tun1 == 1) {}
données | = 0 ; T1A
changed_t = true;}
Si (tun1 == 0) {}
données | = 0 x 01 ; T1B
changed_t = true;}
}
Si (key_val == 202 & & tourner == 1) {}
Si (tun2 == 1) {}
données | = 0 x 02 ; T2A
changed_t = true ;
}
Si (tun2 == 0) {}
données | = 0 x 03 ; T2b
changed_t = true ; }
}
Si (key_val == 303 & & tourner == 1) {}
Si (tun3 == 1) {}
données | = 0 x 04 ; T3A
changed_t = true ;
}
Si (tun3 == 0) {}
données | = 0 x 05 ; T3B
changed_t = true;}
}
Si (key_val == 404 & & tourner == 1) {}
Si (tun4 == 1) {}
données | = 0 x 06 ; T4A
changed_t = true ;
}
Si (tun4 == 0) {}
données | = 0 x 07 ; F4B
changed_t = true;}
}
Si (key_val == 505 & & tourner == 1) {}
Si (tun5 == 1) {}
données | = 0 ; T5A
changed_t = true ;
}
Si (tun5 == 0) {}
données | = 0 x 01 ; T5B
changed_t = true;}
}
etc ......................