Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Dominique

Pages: 1 ... 132 133 [134] 135 136 ... 171
1996
Vos projets / Re : Rétrosignalisation/Bus Can
« le: août 18, 2017, 07:50:55 pm »
Le fonctionnement à 8 MHz est indiqué sur le lien vers Seeedstudio. Ça doit être une evolution naturelle de la bibliothèque puisqu'on trouve des cartes CAN à 8 MHz maintenant.

Mais si toutes les cartes qui causent ensemble sont du même type, cela n'a pas d'importance !
À 8 Mhz les échanges risquent seulement d'être 2 fois moins rapide qu'à 16 MHz.


1997
Vos projets / Re : Rétrosignalisation/Bus Can
« le: août 17, 2017, 10:44:32 pm »
En cherchant un peu sur Locoduino :

http://www.locoduino.org/spip.php?article148

Mais, apparemment elle a changé.
Elle est aussi adaptée au 2515 à 8 MHz.

En regardant le .h il doit être facile de trouver la bonne syntaxe. Il n'y a pas toujours de mode d'emploi détaillé. Mais on fait comme ça aussi.

Je vais modifier l'article en conséquence dés mon retour à la fin du mois.
Merci d'avoir soulevé la question  ;)

Je peux poster ma version de référence pour l'article. Mais il faudra attendre un peu.
Dominique

1998
Vos projets / Re : Rétrosignalisation/Bus Can
« le: août 17, 2017, 11:37:50 am »
Ce n'est probablement pas la bonne bibliothèque mcp_can qui est chargée dans l'IDE.

1999
Présentez vous ! / Re : Nouveau
« le: août 07, 2017, 10:03:29 am »
Oui.

Prenez soin de relier la masse du capteur avec la masse (GND) de l'Arduino et assurez-vous que la tension après diviseur soit bien comprise entre 0 et la tension d'alim de l'Arduino (souvent un peu moins que 5 V).

2000
Présentez vous ! / Re : nouveau et plein de projets
« le: août 01, 2017, 02:44:39 pm »
Bonjour Yves,

D'après ce que je lis sur ton fil, tu as de bonnes connaissances en électronique et tu es capable de reproduire un projet Arduino (matériel et logiciel), c'est déjà très bien !

Mais tu sembles plutôt faible coté programmation de l'Arduino, qui utilise le langage C (créé en 1970) et C++(programmation objet), si je ne me trompe !

Il n'y a pas de logique Arduino, c'est tout simplement la programmation C dont il existe des milliers de cours sur le net.
Pour faciliter l'apprentissage, le site Arduino.cc présente de nombreux documents, un forum très riche que nous consultons tous encore quand se pose une question et l'IDE Arduino est livré avec de nombreux exemples que tout débutant en programmation se devrait de tester pour se former progressivement.

Je pense que ton bagage en électronique te permettra de le compléter avec la programmation, avec un peu de patience.

Par exemple, la question des 10 sorties peut se programmer en s'inspirant de l'exemple "Array" http://www.arduino.cc/en/Tutorial/Array et cela donne :
int timer = 1000;   // une seconde d'interval entre 2 sorties
int timer2 = 15000; // 15 secondes a la fin du cycle
int ledPins[] = {
  2, 3, 4, 5, 6, 7, 8, 9, 10, 11
};
int pinCount = 10;           // nombre de pins

void setup() {
  for (int thisPin = 0; thisPin < pinCount; thisPin++) {
    pinMode(ledPins[thisPin], OUTPUT);
  }
}

void loop() {
  // loop from the lowest pin to the highest:
  for (int thisPin = 0; thisPin < pinCount; thisPin++) {
    // turn the pin on:
    digitalWrite(ledPins[thisPin], HIGH);
    delay(timer);
  }
 
  delay(timer2);
    // turn all the pin off:
    for (int thisPin = 0; thisPin < pinCount; thisPin++) {
      digitalWrite(ledPins[thisPin], LOW);
  }
}

A toi de personnaliser cet exemple avec les numéros de pins et les tempos souhaitées

Quand aux commandes de servo multiples, la réponse est sur Locoduino quelque part, et je te laisse chercher, étant en vacances !

Cordialement
Dominique

2001
Présentez vous ! / Re : Bonjour à tous
« le: juillet 23, 2017, 05:55:02 pm »
Il n'y a pas le feu, en cette période de vacances !
Dominique

2002
Infos et bonnes affaires / Re : Du WiFi à 6,95$ chez Sparkfun
« le: juillet 23, 2017, 04:01:37 pm »
Bonjour,

Je viens de recevoir ce module ESP32
http://www.ebay.fr/itm/ESP-32S-ESP32-Development-Board-2-4GHz-Dual-Mode-WiFi-Bluetooth-Antenna-Module/201853283621?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649
et je suis perdu dans la liste des cartes de l'IDE Arduino

Elle est équipée de la puce ESP VROOM 32

Que dois-je choisir ?

Dominique

2003
Présentez vous ! / Re : Bonjour à tous
« le: juillet 23, 2017, 02:52:23 pm »
Merci Sylvain,

Pourrais-tu faire un tuto sur la mise en oeuvre de RocRail avec DCC++, sur Windows si j'ai bien compris, avec pas mal de copies d'écran ?

Soit tu le fais dans un nouveau fil à créer dans le sujet "Le logiciel DCC++", et tu auras du mal à y mettre les images car c'est limité en taille (la solution est de nous envoyer les images et on les mettra dans la mediathèque), soit tu m'envoies un PDF et on le mettra sur le forum.

Tu m'envoies un MP pour transmettre des choses.

Merci d'avance
Dominique

2004
Présentez vous ! / Re : Bonjour à tous
« le: juillet 23, 2017, 12:29:43 pm »
Bonjour Sylvain et Christophe,

J'ai failli répondre à peu près la même chose !

J'ajouterai que DCC++ ne semble pas en cause à priori car au moins une commande fonctionne sur la voie principale, ce qui prouve que Config.h doit être bon.

En tout cas, après les tests proposés par Christophe entre le terminal (RocRail non connecté évidemment) et DCC++, il faudrait pouvoir afficher ce qu'envoie RocRail à DCC++.

Je ne connais pas RocRail bien que je l'ai téléchargé et regardé un peu, mais pas encore utilisé, je pense même que je ne l'utiliserai pas, faisant mon gestionnaire autrement.

Par contre, pour les modélistes de Locoduino, c'est très intéressant d'avoir quelqu'un comme vous qui pourrait partager son expérience.

Ce qui serait intéressant, ce serait de savoir si RocRail permet l'affichage des échanges de caractères entre RocRail et DCC++.  Je pense que RocRail n'envoie pas les commandes correctes à DCC++

Cordialement
Dominique

2005
Les réseaux / Re : Projet Dominique
« le: juillet 22, 2017, 06:43:36 pm »
Construction du contrôleur d’aiguilles

Le contrôleur d’aiguilles est construit sur une base Arduino Mega 2560 associé à une carte bus CAN et un ensemble de 40 relais qui commandent les 18 aiguilles (2 relais par aiguille) et 2 dételeurs (1 relai par dételeur).



L’Arduino est disposé coté tableau de bord tandis que les relais, disposés de chaque coté d’une planche de CP monté sur charnière, sont placés à l’intérieur, sous le circuit. Des câbles en nappes relient l’Arduino aux relais, comme expliqué pour le TCO, avec une carte prototype permettant la soudure des nappes pour un maximum de fiabilité.



Comme les aiguillages choisis sont des modèles Fleischmann à moteur à courant alternatif, j'ai utilisé 2 relais par aiguille, avec le schéma suivant :



Le relai Impulsion est activé 150 millisecondes après que le relai Sens est positionné selon le sens direct/droit ou dévié.

Les relais en couples sont affectés aux pins de l’Arduino (tout est noté dans un tableau):
Relais d'aiguilles 4,5(A),6,7(B),8,9(C),10,11(D) - 22,23(G),24,25(H),26,27(I),28,29(J) - 30,31(K),32,33(L),34,35(M),36,37(N) - 38,39(O),40,41(P),42,43(Q),44,45(R) - 12,13(E),14,15(F),46,47(S),48(T1),49(T2).
La carte CAN est raccordée par les pins : 50 (SO), 51 (SI), 52 (SCK), 53 (CS), 2 (INT).
Les pins A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15 restent libres pour le moment. Elles sont réservées pour des relais supplémentaires (ça va arriver, il y en a 4 maintenant installés) et des détecteurs complémentaires (RFID, Hall, IR).

Comme pour le TCO, le logiciel utilise les routines CAN décrites ci-dessus, avec des messages dont les Ids sont :
  • Réception Id = 0x4x (commande aiguille)
  • Emission, Id = 0x12 (etat aiguille)

Les aiguilles sont déclarées sous forme d'objets :
class Aiguille
{
  private:   
    byte index;             // 0, .. MaxAIG-1
    char nom;               // 'A' ou 'B' ...
    byte pin_sens;          // sens droit (HIGH) ou devie (LOW)
    byte pin_pulse;         // impulsion de commande : actif LOW
    bool etat;              // true = droit, false =  devie
    bool change;            // rafraichir la position en fonction de etat avec envoi CAN
    bool echoCan;           // rafraichir la position en fonction de etat sans envoi CAN si false
    bool curstep;           // true = pulse en cours, false = cycle fini
    unsigned long milli;    // temps systeme au debut de l'impulsion
   
  public:
    // ----------- constructeur complet ------------
  Aiguille(byte a_index, char a_nom, byte a_pin_sens, byte a_pin_pulse);

  void Setup();
  void Armer();
  void Rafraichir();
  void Caner();
  void Preparer(bool a_sens);     // sur reception message CAN: mise en liste
  void Bouger();                  // execute suivant sens avec envoi CAN
  void Positionner(bool a_sens);  // si changement - cas recurent
  void Forcer(bool a_sens);       // cas setup lecture EEPROM
  void MiseAJour();               // din de la periode : desarmement relais
  byte NomAig();
  bool EtatAig();
};

Une des astuces que j'aime bien est le rafraichissement des positions de chaque aiguille, une toutes les 10 secondes. Cela permet d'éviter quelques déraillements en cas de changement de position provoqué par exemple par un convoi entrant par un talon positionné differemment.

/*
   * Toutes les 10 secondes : rafraichissement d'une position d'aiguille
   */
   
  if (_Minute + 10000 < millis()) {                        // toutes les 10 secondes
    _Minute = _Minute + 10000;
    ListeAig[RafraichAiguille].Rafraichir();               // rafraichissment d'une position d'aiguille sans envoi CAN
    if (_debug) {
      Serial.print(" 10SEC : rafraich: ");Serial.print(RafraichAiguille);
      Serial.print(ListeAig[RafraichAiguille].NomAig());
      Serial.print(" ram ");Serial.println(_RamFree());
    }
    RafraichAiguille++;
    if (RafraichAiguille > MaxAIG-1) RafraichAiguille = 0; // pas de rafraichisement des Deteleurs, evidemment !
  }

Voici le traitement des messages CAN:

/*
   *  Récupération d'un seul message par loop dans la memoire circulaire _Circule
   */
   
  while (_Ncan > 2)  {                 // messages dans _Circule : au moins 3 bytes
    //digitalWrite(LedV, HIGH);       // led activité CAN reste allumée jusqu'à loop suivante
    _Ncan--;
    RId = _Circule[_indexR];        // recup Id
    _indexR++;
    if (_indexR == sizeof(_Circule))  {_indexR = 0;}
    _Ncan--;
    Rlen = _Circule[_indexR];       // recup longueur
    _indexR++;
    if (_indexR == sizeof(_Circule))  {_indexR = 0;}
    if (_dumpCan)  {     
      Serial.print("CAN id ");
      Serial.print(RId);
      Serial.print(", data ");
    }
    for (int k = 0; k < Rlen; k++)  {
      _Ncan--;
      Rbuf[k] = _Circule[_indexR];  // recup octets message
      _indexR++;
      if (_indexR == sizeof(_Circule))  {_indexR = 0;}
      if (_dumpCan)  { 
      Serial.print("0x");
      Serial.println(Rbuf[k], HEX);
      }
    } // le message est dans les globales RId, Rlen et Rbuf[..]
    curAIG = Rbuf[0] & 0x3F;      // garder que les bits 0..5 = index aiguille

    /*
     * commandes aiguilles CAN sur ID 0x40
     */
     
    if (RId == RId_AIGUILLE)  {
      // commandes relatives aux aiguilles
      // 1 octet donnees:  bit 7,6 -> 1,0 = devie ou 1,1 = droit, bits 5..0 = numero aiguille

      if (bitRead(Rbuf[0], 7)) {  // commande de changement d'aiguille
        if (curAIG < MaxAIG) {    // aiguille
          if (bitRead(Rbuf[0], 6) != ListeAig[curAIG].EtatAig())  {
            ListeAig[curAIG].Positionner(bitRead(Rbuf[0], 6)); // bit 6 = position
            BougeAIG[curAIG] = true;
            if (_debug) {
              Serial.print(" CAN : curAIG ");Serial.print(curAIG);
              Serial.print(" Aiguille "); Serial.print(ListeAig[curAIG].NomAig());
              if (bitRead(Rbuf[0], 6)) {
                Serial.println(" DROIT");
              } else {
                Serial.println(" DEVIE");
              }
            }
          }
        }
      }
    }
  } 

Les commandes d'aiguilles ne sont pas directement émises par le TCO (les clés) mais par le Gestionnaire.



Imaginons qu’une aiguille soit protégée pour laisser passer un convoi prioritaire : cette aiguille ne pourra être manœuvrée qu’après le passage du convoi. C’est ce que fera le gestionnaire : si je bascule la clé de l’aiguille sur le TCO, rien ne se passe ! Dès que le convoi est passé, l’aiguille change automatiquement et la Led sur le TCO, à coté de la clé, répercute ce changement.

Je vais donc bientôt décrire le Gestionnaire !

2006
Les réseaux / Re : Projet Dominique
« le: juillet 22, 2017, 06:12:51 pm »
Description du TCO "en dur"

Je précise "en dur" car réalisé sur une plaque de plexi avec de vraies Leds et de vrais inverseurs (clés). En réalité il y aura d'autres TCO tels qu'un écran graphique piloté par le Gestionnaire et un écran HDMI piloté par un pcDuino8 sous Ubuntu, avec Processing qui sera décrit plus tard.

Première opération, la plaque représentative du réseau :



Le TCO est constitué d'une plaque de plexiglass blanc sur lequel est collée une représentation simplifiée du réseau, dans laquelle les cantons des tracés haut, bas et la boucle sont réduits sur la partie droite.
J'ai réalisé le dessin avec RailModeller Express (https://itunes.apple.com/us/app/railmodeller-express/id1008811516?mt=12), imprimé sur papier avec l'imprimante jet d'encre, plastifié et collé sur une plaque de plexi blanc avec de la colle en bombe Cléopâtre.

Cette plaque est percée au milieu de chaque canton pour loger une Led rouge indiquant l'occupation du canton. Elle est aussi percée au niveau de chaque aiguille pour loger une clé de sélection de position et 2 Leds vertes représentant la position des aiguilles.

Pour réaliser les perçages proprement après le collage du dessin, j'ai utilisé un emporte-pièce et j'ai marqué le plexi en faisant sauter un confetti de papier ce qui a permis ensuite de percer les trous au bon diamètre, sans risque de dérapage de la perceuse.



Après montage des inverseurs et des Leds (collées), la vue "en coulisse" du TCO est édifiante :



Le TCO est animé par un Arduino MEGA 2560 qui gère :
- 20 inverseurs d’aiguilles = 20 pattes : AG1 à AG20 sur 21 bornes avec Gnd
- 36 Leds vertes (positions aiguilles) : 5 x 74HC595 chainés = 3 pattes
- 36 Leds rouges (occupations) : 5 x 74HC595 chainés = +1 patte
- 35 Détecteurs occupation = 35 pattes
- 36 bornes avec Gnd (y.c. va-et-vient)
- Bus CAN = 5 pattes (port SPI)
- Console = 2 pattes (port USB)
AU TOTAL = 68 pattes sur 70 !

Schéma de principe des interface avec 74HC595 (il y a en tout 2 bancs de 5 74HC595):



La réalisation de cette carte à 74HC595 est faite sur une platine 100 x 160 mm que j'avais en stock depuis très longtemps :




Pour les raccordements, surtout pour avoir la plus grande fiabilité possible et permettre le montage et les modifications, j'ai ajouté sur le MEGA une carte Prototype de ce type (il en existe plein) :



J'y ai soudé des nappes au bout desquelles j'ai soudé des borniers à vis déportées de chaque coté du MEGA.



Cela fait un peu fouillis car je n'ai pas cherché à ranger les fils mais c'est très fiable et toujours accessible en soulevant la plaque du TCO montée sur charnière. C'est promis, mon prochain TCO sera plus professionnel.

On voit sur la droite la carte CAN Locoduino et au fond au milieu la carte 74HC595.

Des trous dans le fond assurent le passage des fils avec le dessous du réseau.

Pour le bornier de raccordement des occupations de zones, j'ai fait un tableau avec les relations entre les Pins du Mega raccordées aux détecteurs d’occupation, les Leds Rouges (coordonnées de la led dans la matrice de 74HC595) et les Zones.



Bien entendu il y a quelques bornes disponibles pour ajouter des détections d'occupation supplémentaires, ce qui va arriver, on le verra plus loin.

Depuis la construction de ce TCO (ça fait bien 2 ans minimum), je n'ai jamais eu de panne !

2007
Vos projets / Re : Rétro-signalisation
« le: juillet 22, 2017, 11:29:31 am »
Là je dis bravo !

Bon courage

Dominique

2008
Les réseaux / Re : Projet Dominique
« le: juillet 21, 2017, 07:46:50 pm »
Je reprends doucement la description de mon réseau !

Nous en étions aux détecteurs d'occupation qui sont reliés, chez moi, au TCO physique. J'avais aussi parlé du module de commandes d'aiguilles, du module de traction et du gestionnaire.

Au départ je n'avais pas idée de la manière de gérer l'ensemble du réseau par un gestionnaire, je ne soupçonnais pas l'étendue de la complexité et le nombre de choses à relier ensemble.

C'est pour cela que le découpage en modules reliés par un bus CAN m'a semblé idéal.

Pour mettre les idées en place, les rôles du module TCO physique (avec des leds et des clés) devait :
  • représenter l'ensemble du réseau de façon simple
  • récupérer les occupations et allumer une led rouge dans la zone de la détection
  • permettre de commander les aiguilles
  • visualiser le sens droit ou dévié de chaque aiguille par une led verte allumée du bon coté
  • envoyer des messages au gestionnaire à chaque changement d'occupation ou de libération
  • envoyer des messages au gestionnaire à chaque changement de clé d'aiguille
  • recevoir des messages du gestionnaire pour allumer les leds d'aiguille

Il a donc fallu définir un certain nombre de messages CAN comme ceci :

Id CAN en Reception :
  • Id = 20H (commande de led clef)
  • Id = 21H (demande d'état de toutes les clefs)
Id CAN en  Emission :
  • Id = 11H (clef d'aiguille)
  • Id = 10H (occupations)

Je reviendrai plus loin sur les valeurs des octets de message qui suivent l'ID (maximum 8 octets, je n'utilise qu'un seul octet en général).

Le choix des messages CAN est très structurant pour le projet. Mon choix n'est pas le seul possible, il faut bien choisir un jour. Car cela définit les filtres CAN, les fonctions d'émission et réception et le traitement des messages reçus (parsing en anglais, mot qui revient souvent sur Locoduino), que l'on retrouvera partout dans les modules du réseau.

J'ai donc :

Une routine d'interruption qui se charge de récupérer tous les messages CAN acceptés dans une mémoire tampon :
/*
 *  ISR CAN
 */
 
void MCP2515_ISR()
{
     Flag_Recv = 1;
}

/*
 * Routine de récuperation des messages CAN dans la memoire circulaire _Circule
 * appelee par LOOP lorsque Flag_Recv = 1;
 */
 
void CAN_recup()
{
  unsigned char len = 0;                // nombre d'octets du message
  unsigned char buf[8];                 // message
  unsigned char Id;                     // Id

  while (CAN_MSGAVAIL == CAN.checkReceive())  {
    CAN.readMsgBuf(&len, buf);          // read data, len: data length, buf: data buf
    Id = CAN.getCanId();
    if ((_Ncan+len+2) < sizeof(_Circule))  { // il reste de la place dans _Circule
      _Circule[_indexW] = Id;           // enregistrement de Id
      _indexW++;
      _Ncan++;
      if (_indexW == sizeof(_Circule))  {_indexW = 0;}
      _Circule[_indexW] = len;          // enregistrement de len
      _indexW++;
      _Ncan++;
      if (_indexW == sizeof(_Circule))  {_indexW = 0;}
      for (byte z = 0; z<len; z++)  {
        _Circule[_indexW] = buf[z];      // enregistrement du message
        _indexW++;
        _Ncan++;
        if (_indexW == sizeof(_Circule))  {_indexW = 0;}
      }
    } else {
      _CANoverflow = 1;   // depassement de la capacite de Circule
                          // message perdu (pas enregistré dans Circule)
    }
  }
}


Et le traitement des messages CAN dans la loop :
  /*
   *  traitement des messages dans le buffer _Circule
   */
   
  while (_Ncan > 2)  {                // messages dans _Circule : au moins 3 bytes
    //digitalWrite(LedV, HIGH);       // led activité CAN reste allumée jusqu'à loop suivante
    _Ncan--;
    RId = _Circule[_indexR];          // recup Id
    _indexR++;
    if (_indexR == sizeof(_Circule))  {_indexR = 0;}
    _Ncan--;
    Rlen = _Circule[_indexR];         // recup longueur
    _indexR++;
    if (_indexR == sizeof(_Circule))  {_indexR = 0;}
    if (_dumpCan)  {     
      Serial.print("CAN id ");
      Serial.print(RId);
      Serial.print(", data ");
    }
    for (int k = 0; k < Rlen; k++)  {
      _Ncan--;
      Rbuf[k] = _Circule[_indexR];  // recup octets message
      _indexR++;
      if (_indexR == sizeof(_Circule))  {_indexR = 0;}
      if (_dumpCan)  { 
      Serial.print("0x");
      Serial.println(Rbuf[k], HEX);
      }
    } // le message est dans les globales RId, Rlen et Rbuf[..]
    curCLEF = Rbuf[0] & 0x3F;       // garder que les bits 0..5 = index aiguille
   
    if (RId == RId_TCO_Clef)  {
      // 1 octet donnees:  bit 7,6 -> 1,1 et 5..0 -> 3F = envoi etats toutes clefs               
      if (curCLEF == 0x3F) {          // commande de lecture etats
        if (bitRead(Rbuf[0], 7)) {
          if (bitRead(Rbuf[0], 6)) {  // demande etat toutes clefs (data = 0xFF)
            EnvoiCAN_toutesClefs();
          }
        }
      }
    }
    if (RId == RId_TCO_Led)  {
      // 1 octet donnees:  bit 7,6 -> 0,0 = devie ou 0,1 = droit, bits 5..0 = numero clef
      if (!bitRead(Rbuf[0], 7)) {    // bit 7=0, commande de positionnement de Led sur une Clef d'aiguille
        if (curCLEF < MaxCLES) {     // numero de clef
          ListeClef[curCLEF].LedUpdate(bitRead(Rbuf[0], 6)); // bit 6 = position
          //affiche_vertes();      // affichage vertes + rouges plus loin
          if (_dumpCan) {
            Serial.print(" CAN : curCLEF ");Serial.print(curCLEF);
            Serial.print(" Aiguille "); Serial.print(ListeClef[curCLEF].NomClef());
            if (bitRead(Rbuf[0], 6)) {
              Serial.println(" DROIT");
            } else {
              Serial.println(" DEVIE");
            }
          }
        }                             
      }   
    }                                // fin changement leds aiguilles 
  }                                  // fin traitement messages CAN (while)

Les clés et les zones sont décrites sous forme d'objets comme on peut le voir dans le traitement ci-dessus.

Ma premiere réalisation (toujours en place sur le réseau) se limitait à 19 aiguilles (dont 2 TJD) donc avec 19 clés. Mon plan de découpage en zones se limitait à 42 zones.

Il se trouve que la prise en compte des signaux, des itinéraires, les possibilités de manoeuvres offertes par le Gestionnaire que j'avais un peu de mal à appréhender par manque d'expérience, sont devenus maintenant beaucoup plus clairs grâce à l'aide de Pierre59.

Cela a entrainé un certain nombre de modifications qui ne remettent pas en cause les développements matériels et logiciels que j'avais fait, grâce au découpage en modules et aux communications CAN.

Je reviendrai donc sur ces évolutions après la description du TCO.

2009
Présentez vous ! / Re : nouveau et plein de projets
« le: juillet 21, 2017, 06:52:41 pm »
Bonjour Yves,

Bienvenue sur Locoduino qui, j'en suis certain, t'aidera à trouver les solutions souhaitées et te permettra d'aider d'autres modélistes en retour.

J'avoue que j'ai trouvé tes premières questions un peu décousues, mais ce n'est pas grave, c'est un premier contact.

Citer
Arduino sauve moi !!!
Je suis parti sur une horloge et un séquenceur et amplificateur de puissance (555 et 4017 puis 4050 et  3 régulateurs de vitesse)

en fait je ne comprends pas comment faire pour le train  (et ma crèche) comment incrémenter les borne de 1 à 10 fixe (pas clair!!)

Je débute en Arduino et regardé les autres forums (malheureusement pas de train)
en gros je voudrais envoyer une commande fixe numérique sur 1 puis le 1 maintenu, le 2 puis le 2 maintenu et 3 et jusqu'à 10 voir 9 et tout remettre à zéro puis recommencer.

Certain font int pour déclarer les sorties avant void
pour le reste pas facile !!!

de l'aide Merci

- des Arduino pour quoi faire ?
- comment faire pour le train, faire quoi ?
- une commande fixe numérique sur 1 puis le 1 maintenu ...!?!

Le plus simple est de poser une question à la fois en précisant le contexte, avec un schéma pour présenter les éléments en présence.

Il y a aussi dans Locoduino (partie éditoriale, www.locoduino.org des articles sur la programmation de différents niveaux. Dis nous s'il manque quelque chose.

Au plaisir de te lire prochainement

Dominique

2010
Shields et Modules / Re : Adafruit Audio FX Sound Board
« le: juillet 18, 2017, 07:41:39 am »
J'ai commandé cette carte http://www.ebay.fr/ulk/itm/141927599236 , qui devrait arriver bientôt.
On verra ce que ça vaut côté sonore.

Pages: 1 ... 132 133 [134] 135 136 ... 171