Messages récents

Pages: [1] 2 3 ... 10
1
Vos projets / Re : Re : TCO arduino Xpressnet
« Dernier message par patrick le Aujourd'hui à 04:10:51 pm »
pour moi les projets arduino étant libre

Salut,

Le design de l'Arduino est "Open Hardware", signifiant que l'on peut le reprendre, le modifier, l'utiliser, etc... Par contre, le contenu n'est pas soumis aux mêmes règles. La communauté autour d'Arduino a tendance à donner librement le code, mais ce n'est pas pour autant "Open Source". C'est une idée reçue qui a la vie dure. Si tu développes un programme et tu veux le vendre, libre à toi. De même si tu trouves du code et que tu veux le réutiliser dans un produit commercial, ce n'est pas garanti que tu en as le droit. Tout dépend de chaque développeur.

Patrick
2
Vos projets / Re : TCO arduino Xpressnet
« Dernier message par sam95 le Aujourd'hui à 02:07:07 pm »
OK je ne pensais pas à mal, pour moi les projets arduino étant libre je ne voyais pas de problèmes d'en parler ici ou là. Surtout que l'UAICF n'a pas de forum.

Si cela pose problème un modo peut supprimer le sujet .
3
Bonjour,

Je découvre le chapitre n°4 du gestionnaire en C++, déposé le 14 janvier, merci et bravo.

Suivant votre production avec assiduité, étant au chapitre 3 je m'en vais dévorer ce nouveau document.

Dire que je maîtrise totalement le contenu de vos exposés serait assez loin de la vérité, je suis un peu boa à digestion lente ... mais je me soigne ;-)

Vos articles, et tous les autres, disponibles tant sur le site que sur le forum sont vraiment très structurants et d'une qualité technique inégalée, soyez en tous remerciés, et félicités.

Bonne année à tous.

Cordialement
4
Vos projets / Re : TCO arduino Xpressnet
« Dernier message par DDEFF le janvier 16, 2017, 11:46:49 am »
Citer
De plus puis-je brancher de VCCin de 12v et en même temps la prise USB sur l'arduino mega ?

Je pense que c'est une mauvaise idée d'avoir deux alimentations !
Voir aussi :
http://www.locoduino.org/spip.php?article16

C'est une situation assez étrange de demander à Locoduino de déplomber un programme de l'UAICF de Vauzelles  ???


5
Vos projets / Re : TCO arduino Xpressnet
« Dernier message par sam95 le janvier 16, 2017, 11:19:55 am »
Bonjour,

Pour le moment je n'ai cablé aucun switch sur mon arduino, j'ai juste branché la liaison avec la centrale et selon la doc je devrais avoir dans la console série un affichage de l'état de centrale = 0. Hors moi j'ai 255, qui veut dire qu'il n'y a pas de communication avec la centrale.

J'ai regardé le code et j'ai l'impression qu'il se sert de l'alimentation via la centrale et le cable RJ11 pour contrôler l'état de la communication, hors pour le moment je n'ai pas branché cette alim sur l'arduino. Pensez-vous que ça puisse être cela ?

**************************************************//
                //                                                  //
                //         Programme pour réaliser le TCO           //
                //                du pupitre DEMO                   //
                //          avec carte Arduino MEGA 2560            //
                //                                                  //
                //         TCO pour module Demo Aiguillage          //
                //                                                  //
                //             UAICF Nevers-Vauzelles               //
                //          http://modelisme58.free.fr              //
                //                                                  //
                //            Novembre 2015 - Vers 1.3              //
                //                                                  //
                //**************************************************//

//-------------------------------------------------------------------------
// Bibliothèques nécessaires

//----------------------------------------------------------------------------
#include <XpressNet.h>
XpressNetClass XpressNet;

#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  #define SerialDEBUG 1  //For Serial Port Debugging (Arduino Mega only)
#endif

#if SerialDEBUG
  #include <SoftwareSerial.h>
  SoftwareSerial Debug(0, 1); // RX, TX - Mettre sur 0 et 1 pour MEGA 2560
#endif

//-------------------------------------------------------------------------
// /|\ Variables à modifier ----------------------------------------------- /|\
// Définition des adresses des aiguillages et entrées utilisés sur la carte Arduino MEGA

int Aig[]          = { 0,14,14,13,13,28,28,29,27,12,11};  // Adresse DCC des aiguillages
int Bt[]           = {23,25,27,29,31,33,35,37,39,41,43};  // Bornes de la carte ARDUINO

int NbreBoutons = 0;        // Nbre total de boutons
int NbrePoussoirs = 3;         // Nbre d'aiguillages commandés par Bouton Poussoir
int NbreLevier = 4;            // Nbre d'aiguillages commandés par Bouton Levier

#define XNetAddress 15        // Adresse de la souris XpressNet : 2 souris Xpressnet ne pourront pas avoir la même adresse
                              // Valeur entre 1 et 31

// /|\ Fin des variables à modifier --------------------------------------- /|\
//-------------------------------------------------------------------------

//-------------------------------------------------------------------------
// Définition des variables et constantes

int BtEtat[100] ; 
int BtEtatAncien[100] ;

byte Led = 13;
int DCCEtat;
long previousMillis = 0;

#define XNetSRPin 3       // Max485 Bus du driver relié à la borne de l'Arduino

//-------------------------------------------------------------------------
// Initialisation du programme
void setup() {               

  delay(1000);

  NbreBoutons = NbrePoussoirs + NbrePoussoirs + NbreLevier + 1;
 
for (int i=0; i < NbreBoutons; i++)
{
  BtEtat[i] = 2;
  BtEtatAncien[i] = 1;
  pinMode(Bt[i], INPUT_PULLUP);
}
  pinMode(Led, OUTPUT);
 
  delay(100);
 
  Serial.begin(9600);
  Serial.println("UAICF Nevers-Vauzelles - http://modelisme58.free.fr");
  Serial.println("Octobre 2015 - Vers 1.2");

  XpressNet.start(XNetAddress, XNetSRPin);
  XpressNet.setPower(csNormal);

  Serial.print("  --> Etat Centrale DCC = ");
  Serial.println(XpressNet.getPower());
  Serial.println("");
 
  for (int i=0; i < NbreBoutons; i++)
    {
    BtEtat[i] = digitalRead(Bt[i]);
    Serial.print(" Borne Arduino : "); Serial.print(Bt[i]); Serial.print(" | Etat = "); Serial.println(BtEtat[i]);
    delay (10);
    }

  XpressNet.receive();
 
  Serial.println("--- Initialisation des positions des Aiguillages avec bouton a levier uniquement ---");
  // Uniquement pour les aiguillages commandés par un bouton à levier 
  for (int i = NbrePoussoirs*2 +1; i < NbrePoussoirs*2 + NbreLevier +1; i++)
    {
    if (BtEtat[i] != BtEtatAncien[i])
      {
        Serial.print("   Aiguillage ayant l'adresse DCC "); Serial.print(Aig[i]);
        Serial.print(" (Borne "); Serial.print(Bt[i]);
        BtEtatAncien[i] = BtEtat[i] ;
        XpressNet.setTrntPos (0x0, Aig[i]-1, BtEtat[i] );
        delay (200);
        XpressNet.setTrntPos (0x0, Aig[i]-1, BtEtat[i] );
        delay (750);
      }
    }
  Serial.println("--- Fin Initialisation des positions des Aiguillages ---");
  Serial.println("--- Fin initialisation du programme ---");   Serial.println(" ");
  digitalWrite(Led, HIGH);

}

//-------------------------------------------------------------------------
// Programme fonctionnant en boucle

void loop() {

  // Récupére l'état des entrées 
  for (int i=0; i < NbreBoutons; i++)
    {
    BtEtat[i] = digitalRead(Bt[i]);
    delay (1);
    }

  XpressNet.receive();

  unsigned long currentMillis = millis();

  // --- Commande pour Arret d'Urgence --------------------------------------------

  if (BtEtat[0] == 0 && DCCEtat == 0)
      {
      XpressNet.setHalt();
      delay (500);
      if (DCCEtat == 0)
          {
          digitalWrite(Led, LOW);
          Serial.println(" ");
          Serial.println(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ");
          Serial.println(" !!! --- Arret d'Urgence --- !!! ");
          delay (1000);
          previousMillis = currentMillis;
          }
      }

  if (BtEtat[0] == 0 && DCCEtat > 0 && (currentMillis - previousMillis > 5000) )
      {
      XpressNet.setPower(csNormal);
      delay (500);
      if (DCCEtat > 0)
        {
        digitalWrite(Led, HIGH);
        Serial.println(" ");
        Serial.println(" --- DCC Ok --- ");
        previousMillis = currentMillis;
        }
      }

  // Envoie de la commande DCC pour accessoires si changement de l'état des entrées 

if (DCCEtat ==0)  // Si pas d'arrêt d'urgence d'enclenché
{
  // --- Commande pour Boutons à levier --------------------------------------------
  for (int i = NbrePoussoirs*2 +1; i < NbrePoussoirs*2 + NbreLevier +1; i++)
    {
    if (BtEtat[i] != BtEtatAncien[i])
      {
        Serial.print("Aiguillage ayant l'adresse DCC "); Serial.print(Aig[i]);
        Serial.print(" (Arduino "); Serial.print(Bt[i]);
        BtEtatAncien[i] = BtEtat[i] ;
        XpressNet.setTrntPos (0x0, Aig[i]-1, BtEtat[i] );
        delay (10);
      }
    }
   

  // --- Commande pour Boutons Poussoirs --------------------------------------------
  // Commande Position 1
  for (int i=1; i < NbrePoussoirs*2 +1; i=i+2)
    {
    if (BtEtat[i] != BtEtatAncien[i] && BtEtat[i] == 0 && BtEtat[i+1] == 1)
      {
        Serial.print("Aiguillage ayant l'adresse DCC "); Serial.print(Aig[i]);
        Serial.print(" (Arduino "); Serial.print(Bt[i]);
        BtEtatAncien[i] = 0;
        BtEtatAncien[i+1] = 1;
        XpressNet.setTrntPos (0x0, Aig[i]-1, 0 );
        delay (1);
      }
    }
   
  // Commande Position 2
  for (int i=2; i < NbrePoussoirs*2 +2; i=i+2)
    {
    if (BtEtat[i] != BtEtatAncien[i] && BtEtat[i] == 0 && BtEtat[i-1] == 1)
      {
        Serial.print("Aiguillage ayant l'adresse DCC "); Serial.print(Aig[i]);
        Serial.print(" (Arduino "); Serial.print(Bt[i]);
        BtEtatAncien[i] = 0;
        BtEtatAncien[i-1] = 1;
        XpressNet.setTrntPos (0x0, Aig[i]-1, 1 );
        delay (10);
      }
    }
}
  // Fin de l'envoi de la commande DCC pour accessoires si changement de l'état des entrées 

}
//-------------------------------------------------------------------------
// Message pour débogage

void notifyTrnt(uint8_t Adr_High, uint8_t Adr_Low, uint8_t Pos)
{
  Serial.print(") ---> Position = ");
  Serial.println(Pos, DEC);
}

//-------------------------------------------------------------------------
void notifyXNetPower (uint8_t State)
{
  Serial.print("  --> Etat Centrale DCC = ");
  Serial.println(State, HEX);
  DCCEtat = State;
 
}


Je ne peux pas tester avant demain soir c'est pour cela que je demande.
De plus puis-je brancher de VCCin de 12v et en même temps la prise USB sur l'arduino mega ?
6
Débuter / Débuter facilement avec Arduino
« Dernier message par Dominique le janvier 15, 2017, 05:14:36 pm »
Bonjour à tous, actuels et futurs Locoduinistes  :D

Il arrive de plus en plus fréquemment (c'est la rançon du succès  8)) que certains amateurs modélistes entreprennent de réaliser un projet trouvé sur Locoduino, alors qu'ils n'ont pas les bases suffisantes pour programmer leur Arduino, installer une bibliothèque manquante et surtout respecter la syntaxe C, C++ de l'Arduino, afin de savoir obtenir une vérification (compilation) sans erreur.

Cela passe le plus souvent par l'ignorance de ce qui est écrit en rouge en bas de la fenêtre de l'éditeur, qui, le plus souvent, explique bien où est l'erreur !

Il nous arrive donc d'être questionné sur un projet alors que la vraie question est qu'il faut commencer par se prendre en charge soi-même sur l'environnement Arduino.

Pour aborder un projet ferroviaire, il faut donc au préalable se mettre à l'aise avec l'Arduino, son IDE (environnement de programmation), la syntaxe C / C++ de l'Arduino, et avoir réalisé avec succès un certain nombre d'exemples, du plus simple clignotement d'une Led, au pilotage des éléments cibles de son projet.

Il existe en librairie, un numéro spécial de la revue Hackable qui est parfait pour mener à bien cette phase d'initiation indispensable, A FAIRE SOI-MEME :



Vous voyez qu'une semaine peut suffire à prendre un bon départ !

Je ne suis plus débutant  :o mais j'ai acheté ce numéro et je vous le recommande, vu son prix raisonnable et le bon choix des sujets traités.
Pour commencer, il n'est pas utile de se noyer dans un livre de 500 pages, celui-là suffit.

Quand vous aurez acquis la substantifique moelle de cet ouvrage, et lu les articles complémentaires sur Locoduino, vous pourrez nous poser de vrais questions qui ont un rapport avec le modélisme ferroviaire.

Bonne initiation.
7
Vos projets / Re : Utilisation d'ATTiny
« Dernier message par bagou91 le janvier 15, 2017, 03:09:37 pm »
J'ai déjà utilisé ces attiny85 digispark. Très bien pour des petits projets basse consommation :)

Bien suivre à partir de l'étape 3 de ce tuto:
http://www.instructables.com/id/Digispark-DIY-The-smallest-USB-Arduino/?ALLSTEPS
Pour les utiliser.

En effet ils utilisent un bootloader spécial (déjà gravé) pour être utilisable sur USB. Donc il faut le driver et un IDE avec la plateforme reconnue.
8
Vos projets / Re : Utilisation d'ATTiny
« Dernier message par Dominique le janvier 15, 2017, 02:47:39 pm »
A toutes fins utiles, on trouve chez TXHANG (voir l’article sur Les Achats) un kit de développement ATtiny85 pour 1,26€.
Ce kit contient un prise microUSB et il est compatible avec l’IDE Arduino sans matériel supplémentaire.
http://www.ebay.fr/itm/Mini-ATTINY85-Micro-USB-Development-Board-for-Digispark-Kickstarter-/400911402692?hash=item5d582e86c4

Du coup j'en ai commandé 5 pour voir (je ne sais plus combien de dizaines d'Arduino j'ai dans mes tiroirs, et maintenant des ATtiny en plus  :P :P :P)
9
Le logiciel DCC++ / Re : Re : DCC++ sur Nano avec LMD18200
« Dernier message par Dominique le janvier 15, 2017, 02:42:41 pm »
Merci pour votre response vite!

J'ai déja commandé un des max471 maintenant, mais il va être livrer pas avant le 17 jan  :-\

Votre schéma est presque le même comme ici, je n'ai pas monter les LED en haut et le max471.

Alors, j'ai decidé de l'essayer avec le pin de mesure courant encore une fois - et j'ai réussi. Je connecte le pin avec un resisteur 5.0 kOhm a la masse et avec un convertisseur a/d (mcp3008). Si je lis chaque milliseconde la valeur, je peux recevoir le signal (quand la difference avec le dernier valeur est plus grand que 10, c'est le signal).
Maintenant je peux lire les CV! \o/
Le seul décodeur que j'utilise à l'heure est un ESU LokPilot micro V4.0 .

Merci beaucoup!

BRAVO  ;D ;D ;D

Voilà une expérience concluante  qui prouve que la mesure de courant sur le LMD18200 fonctionne.

C'est une alternative au MAX471, mais pas forcément moins couteuse.
Chacun pourra choisir sa solution préférée.

Amicalement
10
Le logiciel DCC++ / Re : Re : JRMI avec un booster BaseStation DCC++
« Dernier message par Dominique le janvier 15, 2017, 02:38:17 pm »
Bonjour msport,

Bonjour,
J'ai pu lire et programmer sur la voie de programmation. Par contre je n'ai rien pu faire sur la voie principale en dehors de faire tourner le moteur (donc pas lire le CV1, mais ça ne figure pas dans la bible).
J'ai utilisé des décodeurs LAISDCC et des LENZ V2.
Ma conclusion : se méfier des faux contacts et des filtres divers (alimentation des voies et sur les locos)
A suivre quand j'aurais maitrisé un peu mieux l'utilisation des divers CV et programmé les locos.

Tout d'abord un rappel des possibilités de DCC++ BaseStation (de base) :
  • Sur la voie de programmation, DCC++ peut écrire et lire les CV parce qu'il demande une réponse au décodeur (qui est unique sur cette voie) sous forme de consommation de courant. Il peut donc programmer (la réponse est un acquittement) ou lire les CV (la réponse est le CV)
  • Sur la voie principale, comme il peut y avoir plusieurs décodeurs en même temps, il n'est pas possible de demander une réponse au(x) décodeur(s). Donc on ne peut pas lire les CV.
    Mais on peut programmer un CV (un à la fois) sans acquittement seulement.

Donc ce que tu expliques est normal sur la voie de programmation et, sur la voie principale, tu devrais pouvoir programmer certains CV avec la commande "w" qui intègre l'adresse DCC du décodeur .

Maintenant, ce qui n'est pas expliqué dans DCC++, que nous cherchons à documenter (lentement mais surement), c'est pourquoi certains décodeurs ne satisfont pas ces principes.

Personnellement j'en ai un (livré avec un ABJ Renault, dont je n'ai pas encore regardé la marque et le type) qui va me servir à rechercher la réponse...

Cela dit, il me parait normal  de ne pas pouvoir programmer le CV1 (l'adresse courte en DCC) ainsi que d'autres CV "stratégiques" sur la voie principale. Mais ceci demande plus d'éclaircissement.
.
Malheureusement tous les décodeurs ne se ressemblent pas à 100% et il faut lire leur documentation au minimum. Nous espérons pouvoir lister les cas intéressants à connaitre.

Amicalement
Pages: [1] 2 3 ... 10