Railuino-MM2-Loco
Intro
Nous allons nous faire nos premiers tests de contrôle de locomotive.
Le plus simple c'est de commander la fonction d'éclairage... cela permet de s'assurer que:
- La communication est correcte pour Arduino + CanDIY + boitier 60133 + Rail + Loco
- Que l'adresse de la Loco est correcte.
- Qu'une fonction primaire est accessible... ne restera plus qu'à se lancer dans les autres exemples.
Montage
Choisissez votre Loco, nous avons opté pour la loco à l'adresse 2 (la grande).
Rassemblez votre matériel et faites vos branchements.
Branchez votre Arduino sur votre PC et démarrez l'environnement Arduino IDE (assurez vous d'avoir installé la bibliothèque Railuino.
Mettez votre boitier de connexion 60133 sous tension.
Et c'est parti!!!
Commander l'eclairage
Dans votre environnement Arduino, ouvrez l'exemple Fichier > Exemples > Railuino > Controller > Headlight
{{#Widget:Iframe |url=https://www.youtube.com/embed/u-vIOeDbB5o |width=420 |height=315 |border=0 }}
Nous avons repris l'exemple Railuino, ci-dessous, en ajoutant des commentaires en Français (pour vous aider)
/********************************************************************* * Railuino - Hackez votre Märklin * * Copyright (C) 2012 Joerg Pleumann * https://code.google.com/p/railuino/ * * Cet exemple est un logiciel libre; Vous pouvez le redistribuer et/ou * le modifier sous les termes de licence "Creative Commons Zero * version 1.0", tel que publié par par Creative Commons Organisation. * Cela place de fichier dans le domaine publique. * * Cet exemple est distribué dans l'espoir qu'il soit utile, * mais SANS AUCUNE GARANTIE; sans même la garantie implicite de * COMMERCIALISATION ou D'ADAPTATION À UN USAGE PARTICULIER. * Voyez le fichier LICENCE pour plus de détails. * * ---------------------------------------------------------------- * Tutoriel Railuino disponible en Français sur * http://mchobby.be/wiki/index.php?title=Railuino * * Traduction par MCHobby.be crédit sous CC-SA-BY pour l'effort de traduction * Translation by MCHobby.be credit under CC-SA-BY for translation effort * */ #include <Railuino.h> // Identification de la Locomotive en utilisant l'adressage MM2 (Motorola) // et en ajoutant le numéro d'identification de la machine (2) const word LOCO = ADDR_MM2 + 2; const word TIME = 2000; // déclaration d'un délai de 2 secondes const boolean DEBUG = true; // activer le débogage // Créer un contrôleur Railuino TrackController ctrl(0xdf24, DEBUG); void setup() { // établir une connexion avec le moniteur série d'Arduino IDE Serial.begin(115200); // Attendre l'établissement de la connexion while (!Serial); // Démarrer le contrôleur ctrl.begin(); Serial.println("Mise sous tension - Power on"); ctrl.setPower(true); } void loop() { byte b; Serial.println("Allumer - Lights on"); ctrl.setLocoFunction(LOCO, 0, 1); // mettre la fonction 0 a la valeur 1 // Interrogation de la fonction 0 de la Loco (si compatible) if (ctrl.getLocoFunction(LOCO, 0, &b)) { Serial.print("(Les lumieres sont "); Serial.println(b ? "allumees)" : "eteintes)"); } delay(TIME); // attentre Serial.println("Eteindre - Lights off"); ctrl.setLocoFunction(LOCO, 0, 0); // mettre la fonction 0 a la valeur 0 // Interrogation de la fonction 0 de la Loco (si compatible) if (ctrl.getLocoFunction(LOCO, 0, &b)) { Serial.print("(Les lumieres sont "); Serial.println(b ? "allumees)" : "eteintes)"); } delay(TIME); // attendre }
Indiquer le sens de marche (direction)
Voici un autre exemple, visant a modifier la direction de marche (et donc aussi l'éclairage avant/arrière) de la Loco en fonction du sens de marche.
Vous pouvez ouvrir l'exemple Fichier > Exemples > Railuino > Controller > Direction.
Attention: Ici, nous changeons le sens de marche. Pour que la Loco bouge, il faut également fixer la vitesse... mais cela sera pour plus tard :-)
/********************************************************************* * Railuino - Hackez votre Märklin * * Copyright (C) 2012 Joerg Pleumann * https://code.google.com/p/railuino/ * * Cet exemple est un logiciel libre; Vous pouvez le redistribuer et/ou * le modifier sous les termes de licence "Creative Commons Zero * version 1.0", tel que publié par par Creative Commons Organisation. * Cela place de fichier dans le domaine publique. * * Cet exemple est distribué dans l'espoir qu'il soit utile, * mais SANS AUCUNE GANRANTIE; sans même la garantie implicite de * COMMERCIALISATION ou D'ADAPTATION À UN USAGE PARTICULIER. * Voyez le fichier LICENSE pour plus de détails. * * ---------------------------------------------------------------- * Tutoriel Railuino disponible en Français sur * http://mchobby.be/wiki/index.php?title=Railuino * * Traduction par MCHobby.be crédit sous CC-SA-BY pour l'effort de traduction * Translation by MCHobby.be credit under CC-SA-BY for translation effort * */ #include <Railuino.h> // Identification de la Locomotive en utilisant l'adressage MM2 (Motorola) // et en ajoutant le numéro d'identification de la machine (2) const word LOCO = ADDR_MM2 + 2; const word TIME = 2000; const boolean DEBUG = true; // Créer un contrôleur Railuino TrackController ctrl(0xdf24, DEBUG); void setup() { // établir une connexion avec le moniteur série d'Arduino IDE Serial.begin(115200); // Attendre l'établissement de la connexion while (!Serial); // Démarrer le contrôleur ctrl.begin(); Serial.println("Mise sous tension - Power on"); ctrl.setPower(true); Serial.println("Allumer les feux"); ctrl.setLocoFunction(LOCO, 0, 1); // Les feux sont identifiés par la fonction 0 } void loop() { byte b; Serial.println("Marche avant - Direction forward"); ctrl.setLocoDirection(LOCO, DIR_FORWARD); // Interrogation de la direction de la Loco (si compatible) if (ctrl.getLocoDirection(LOCO, &b)) { Serial.print("(La marche est "); Serial.println(b == DIR_FORWARD ? "avant - forward)" : "arriere- reverse)"); } //Faire une pause de 2 secondes delay(TIME); Serial.println("Marche arriere - Direction reverse"); ctrl.setLocoDirection(LOCO, DIR_REVERSE); if (ctrl.getLocoDirection(LOCO, &b)) { Serial.print("(La marche est "); Serial.println(b == DIR_FORWARD ? "avant - forward)" : "arriere - reverse)"); } // Faire une pause de 2 secondes delay(TIME); }
Direction + vitesse = déplacement
L'exemple ci-dessous fixe le sens de marche et la vitesse... la Loco se met donc en mouvement. Prenez 3 longueurs de rails... nous déplacerons la loco à vitesse réduite pendant 5 secondes.
Vous pouvez ouvrir l'exemple Fichier > Exemples > Railuino > Controller > Speed.
Note: sur la vidéo ci-dessous, nous avons légèrement modifié le programme pour avoir le temps de téléverser (ou faire un reste) et de démarrer la vidéo
{{#Widget:Iframe |url=https://www.youtube.com/embed/Y7nkyNU8Bt4 |width=420 |height=315 |border=0 }}
/********************************************************************* * Railuino - Hackez votre Märklin * * Copyright (C) 2012 Joerg Pleumann * https://code.google.com/p/railuino/ * * Cet exemple est un logiciel libre; Vous pouvez le redistribuer et/ou * le modifier sous les termes de licence "Creative Commons Zero * version 1.0", tel que publié par par Creative Commons Organisation. * Cela place de fichier dans le domaine publique. * * Cet exemple est distribué dans l'espoir qu'il soit utile, * mais SANS AUCUNE GANRANTIE; sans même la garantie implicite de * COMMERCIALISATION ou D'ADAPTATION À UN USAGE PARTICULIER. * Voyez le fichier LICENSE pour plus de détails. * * ---------------------------------------------------------------- * Tutoriel Railuino disponible en Français sur * http://mchobby.be/wiki/index.php?title=Railuino * * Traduction par MCHobby.be crédit sous CC-SA-BY pour l'effort de traduction * Translation by MCHobby.be credit under CC-SA-BY for translation effort * */ #include <Railuino.h> // Identification de la Locomotive en utilisant l'adressage MM2 (Motorola) // et en ajoutant le numéro d'identification de la machine (2) const word LOCO = ADDR_MM2 + 2; // Definir la vitesse (valeur valide de 0 à 1023, toute valeur supérieure à 1000 est ramenée à 1000). const word SPEED = 100; const word TIME = 5000; // Définition du temps de circulation const boolean DEBUG = true; // Créer un controleur Railuino TrackController ctrl(0xdf24, DEBUG); void setup() { // établir une connexion avec le moniteur série d'Arduino IDE Serial.begin(115200); // Attendre l'établissement de la connexion while (!Serial); // Démarrer le contrôleur ctrl.begin(); Serial.println("Mise sous tension - Power on"); ctrl.setPower(true); Serial.println("Allumer les feux"); ctrl.setLocoFunction(LOCO, 0, 1); // Les feux sont identifiés par la fonction 0 Serial.println("Marche avant - forward"); ctrl.setLocoDirection(LOCO, DIR_FORWARD); } void loop() { word speed; Serial.print("Assigner la vitesse à "); Serial.println(SPEED); ctrl.setLocoSpeed(LOCO, SPEED); // Interrogation de la vitesse de la Loco (si compatible) if (ctrl.getLocoSpeed(LOCO, &speed)) { Serial.print("(La vitesse est de "); Serial.print(speed, DEC); Serial.println(")"); } delay(TIME); // Attendre Serial.println("Stop"); ctrl.setLocoSpeed(LOCO, 0); if (ctrl.getLocoSpeed(LOCO, &speed)) { Serial.print("(Speed is "); Serial.print(speed, DEC); Serial.println(")"); } Serial.println("Systeme stoppé. Vous devez faire un reset pour recommencer."); for (;;); }
Documentation réalisée par Meurisse D. pour MCHobby.be.
Source: Projet Railuino de Joerg Pleumann, CanDIY Shield de Watterott.
Traduction et documentation réalisées avec l'autorisation expresse de Joerg Pleumann et Stephan Watterott - Documentation and translation built with authorization of Joerg Pleumann and Stephan Watterott.
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.