Railuino-MM2-Loco

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

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:

  1. La communication est correcte pour Arduino + CanDIY + boitier 60133 + Rail + Loco
  2. Que l'adresse de la Loco est correcte.
  3. 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).

Materiel-Marklin-Loco.jpg

Rassemblez votre matériel et faites vos branchements.

Railuino-Brancher-02.jpg

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.