LOCODUINO

Aide
Forum de discussion
Dépôt GIT Locoduino
Flux RSS

mardi 19 mars 2024

Visiteurs connectés : 111

Un décodeur d’accessoires universel (2)

.
Par : Thierry

DIFFICULTÉ :

Après une revue théorique des capacités de la bibliothèque, passons à des travaux pratiques.

<

La bibliothèque

Le plus simple pour l’installer est de la télécharger. et d’utiliser l’option ’Add library’ (cette option là n’est pas traduite dans mon IDE 1.0 !) du menu ’Croquis/Importer Bibliothèque’ . Voir l’article idoine pour installer une bibliothèque.

Comme toutes les bibliothèques Arduino, les fichiers sont livrés et installés directement utilisables. Mais comme la mise au point d’un programme peut être fastidieuse, il y a des moyens pour chercher à comprendre ce qui ne marche pas.

Dans le fichier UniversalAccessoryDecoder.h de la bibliothèque, vous pouvez déclarer le DEBUG_MODE en retirant le // au début de la ligne #define DEBUG_MODE. Lorsque vous êtes en debug (déverminage en français franchouillard), c’est à dire lorsque vous en êtes encore à la phase de mise au point de votre programme, la bibliothèque envoie des infos sur son fonctionnement sur la console série, alors prenez garde de l’ouvrir. Elle est configurée par la librairie à 115200 Bauds.. Elle vérifie également que ce que vous demandez d’actionner existe bien, qu’il est bien déclaré (mauvais numéro de port, de broche Arduino) et sortira des messages d’erreur si quelque chose ne va pas. Une fois le programme au point, remettez les deux slash // devant la ligne pour enlever tous les tests et tous les messages sur la console. Cela rendra le programme bien plus rapide et moins encombrant. En mode debug, vous pouvez en plus activer DEBUG_VERBOSE_MODE qui est encore plus bavard, je dirais verbeux, et qui vous abreuvera d’informations plus fines et plus précises. Toujours en mode Debug, nouveauté 4.0, la led liée à la pin 13 de l’Arduino clignotera si un signal DCC est bien présent. Utile pour vérifier que votre petit montage DCC en amont marche bien...


////////////////////////////////////////////////////////
// Add a '//' at the beginning of the line to be in 
// release mode.
#define DEBUG_MODE

///////////////////////////////////////////////////////
// Verbose mode lets you see all actions done by the 
// library, but with a real flood of text to console...
// Has no effect if DEBUG_MODE is not activated.
//#define DEBUG_VERBOSE_MODE


Exemple ’Full’

Dans la bibliothèque sont livrés plusieurs exemples. Prenons-en un pour voir comment ça marche. Full est l’un des plus complets. Voici son schéma :

PNG - 96.7 kio

On veut piloter ce qui est présent dans la colonne de droite : deux servos et trois leds de couleur. Pour les commander individuellement, on doit leur donner à chacun des codes DCC.
Le premier servo sera commandé par un seul code DCC 316/0. Ce qui signifie que chaque fois que ce code sera utilisé, le servo changera d’état et basculera de sa position mini à sa position maxi ou l’inverse. Le port servo 0 sera utilisé avec la pin 2 de l’Arduino.
Le second servo dispose lui de quatre positions, commandées par quatre codes DCC : 314/0 314/1 pour les mini/maxi, et 315/0 315/1 pour les positions intermédiaires 45 et 135°. Le port servo 1 sera utilisé avec la pin 3 de l’Arduino.
Les leds sont commandées individuellement par les codes DCC 1/0 1/1 et 2/0. Les deux premières leds sont configurées pour du fading. Chaque led utilise un port moteur/lumière avec les pins 9 10 et 11.

Des groupes sont également définis en bas du graphique. Un premier groupe de servos à gauche pour les déplacer en séquence, avec deux codes DCC 320/0 et 320/1, chacun correspondant à des positions de chaque servo. Le mouvement non simultané est donné par un argument du constructeur du groupe, à voir plus bas. Puis le second groupe de leds qui utilise deux codes DCC 319/0 et 319/1 pour changer l’état des trois leds simultanément, comme pour un feu de signalisation.

Enfin tout ça est pilotable par le DCC, mais aussi par des boutons représentés par les ronds blancs tout à gauche. Un bouton, quelque soit sa forme, ne fait qu’envoyer un code DCC à la bibliothèque, comme si ce code avait été reçu via le Commander DCC. L’exception, parce qu’il en faut une, c’est le potentiomètre qui en plus donne sa position courante.
Le premier rond blanc en haut est un bouton poussoir connecté à la pin 26 de l’Arduino. Lorsqu’un poussoir est pressé, il passe de son code DCC actuel au suivant. Ici deux sont définis : 320/0 et 320/1, qui correspondent au groupe de servos.
Le deuxième est un switch connecté aux pins 24 et 25. Lorsque la pin 24 est activée par le switch, le code DCC 319/0 est envoyé. La pin 25 appelle le code 319/1. Il change donc l’état du groupe de leds.
Le potentiomètre n’est relié à rien dans cet exemple. Il envoie un code DCC 321/0 qui n’est pas attaché à un accessoire ou un groupe. C’est volontaire. Si l’on voulait par exemple déplacer le servo 2 selon la position du potentiomètre, il suffirait de mettre 314/0 ou 1, ou même 315/0 ou 1. Pour un potentiomètre, le code DCC ne sert qu’a identifier l’accessoire à déplacer. Ensuite un ordre de mouvement est directement envoyé à l’accessoire en utilisant la position courante du potentiomètre. Dans Full, cette valeur serait contredite par les ordres DCC et/ou les boutons. Ce qui bouge de manière continue avec une position quelconque n’est pas compatible avec des ordres fixes. Voilà pourquoi ce potentiomètre ne pointe vers rien. Il est là pour l’exemple...

La suite, pour comprendre le détail de ’full.ino’, dans le prochain article.

20 Messages

Réagissez à « Un décodeur d’accessoires universel (2) »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Bibliothèques »

Bibliothèque Accessories (1)

Bibliothèque Accessories (2)

Bibliothèque LcdUi (1)

Bibliothèque LcdUi (2)

La bibliothèque Servo

Bibliothèque SoftWare Serial

Bibliothèque Serial

Bibliothèque EEPROM

Bibliothèque Wire : I2C

Bibliothèque LCD

La bibliothèque ScheduleTable

Bibliothèque MemoryUsage

Bibliothèque EEPROMextent

La bibliothèque SlowMotionServo

Bibliothèque Commanders

Bibliothèque DCCpp

Bibliothèque DcDccNanoController

La bibliothèque ACAN (1)

La bibliothèque ACAN (2)

Bibliothèque LightEffect

Les derniers articles

Bibliothèque LightEffect


Christian

La bibliothèque ACAN (2)


Jean-Luc

La bibliothèque ACAN (1)


Jean-Luc

La bibliothèque SlowMotionServo


Jean-Luc

Bibliothèque DCCpp


Thierry

Bibliothèque DcDccNanoController


Thierry

Bibliothèque LcdUi (2)


Thierry

Bibliothèque LcdUi (1)


Thierry

Bibliothèque Accessories (2)


Thierry

Bibliothèque Accessories (1)


Thierry

Les articles les plus lus

Bibliothèque Wire : I2C

Bibliothèque SoftWare Serial

La bibliothèque Servo

Bibliothèque DcDccNanoController

Bibliothèque DCCpp

Bibliothèque LCD

Un décodeur d’accessoires universel (2)

Un décodeur d’accessoires universel (1)

Bibliothèque Commanders

Bibliothèque EEPROM