Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Arduino et incompatibilité de manoeuvre (enclenchement)

Toutes les discussions sur l'Arduino !

Modérateur: MOD

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Lun 17 Fév 2014, 17:01 
ffayolle a écrit:Si les entrées analogiques sont utilisées comme entrée (en utilisant un diviseur de tension pour augmenter le nombre de possibilités.

Bonjour

Les entrées analogiques sont utilisables comme entrées digitales sans problème.

Pierre
Avatar de l’utilisateur
Pierre59
Papotier
 
Messages: 144
Inscrit le: Dim 07 Mars 2010, 10:17
Localisation: Villeneuve d'Ascq (59650)
Âge: 74
Echelle pratiquée: HO
Club: Lille Modélisme

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Lun 17 Fév 2014, 18:51 
Bonjour

Sur mon réseau je fonctionne avec des itinéraires, pour l'instant j'en ai 75, les enclenchements ne sont pas facile à organiser, après quelques tâtonnements j'ai adopté la solution suivante; chaque itinéraire est une classe (C++) héritant d'une classe Itinéraire, voici deux itinéraires comme exemple (il y a 75 classes !) :
Code: Tout sélectionner
class XB : Itineraire {
   boolean formable() { return libres(AX,BX,CX)&&libres(z3,z5); }
   void former() { directer(a1a,a1b,a4a,a4b); c1.ouvrir(); }
   void deformer() { c1.fermer(); }
}
class XC : Itineraire {
   boolean formable() { return libres(AX,BX,CX,CT,TC)&&libres(z3,z11,z12); }
   void former() { devier(a1a,a1b); directer(a4a,a4b); c1.ouvrir(); }
   void deformer() { c1.fermer(); }
}

La classe Itinéraire a une table des itinéraires à former et une fonction qui périodiquement appelle la fonction formable sur chacun des itinéraires à former, si l'itinéraire est formable alors la fonction former est appelée.

La fonction formable réalise les enclenchements, elle teste que tous les itinéraires incompatibles sont libres (non formés), elle teste aussi que certaines zones sont libres (zones d'aiguilles par exemple).

La fonction former forme l'itinéraire, elle positionne les aiguilles et ouvre le signal (devier met les aiguilles en position déviée et directer fait le contraire).

La fonction deformer permet de détruire l'itinéraire.

Techniquement cela fonctionne comme une sorte de PRS à transit rigide (l'itinéraire est libéré quand le train a complètement quitté l'itinéraire).

Par commodité les fonctions libres, devier et directer sont à nombre d'arguments variables.

Réellement le programme, qui est assez gros, est écrit en Java (très semblable au C++) et tourne sur un Mac. Il comporte aussi une fonction de test des enclenchements.

La méthode me semble réalisable (avec pas trop d'itinéraires) sur un Arduino en programmant objet (C++).

Pierre
.
Avatar de l’utilisateur
Pierre59
Papotier
 
Messages: 144
Inscrit le: Dim 07 Mars 2010, 10:17
Localisation: Villeneuve d'Ascq (59650)
Âge: 74
Echelle pratiquée: HO
Club: Lille Modélisme

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Lun 17 Fév 2014, 18:59 
Pierre59 a écrit:
ffayolle a écrit:Si les entrées analogiques sont utilisées comme entrée (en utilisant un diviseur de tension pour augmenter le nombre de possibilités.

Bonjour

Les entrées analogiques sont utilisables comme entrées digitales sans problème.

Pierre


Absolument.

Arduino Uno possède 14 E/S numériques (ou digitales) numérotées 0 à 13 et 6 entrées analogiques (A0 à A5) qui peuvent parfaitement être utilisées comme E/S numériques ; dans ce cas, on les appelle dans le programme 14 à 19.

exemple : digitalWrite (16, HIGH) ;

Si les entrées A0 à A5 sont utilisées en analogiques, soit on connecte un capteur donnant une tension (dans la gamme 0 à 5 V), soit on connecte des poussoirs avec un diviseur de tension (5 poussoirs par entrée maxi pour avoir une bonne fiabilité de lecture du poussoir). :D
Avatar de l’utilisateur
Arduino
Démonstratif
 
Messages: 1528
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Lun 17 Fév 2014, 19:05 
Wouahhh ! Là, Pierre, tu attaques fort ! :siffle:

Si j'ai compris, ton programme en Java tourne sur un Mac qui envoie les différents signaux sur ton réseau qui possède 75 itinéraires possibles, oui ? :roll:

Comment est l'interface entre Mac et réseau ? Du commerce ou bien maison ? :?:
Avatar de l’utilisateur
Arduino
Démonstratif
 
Messages: 1528
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Lun 17 Fév 2014, 19:23 
Arduino a écrit:Si j'ai compris, ton programme en Java tourne sur un Mac qui envoie les différents signaux sur ton réseau qui possède 75 itinéraires possibles, oui ?

Tout a fait, le programme reçoit des informations du réseau (occupation des zones, positions des aiguilles, ...), des ordres par des actions de la souris sur l'écran (TCO) et par les commande des trains, il fait les contrôles nécessaires et envoie ses commandes au réseau et met à jour le TCO.
Arduino a écrit:Comment est l'interface entre Mac et réseau ? Du commerce ou bien maison ?

Tout est fait maison, avec un interface USB/I2C sur lequel toutes les cartes électronique sont interfacées (cartes comportant toutes un ATmega8 ou ATmega8535).

Pierre
Avatar de l’utilisateur
Pierre59
Papotier
 
Messages: 144
Inscrit le: Dim 07 Mars 2010, 10:17
Localisation: Villeneuve d'Ascq (59650)
Âge: 74
Echelle pratiquée: HO
Club: Lille Modélisme

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Lun 17 Fév 2014, 19:33 
Je suis impressionné ! :applause:

Et combien d'années de formation, de réflexion, de travail, de mise au point avant d'arriver à ce beau jouet ? :geek:

Je ne pense pas qu'Arduino soit dans la même catégorie pour combattre, et ceux qui pourraient être tentés de le croire iront vers des déceptions, tu ne crois pas ? :roll:

Je pense que pour développer un système aussi complet, le mieux est de travailler à partir d'un ordinateur et non de microcontôleurs. Par contre, ceux-ci peuvent être une aide pour développer des interfaces grâce à leurs possibilités et à leur souplesse d'emploi.
Avatar de l’utilisateur
Arduino
Démonstratif
 
Messages: 1528
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Lun 17 Fév 2014, 21:02 
Je ne crois pas. :D

Entre l'Arduino et l'ordinateur de bureau il y a de la place.

De mon côté le maître d'œuvre est une carte Olimex avec un ARM7 à 60MHz et 1Mo de mémoire. Le logiciel de contrôle occupe 110ko pour un réseau de 60 cantons. Il reste pas mal de place. En ce qui concerne la puissance de calcul, c'est aussi assez large car on n'a pas besoin de performances pour contrôler un réseau.

Un Arduino Due (96k de RAM, 512k de flash) est grosso-modo équivalent et est déjà pas mal pour cet usage.

Si on programme en C/C++, on peut développer le logiciel sur l'ordinateur hôte est fournissant des fonctions d'interfaçage (communication, acquisition, commande) qui émulent les vrais fonctions et permettent également de jouer des scénarios de test.
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 667
Inscrit le: Jeu 04 Oct 2012, 16:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Lun 17 Fév 2014, 21:47 
Voilà de bien beaux projets que vous avez mis en œuvre pour vos réseaux respectifs et merci pour vos conseils.

Mais je ne maîtrise en aucun cas cette notion de classe (programmation objet) alors si je peux travailler avec des tableaux, je préférerai. Mais, je ne suis pas contre le changement. Car le changement, c'est maintenant!!!
Dernière édition par ffayolle le Mar 18 Fév 2014, 09:13, édité 1 fois au total.
Fabrice Fayolle
Avatar de l’utilisateur
ffayolle
Causant
 
Messages: 234
Inscrit le: Mar 09 Mai 2006, 19:55
Localisation: Amiens, Somme, Picardie
Âge: 50

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Lun 17 Fév 2014, 22:00 
Pierre, Christian,
Merci pour l'information mais je pense que j'utiliserai des poussoirs avec un diviseur de tension. 5 poussoirs par entrée, cela fait donc 2 ports nécessaires. Il en restera 4 en réserve.
Fabrice Fayolle
Avatar de l’utilisateur
ffayolle
Causant
 
Messages: 234
Inscrit le: Mar 09 Mai 2006, 19:55
Localisation: Amiens, Somme, Picardie
Âge: 50

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Mar 18 Fév 2014, 12:15 
jlb a écrit:Je ne crois pas. :D

Entre l'Arduino et l'ordinateur de bureau il y a de la place.

De mon côté le maître d'œuvre est une carte Olimex avec un ARM7 à 60MHz et 1Mo de mémoire. Le logiciel de contrôle occupe 110ko pour un réseau de 60 cantons. Il reste pas mal de place. En ce qui concerne la puissance de calcul, c'est aussi assez large car on n'a pas besoin de performances pour contrôler un réseau.

Un Arduino Due (96k de RAM, 512k de flash) est grosso-modo équivalent et est déjà pas mal pour cet usage.

Si on programme en C/C++, on peut développer le logiciel sur l'ordinateur hôte est fournissant des fonctions d'interfaçage (communication, acquisition, commande) qui émulent les vrais fonctions et permettent également de jouer des scénarios de test.


Je reste dubitatif et je vais tenter de te donner mes raisons.

Un réseau complexe (60 cantons, 75 itinéraires) est un objet qui reste à demeure dans une salle. L'ordinateur (objet encombrant avec unité centrale, clavier, écran, périphérique, etc.) y a donc sa place. Développer sur microcontrôleur se conçoit :
- soit pour de petites applications où un ordinateur serait vraiment sous-exploité (commande de servos, de moteurs, etc. )
- soit pour une application embarquée (ex: nos Smartphones).

Je pense comme toi que c'est possible, mais pourquoi vouloir s'enquiquiner à développer par exemple un affichage sur LCD couleur pour faire un TCO à partir d'Arduino, quand l'ordinateur offre la facilité de l'écran.

Ce n'est pas que je ne me sente pas la compétence (cela peut s'acquérir) mais je ne dispose tout simplement pas du temps (étant encore en activité) pour cela, car ça représente un énorme travail.

Bref, si demain je devais gagner au Loto et que je puisse m'offrir un super réseau comme le tien ou celui de Pierre, je ne chercherai pas à le commander avec Arduino mais avec un ordinateur car cela me ferait gagner du temps.

Par contre, je conçois, comme l'a fait Pierre59, que les microcontrôleurs puissent permettre de réaliser des interfaces plus facilement, car l'électronique câblée est de nos jours dépassée.

Après, il y a le côté défi qui n'est pas à négliger, mais comme pour les sportifs, cela demande de la préparation et du temps. :wink:

Voilà, je voulais juste donner mon point de vue, surtout pour que les débutants qui nous lisent ne s'imaginent pas qu'avec Arduino, ils vont réaliser tous leurs fantasmes ferroviaires super facilement !
Avatar de l’utilisateur
Arduino
Démonstratif
 
Messages: 1528
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Mar 18 Fév 2014, 12:27 
ffayolle a écrit:Voilà de bien beaux projets que vous avez mis en œuvre pour vos réseaux respectifs et merci pour vos conseils.

Mais je ne maîtrise en aucun cas cette notion de classe (programmation objet) alors si je peux travailler avec des tableaux, je préférerai. Mais, je ne suis pas contre le changement. Car le changement, c'est maintenant!!!


Bonjour Fabrice,

Dans un premier temps, travaille en fonction de tes connaissances pour arriver à un premier résultat (et je pense que tu as bien fait de simplifier ton projet pour commencer).

Après, avec les lectures que tu feras sur ces forums, tu auras sans doute envie de reprendre ton projet et de l'améliorer, car les connaissances que tu auras glanées avec l'aide des Arduineurs, te permettront d'envisager d'autres solutions plus efficaces. :wink:

Quant-au changement, celui qui a dit que c'était maintenant, pensait peut-être plus à ces amours qu'à l'intérêt de la nation... :clown: Mais bon, on est là pour faire du petit train, pas de la politique. Mais cela ne peut pas faire de mal d'en sourire :D
Avatar de l’utilisateur
Arduino
Démonstratif
 
Messages: 1528
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Mar 18 Fév 2014, 12:35 
Arduino a écrit:Je reste dubitatif et je vais tenter de te donner mes raisons.
...


Je suis un peu d'accord. Même en terme de coût, ça doit être limite (on trouve des ordis neufs aujourd'hui à moins de 300€). On trouve aussi dans le domaine du libre pas mal de trucs à empiler pour gérer un réseau (ou sinon on a aussi des solutions clé en main).
Et c'est tout de même plus "user friendly" que de tout se palucher en C (fut-ce un C-Arduino).

Par contre, pour des utilisations déportées (commandes de servos, de moteurs, d'aiguillages, détections etc., en analogique ou digital) oui, les µ-contrôleurs sont très bien. Ou pour les petites applications (moins de 10 cantons à gérer).
.
Avatar de l’utilisateur
Roc
Promesse tenue
 
Messages: 20593
Inscrit le: Jeu 22 Fév 2007, 13:51
Localisation: Aude
Âge: 49
Prénom: Olivier
Club: Intermittent des Rigollots©

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Mar 18 Fév 2014, 13:17 
Juste une petite parenthèse.
Pour le prix d'un arduino méga, on a aussi une carte pc mais qui n'est pas du windows. On a tous dans notre placard un écran qui traîne ainsi que les périphériques.
Guillaume22
Papotier
 
Messages: 138
Inscrit le: Dim 29 Sep 2013, 09:20

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Mar 18 Fév 2014, 16:03 
Bonjour,

Je ne pensais pas qu'en ouvrant ce fil de discussion, j'allais déchainer autant de passion.

Merci à tous pour vos commentaires et/ou informations

Quand j'ai posté le 1er message, j'avais en fait un programme fonctionnel. Et je pensais pouvoir l'universaliser.
:siffle: :siffle: :siffle:
Bien m'en prenne!!!

Mais ces échanges m'auront permis de remettre tout à plat (j'ai en plus presque divisé par 2 la taille du fichier ce qui n'est pas négligeable au prix de l'octet!!!) et de revoir totalement toute l'écriture en passant au préalable par une phase de faisabilité, d'étude et d'analyse (à minima je vous l'accorde).

Merci donc aux différents contributeurs et en particulier à Hubert et Christian.

Le nouveau programme, en cours de test, inclut maintenant et surtout des fonctions comme par exemple "Est-ce que la position du levier peut-être elle changée ? ou pourrais-je dire "Le levier est-il bloqué?"

int verrou_levier[4]={0,0,0,0};



boolean levier_changeable(int levier)
{
  boolean result;
  result = (verrou_levier[levier] == 0);
  return result;
}



Si la valeur est à zéro, le levier n'est pas bloqué et je renvoie donc la valeur VRAI.
Si la valeur est différente de zéro (1,2,... car le levier pourrait être bloqué par plusieurs autres leviers), je renvoie la valeur FAUX.

J'utilise un tableau pour stocker le verrouillage ou non du levier.

Comme je l'ai déjà dit, je ne maîtrise pas la programmation Objet mais j'ai repris tout de même les idées de Pierre (Cf. classe d'objet d'itinéraires). Merci Pierre

Et cette décomposition en fonctions va aussi me permettre d'intégrer de nouvelles fonctionnalités si nécessaire.

Un exemple : j'ai décidé que j'allumerai une LED pour signifier que le levier est en position ouvert (ce qui correspondrait par "translation" à un signal ouvert (voie libre) ou une aiguille en position déviée).

Voilà la fonction que j'ai définie :

const byte sortie[4] = {S0,S1,S2,S3};
const int type_sortie[4] = {1,1,1,1};



void sortie_changer(int levier, int type, boolean action)
{
  switch (type)
  {
    case 1:
    if (action)
    {
      digitalWrite(sortie[levier],HIGH);
    }
    else
    {
      digitalWrite(sortie[levier],LOW);
    }
    break;
  } 
}



Si la sortie est de type 1, j'allume une LED. C'est d'ailleurs ce que je cherche à faire.
Mais si la sortie est de type 2, je pourrais par exemple commander un servo-moteur. Il me suffira d'ajouter un cas dans la fonction (et quelques variables si nécessaire).

A votre discrétion mais pour l'instant, je continue les tests!!!
Fabrice Fayolle
Avatar de l’utilisateur
ffayolle
Causant
 
Messages: 234
Inscrit le: Mar 09 Mai 2006, 19:55
Localisation: Amiens, Somme, Picardie
Âge: 50

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Mar 18 Fév 2014, 16:26 
Dans ces forums, on est tous des passionnés. Les discussions sont parfois animées, mais toujours permettent d'apprendre de nouvelles choses, de découvrir d'autres mondes. La raison même d'un forum, c'est le partage :coeur1:

jlb et Pierre59 sont des gens qui ont une grande expérience en programmation, électronique et microcontrôleurs ; ils sont capables d'entreprendre des choses que je ne me sens pas encore capable de faire. Mais un jour viendra ... :moi:

La disponibilité des Arduineurs de ces sites fait qu'on trouve très vite la solution à nos problèmes et qu'on progresse énormément. :wink: Comme tu le dis, ce forum t'a permis de remettre en cause ton projet, de l'adapter, etc. et lorsqu'il sera prêt, il en intéressera d'autres à qui tu apporteras aussi ton aide.
Avatar de l’utilisateur
Arduino
Démonstratif
 
Messages: 1528
Inscrit le: Mer 25 Sep 2013, 17:14

PrécédentSuivant

Retour vers Arduino

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invité(s)