1/160 - Echelle N

Le Forum consacré à l'Echelle N
 
AccueilAccueil  PortailPortail  ÉvènementsÉvènements  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
N'hésitez pas à consulter le calendrier et les événements du forum pour voir les manifestations près de chez vous !
-20%
Le deal à ne pas rater :
-20% Récupérateur à eau mural 300 litres (Anthracite)
79 € 99 €
Voir le deal

 

 Module T-Trak quadruple Hieronymus-Station (Jicébé)

Aller en bas 
+10
Gbo95
Dodesir
SoriaNo
jef34
Metienne78
CC72000
TRAINTRAIN95
patniste
nordouest
Jicébé
14 participants
Aller à la page : Précédent  1, 2, 3, 4, 5, 6  Suivant
AuteurMessage
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeJeu 19 Déc - 23:08

Menuiseries des modules : Erreur critique !-
Cela fait maintenant plus d'un mois que je cherche à faire la menuiserie du module secondaire (la gare cachée)

J'en ai besoin pour trois raisons :
La plus évidente, il sera nécessaire pour boucler un jour le réseau.
Il devra aussi servir de support pour le transport du module principal, fragile, qui sera au-dessus du module secondaire et solidarisé avec lui par des montants boulonnés.
Il doit me servir MAINTENANT de brouillon pour valider la position des créatures, le plan de voies définitif, le positionnement des actionneurs divers.

tant que je ne l'ai pas, je suis coincé pour la suite.
J'ai donc dessiné les pièces à découper/assembler à partir d'une plaque de contre-plaqué de 1220 x 610x8 mm, comme d'habitude :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Eclate_08
puis demandé à OpenSCAD de me calculer les dimensions des pièces :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Console_08

Ensuite, la galère : recherche d'une plaque de CP correcte :

Echec complet

Chez tous mes fournisseurs, je suis sur le même problème que d'autres membres de ce forum  (https://le-forum-du-n.1fr1.net/t30323p125-le-nouveau-projet-de-grandcharles#p606191)


Epaisseur_planche = 8;




Les panneaux de CP étaient tous gondolés, et les bords souvent abîmés.
La dernière fois que j'en ai utilisé, cela s'est fini à la déchèterie.
affraid affraid affraid
J'ai donc cherché une solution de repli, et j'ai trouvé du médium de 6 mm d'épaisseur, en plaques de mêmes dimensions que celles du CP.
Heureux, j'ai donc changé la valeur de l'épaisseur :
Citation :
Epaisseur_planche = 6;
au lieu de :
Citation :
Epaisseur_planche = 8;
et OpenSCAD m'a tout recalculé,


Les nouveaux panneaux :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Eclate_06

La façon de les raccrocher :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Module_06

Le résultat souhaité :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Fini_06

et les dimensions de ces nouveaux panneaux :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Console_06

ce qui m'a permit de griffonner un plan de découpe :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Plan_Decoupe_2


Hélas : en arrivant au magasin, mon plan de découpe à la main, PLUS DE MEDIUM de 6mm !!!
provisoirement épuisé
GRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR !
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Colere_2Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Colere_2Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Colere_2Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Colere_2Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Colere_2
GRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR !

Donc, il ne me reste plus qu'à hiberner, en attente de CP de 8 mm ou de médium de 6 mm...
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeJeu 26 Déc - 0:15

En attendant de trouver du bois correct, je viens de "sqatter" quelques planches que je n'ai pas le droit de couper, de percer, et que je vais devoir rendre dans un avenir proche, hélas...
Mais j'en ai profité pour faire un essai du futur module arrière (la gare cachée).



bounce bounce bounce bounce bounce
J'ai même pu voir enfin des choses rouler !!!
santa santa santa santa santaC'est Noël !!!
Le module complet, sans les voies métriques :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4901

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4902

Essai d'encombrement :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4907


Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4908

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4909


Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4910


Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4911
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeVen 27 Déc - 0:09

Suite à une série de tests, je vais améliorer le plan de voies du module arrière.
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Module_Arriere_bretelles_Noms

Au niveau des deux bretelles successives :

J'ai découvert un parking longue durée pour locomotive (au singulier) :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4913

La rame de bière, en haut, voie 1, s'engage sur la voie principale, et va passer de droite à gauche dans le module principal.
La rame de wagons tombereaux pleins, voie 2, coupe la voie 3 et s'engage sur la voie unique, via la voie 4. Le Public, devant le module principal va la voir ressortir de la grotte secondaire.
A l'extrémité droite de la voie 2, une locomotive s'est endormie...

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Parking_D
En tassant bien, je dois pouvoir exceptionnellement y garer une rame courte de deux trémies pour laisser partir la rame suivante vers la grotte secondaire en stoppant momentanément le trafic de la voie 1.

Au niveau du raccordement des voies 3 et 4, à gauche :
Avec un aiguillage de plus, et trois rails courbes référence 20-170 /R218-45, formant un arc de 3x45° de rayon 218 mm, je dois pouvoir faire une zone de stockage en impasse d'un peu plus de 50 cm, ce qui permet d'y garer au moins la rame la plus à gauche de la voie 4 pour en laisser passer une autre.

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Details

Remplacement des bretelles par un croisement.
Test :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4915
Cela nécessite de supprimer les deux bretelles de raccordement, et de les remplacer (en plus du croisement) par une paire d'aiguillages.
Mais en utilisant pour le raccordement voie 3/voie4/voie de stockage à gauche, les deux aiguillages ainsi récupérés peuvent être utilises.
En gros :
Citation :

Echange paire d'aiguillages contre une bretelle.
Le coût financier n'est que de 7 à 8 € pour un croisement.
Mais le coût "travail" est plus élevé :  il n'existe pas de croisement KATO convenant confused , et il me faudra donc en torturer un, en sciant  proprement  affraid rails et ballast des deux branches obliques.

A vue de nez, je dois gagner au moins 12 cm pour la voie 2, soit l'équivalent de deux tombereaux courts. Mais je perds la petite zone de repos pour une loco à droite.


J'hésite... Qu'en pensez-vous ?
Revenir en haut Aller en bas
http://jcbecker.free.fr
morfil
Membre
Membre
morfil


Masculin Age : 76
Localisation : au pied de la rhune
Nombre de messages : 551
Date d'inscription : 12/06/2013

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeVen 27 Déc - 9:19

J'adore tes girls Very Happy
Revenir en haut Aller en bas
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeSam 28 Déc - 23:20

La partie métrique :

La voie est posée !!!
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4921
A noter que "posée" est à prendre au sens propre : elle est déposée, non fixée, et est encore pleine de vie, elle bouge encore, la bougre...

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4922

Le plan de voies
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Module_Arriere_Nm_AnyRail

La longueur :
La longueur indiquée a été calculée par AnyRail, entre deux points que j'ai indiqués à la souris, alors, les 7 dixièmes de millimètres, ...

La longueur exact correspond (pour la voie 2_Nm) à 4 aiguillages de 11 cm chacun, 3 coupons droits de 22 cm chacun et un coupon de 11 cm, soit 121 cm.

Les voies N imposent 31 x4 = 124 cm.
Il manque donc une longueur de 3 cm pour que cet ensemble de voies Nm rejoignent les voies Nm des modules d'angle.
Ce n'est pas une erreur !
Les 1,5 cm manquant de chaque côté seront garnis par des rails extensibles, comme indiqué pour la voie arrière dans la norme MOROP NEM 916.

La largeur :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Largeur

Il reste encore de la place : 8 cm de libre vers le centre du réseau.
Cela va me permettre de glisser plus au moins les voies Nm vers ce centre, en fonction des voies Nm des modules d'angles, elles-mêmes dépendant de la position de la voie Nm du module principal.
Affaire à suivre...

Heure de pointe sur le module arrière :

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4923

Principe des circulations Nm :

  • Voie 1_Nm : pose et dépose des rames.
  • Voie 2_Nm : circulation dans le sens des aiguilles d'une montre.
    Les spectateurs devant le module principal verront les rames arriver de la grotte secondaire et se diriger vers la galerie de mine-musée. Les wagons-tombereaux sont vides.
  • Voie 3_Nm : circulation dans le sens contraire des aiguilles d'une montre.
    Les spectateurs devant le module principal verront les rames arriver de la la galerie de mine-musée et se diriger vers la grotte secondaire. Les wagons-tombereaux sont pleins.
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeLun 6 Jan - 0:04

Une bien mauvaise nouvelle :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Deces_Homme_Trompette


De notre reporter spécial, sur place : a écrit:
Il semblerait que l'homme-trompette, chargé de prévenir de l'arrivé d'un train sur le module, était sur sa plate-forme, pour une répétition, quand soudain, celle-ci a soudainement basculé, sans signe annonciateur.
Ce fût très soudain !
L’homme-trompette a glissé, n'a pas pu se retenir, et a basculé dans le vide.
Il a fait alors une interminable chute, de plus de 1000 mm !



La plate-forme après l'accident :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Chute

Image d'archive, juste avant l'accident :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4925

Selon la police, dont les Experts ont enquêté longuement, ce n'est ni un meurtre, ni un suicide, mais un tristement banal accident.
Toutefois, il n'est pas impossible que les fournisseurs de plaques de bois de qualité aient une part de responsabilité :
S'ils avaient livré le bois demandé, il n'aurait pas été nécessaire de récupérer le bois d’occasion du module arrière, bois lui-même déjà récupéré on ne sais où, et de le compléter avec du carton plume beaucoup trop fragile.

Quelques interview "sur le chaud" :

Le Monstre-Barbu a écrit:
J'en tremble encore...
J'étais sur la plate-forme avec mon collègue, quand j'ai senti que celle-ci basculait.
J'ai réussi de justesse à me retenir, mais j'ai vu mon pauvre collègue basculer dans le vide.
Je vous laisse, j'ai rendez-vous avec un psy...


L'oiseau-Tour a écrit:
Ben, vla : j'étais en train de dégager à coup de masse un bout de voie Decauville enseveli lors du tremblement de terre du XIXe siècle, quand tout a basculé.
Je n'ai pas vu grand chose, j'ai juste fait un grand saut en arrière !
Mais mon cœur en a pris un coup.


Le Danseur-Hibou a écrit:
Moi, je n'ai pas vu grand chose, à part la muraille qui s'est mise à s'éloigner devant moi.
Je n'ai rien compris...


Le Poisson-roues a écrit:
Je n'ai rien vu, rien entendu...
Mais je suis tout retourné...
C'était à la fois un ami, et un partenaire : quand j'entendais son solo de trompette, je savais que je pouvais sortir tranquillement  de ma grotte pour venir contempler le train qui passe.
Dommage que cet horreur de diable-pot de chambre gâche tout à chaque fois avec son horrible ricanement m'obligeant à reculer précipitamment dans ma grotte !
En plus, ce monstre m'interdit formellement de faire "MEUH" chaque fois que je vois passer un train !
On devrait la chasser, cette terreur cannibale !!!!!


Le Diable-Pot de Chambre a écrit:
Moi, j'étais pas là...
Mais je suis triste, l'homme-Musique et moi étions de bons partenaires:
Lui jouait du cor, ou du clairon, ou un truc de ce genre là, pour prévenir de l'arrivée d'une rame.
Moi, je poussais un petit rire charmant pour prévenir du départ de cette rame :
http://jcbecker.free.fr/Modelisme/Mes_Modules/Hieronymus_Station/Sons/haharir.mp3

Et en plus, tout le monde a refus que je m'occupe du corps !!!

Mais qu'est devenu le corps ?

Aux dernières nouvelles, l'Homme-Trompette avait légué son corps à la Science, et celle-ci s'apprête à sortir disque -Dremel à tronçonner, et surtout petite perceuse pour voir s'il est possible de percer et enfoncer une vis dans son trou du Embarassed pale quelque par pour le fixer plus solidement sur son support.

Et l'avenir ???

L'homme-trompette est issu d'une famille nombreuse, et un frère jumeau devrait prendre la relève d'ici quelques semaines.


En mémoire à l'Homme-Trompette, mort pour le bien du Réseau, son célèbre solo de trompette, annonciateur d'un train :
http://jcbecker.free.fr/Modelisme/Mes_Modules/Hieronymus_Station/Sons/2940.mp3
Revenir en haut Aller en bas
http://jcbecker.free.fr
patniste
Membre
Membre
patniste


Masculin Age : 78
Localisation : Lamballe22400
Nombre de messages : 12698
Date d'inscription : 19/07/2011

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeLun 6 Jan - 16:21

JICEBEcomme écrit ci contre , complètement barré le gars
Caiss tas fumé Doudou dis donc ! m'a l'air d’être costaud le truc clown alien
Condoléances à la famille des instruments à vent
Revenir en haut Aller en bas
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeVen 10 Jan - 9:06

patniste a écrit:

Caiss tas fumé Doudou dis donc ! m'a l'air d’être costaud le truc clown alien  

N'insiste pas, Twisted Evil  je garde tout pour moi, non mais ! bounce

patniste a écrit:
complètement barré le gars

On se moque, on se moque...
Mais je suis très fier de mon reportage, déjà proposé (en freelance) à plusieurs quotidiens, hebdomadaires et mensuels.
Et je vise maintenant le prochain PULITZER.
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Gen_pulitzer


patniste a écrit:

Condoléances à la famille des instruments à vent

Merci pour ton soutien en cette douloureuse période.
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeVen 10 Jan - 23:37

Mon nouveau Clairon à pattes est commandé.. Plus qu'à attendre sa livraison, et le réapprovisionnement en bois de bonne qualité...

Mais en arrivant au magasin de ma fournisseuse, surprise ! Une nouvelle version du Diable-Pot de Chambre en vitrine.
La version que j'avais déjà était très édulcorée :

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4136

alors que le Maître avait peint :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Tableau


La nouvelle version respecte mieux l’œuvre du Maître :

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4946_H500

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4949_H_400

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4951_H400

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 DSCN4950

Cela change de toutes ces maquettes avec un homme dans une cahute "au fond du jardin", assis sur son trône, porte ouverte, pantalon sur les chevilles, en train de lire son journal...


A noter que ce genre de WC primitifs n'était pas rare chez les peintres flamands du XVI siècle.
Voici la version de Pieter Brueghel l'Ancien ("Les Proverbes flamands", 1559) :

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Brueghel


Bon appétit.
Revenir en haut Aller en bas
http://jcbecker.free.fr
patniste
Membre
Membre
patniste


Masculin Age : 78
Localisation : Lamballe22400
Nombre de messages : 12698
Date d'inscription : 19/07/2011

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeSam 11 Jan - 14:41

Mangerai plus de poisson Beurk !
Revenir en haut Aller en bas
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeSam 11 Jan - 22:18

C'est sans doute suite à ce problème qu'un célèbre verdâtre Très Grand (bien que plutôt petit) Philosophe/Maître à Penser a dit
Citation :
Le poisson, pour pêcher, en amont de la ville te mettras.
Le poisson, pour nettoyer, en aval de la ville te mettras.


La suite est un peu floue...
Il semblerait que la ville située juste en aval de la ville du célèbre verdâtre Très Grand (bien que plutôt petit) Philosophe/Maître à Penser ait pris les armes et attaqué au cri de
Citation :
NON! NON! NON!
Pas en aval de votre ville !
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeJeu 16 Jan - 23:08

En attendant le "bois nouveau", il est temps de s’intéresser plus à l'informatique.

Tout d'abord une remarque : le pilotage du réseau  (marche arrêt et réglage des vitesses des trains, commande des aiguillages, ... resteront entièrement manuels. les arduinos sont prévus uniquement pour animer le décor, en fonction de la position des trains sur la voie circulant de gauche à droite (en principe, la voie de gauche)


Schémas des circuits électriques

Partie "courants de traction" :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Branchements_Traction_800
En noir, les fils amenant le courant de traction au détecteur Viessmann.
En rouge, les fils distribuant le courant de traction aux huit zones, depuis le détecteur Viessmann.

Partie "Courants de détection" :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Branchements_Detection
Chaque sortie "Travail" des relais 1 à 8 du détecteur Viessmann est relié, respectivement, à l'une des entrées 22 à 29 de chaque arduino.
Ces entrées seront au niveau "Haut" (+5V) en présence d'un train, et au niveau "Bas" (0V) si la résistance de rappel a bien été placée

Les contraintes
Quand l'arduino découvre un niveau Haut sur une des entrées, il doit exécuter l'animation prévue pour la zone concernée par cette entrée.
Mais ce test de l'entrée étant fait au moins une centaine de fois par seconde, il faut empêcher que cette animation soit lancée plusieurs fois lors du passage d'une rame.
Pour cela , à chaque zone, j'associe ce qu'on nomme "un drapeau" ("flag" en langue outratlanticaine...),et qui est une mémoire de un bit pouvant donc prendre uniquement deux valeurs, et que je prénomme "M" suivi du numéro de la zone concernée.
Au départ, le drapeau sera à zéro, ce qui autorise l'exécution de l'animation.
A la première détection d'un essieu détectable, l'animation constate que le drapeau est à 0, lance l'animation, et bascule le drapeau à 1.
Aux autres détections, l'arduino constate que le drapeau est à 1, et ne relance plus cette animation.

Il semble logique de faire le test des zones  allant de la zone 1 à la zone 8 :
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Actions_Zi_croi

Mais cela risque de mener à des erreurs :  en cas de RESET, l'arduino ne va pas utiliser le premier, mais le dernier essieu détecté.

Le test des zones se fera donc en allant de la zone 8 à la zone 1, en contresens de la circulation des trains.
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Actions_Zi_dec

YAPLUKA (FAUKON) rédiger le programme...
Prochainement...
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeDim 1 Mar - 0:16

Après un petit passage à vide pour diverses raisons, reprise (lente) des travaux.

Toujours au programme, la programmation des deux arduinos.

Avant de se lancer dans des "choses compliquées", il est nécessaire de se munir des bons outils de travail, à savoir : une carte de géographie, un dictionnaire linguistique, et une bibliothèque (entre autres).

La carte de géographie :

Les arduino "méga" sont les plus richement dotés en "entrées/sorties", c'est d’ailleurs pour cela que je les ai choisis.
En plus de quelques prises de service, ils disposent de 16 entrées analogiques capable chacune de mesurer directement toute tension comprise entre 0 et +5 volts, et, avec l'aide d'un adaptateur, toute tension quelle qu'elle soit, y compris la tension entre les deux rails d'une voie.es entrées sont numérotées de "A0" à "A15" en langage arduino.

Ils disposent en plus de 5 entrées/sorties digitales, numérotées de "0" (sans "A") à 53.
Toutefois, certaines de ces entrées/sorties peuvent être utilisées pour des usages spéciaux par les arduinos, et doivent donc pas être utilisées pour autre chose.

J'ai regroupé dans ma page http://jcbecker.free.fr/Modelisme/Mes_Modules/Hieronymus_Station/Arduino/Brochage/Brochages.php, sous forme de tableaux, la totalité de ces entrées/sorties, avec leurs utilisations.
En rouge : ce sont les entrées/sorties réservées aux arduinos.
En jaune, celles que j'utilise déjà, avec diverses indications (ce à quoi elles sont reliées, et à quoi correspond leur état.
Au fur et à mesure que je vais ajouter des périphériques, il me suffira alors de compléter les lignes correspondantes.

A suivre : La Grande Bibliothèque.
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeDim 1 Mar - 23:04

<La Grande Bibliothèque.

Chaque fois qu'on ajoute un périphérique, le programme téléchargé dans l'arduino doit savoir le gérer.
Il faut donc que "quelqu'un" écrive "à la main" cette partie du programme, ce qui peut générer de très remarquables crises de nerfs dans certains cas.  confused pale No

Si je prends l'exemple du shield "Ethernet" (la carte qu'on enfiche sur l'arduino), elle contient deux périphériques : un serveur WEB et une carte SD faisant office de disque dur.
Pour utiliser le serveur, il faudrait gérer tout son fonctionnement, protocole TCP-IP compris, ce qui n'est réalisable que par des professionnels de la chose.
Pour utiliser la carte SD, il faudrait gérer également tout son fonctionnement, ce qui n'est réalisable que par des professionnels de la chose.
Enfin, ces deux périphériques communiquant avec l'arduino par le bus SPI, il faut le gérer, avec la prise indiquant si c'est le site WEB ou la carte Sd qui travaille, gérer le fil permettant les envois "arduino vers périphérique", le fil permettant les envois "périphérique vers arduino", et le fil "horloge" donnant un signal rectangulaire de forme et de fréquence corrects.

Heureusement, la règle quand on créé un périphérique est d'écrire aussi les fichiers permettant de la gérer et de les regrouper dans ce qu'on appelle en langage arduino une bibliothèque, qui est ajoutée aux autres bibliothèques, quelque part sur le web

Pour utiliser ces bibliothèques, il suffit d'ouvrir le menu déroulant de l'éditeur spécialisé de l'arduino, de descendre jusqu'au nom de la bibliothèque, et de la sélectionner.
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Biblios
http://jcbecker.free.fr/Modelisme/Mes_Modules/Hieronymus_Station/Arduino/Brochage/Biblios.jpg

Une copie de cette bibliothèque est alors installée au bon endroit sur le disque du PC.
Pour l'utiliser, il suffit alors d'écrire en tête de programme la ligne "#include <"nom de la bibliothèque".h> en respectant majuscules et minuscules.

Pour le shield avec serveur WEB, il faut donc télécharger les bibliothèques gérant la partie internet, la partie SD-carte et le bus SPI.
ce qui donne, pour l'arduino "A" :
Code:

//=====================
#include <Ethernet.h>
#include <SD.h>
#include <SPI.h>
//=====================

et pour l'arduino "B" :
Code:

//=====================
#include <AudioSound.h>
#include <SD.h>
#include <SPI.h>
//=====================

Cette partie du programme (la zone des "includes") devra être complétée à chaque ajout d'un périphérique sur les arduinos.

A suivre : le "dictionnaire linguistique"
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeLun 2 Mar - 23:21

Le "dictionnaire de langues".
A quoi sert-il ?
Il est très utile si on veut modifier facilement un programme écrit depuis un certain temps.
Exemple concret :
Je vais utiliser la portion de code suivant :
Code:

if ( digitalRead (25)  == HIGH)
 {
  // Actions à effectuer
 }
else
 {
  // Actions à effectuer
 }
Question qui peut se poser au bout du "un certain temps : Mais que fait ce code ???
Réponse :

  1. Il commence par "if", donc c'est un test.
    Si le résultat du test est vrai, (OUI, HIGH, 1,...) alors on exécute les actions écrites dans la première paire d'accolades
    Si le résultat du test est faux, (NON, LOW, 0,...) alors on exécute les actions écrites dans la deuxième paire d'accolades
  2. La chaîne "==" indique qu'on vérifie que ce qui est à gauche de "==" a la même valeur que ce qui est à droite.
  3. Le mot "digitalRead" montre qu'on va lire une entrée digitale et la valeur 25 indique qu'il s'agit de l'entrée n°25.
    Le test consiste donc à vérifier si l'entrée digitale n°25 est bien à l'état HIGH (Vrai, 1, +5volts, ...)
  4. Il faut maintenant suivre le fil arrivant à l'entrée 25 pour voir qui peut y envoyer du +5 volts.
    On trouve (si on arrive à suivre ce fil...) , en vrac, un autre arduino, une résistance électrique, et la sortie "TRAVAIL" du relais numéro 4 du détecteur VIESSMANN
    Conclusion : on aura l'état HIGH quand le relai n°4 sera en position "travail", donc quand ce détecteur détectera quelque chose dans la zone surveillée n°4
  5. Mais que surveille le détecteur n° 4 ?
    En suivant le fil d'alimentation traction n°4 sortant du détecteur Viessmann, on arrive à la zone Z_4 du module principal .

OUF !
Conclusion; on exécutera les instructions de la première paire d'accolades si quelque chose est détecté en zone Z_4, ou les instructions de la deuxième paire d'accolades si rien n'y est détecté.


Quelqu'un d'organisé, et à condition de tenir soigneusement les tableaux comme ceux de la page http://jcbecker.free.fr/Modelisme/Mes_Modules/Hieronymus_Station/Arduino/Brochage/Brochages.php peut aller plus vite :

  1. Recherche de la ligne du pin 25 digitale de l'arduino "A" :
    Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Extrait_Pin25
    http://jcbecker.free.fr/Modelisme/Mes_Modules/Hieronymus_Station/Arduino/Brochage/Extrait_Pin25.jpg
  2. Recherche de la légende en haut du tableau :
    Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 En_tete_Pins

et on a la réponse, à condition d'avoir maintenu ce tableau à jour.

Mais il y a encore bien plus efficace : la création d'un dictionnaire bilingue.

Ne manquez pas la prochaine fois : création et utilisation du dictionnaire bilingue
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeMar 3 Mar - 23:38

En faisant un état des lieux, nous constatons que nous sommes en présence de trois "entités" pratiquant deux langages différents :
L'arduino pratique le langage "arduino", fait d'une suite de "1" et de "0" regroupés par paquets de huit, (les octets). Ce langage est totalement incompréhensible par la presque totalité des Humains.
L'Humain, après apprentissage, parle parle l' "humain-arduino", une sorte de langage humain adapté à l'arduino, mais que l'arduino ne comprends pas.
Le compilateur (qui est un programme informatique tournant sur un gros ordinateur), sait lire l' "humain-arduino" et le traduire en "arduino" dans un fichier rangé dans la mémoire vive du gros ordinateur.
Mais, comprendre une ligne écrite en comme
Code:
if ( digitalRead (25)  == HIGH)
"humain-arduino" peut poser des problèmes de compréhension, comme vu dans le post précédent.
L'idéal serait d'écrire à la place
Code:
if ( digitalRead (Z_4)  == OCCUPE)
qui se comprend tout de suite comme
"Si qu'ya quekchose de détecté dans Z_4, alors faire..."

L'option, ou plutôt deux options, existent pour réaliser cela.
Première option :
Au début du programme, on crée deux variables constantes (si, si, c'est bien comme ça qu'on dit) :
Code:
Constant int Z_4 = 25;
Booleen OCCUPE = HIGH;
et le code peut alors s'écrire
Code:
if ( digitalRead (Z_4)  == OCCUPE)
Z_4 et OCCUPE étant les noms des deux variables.
C'est la méthode généralement conseillée.
Mais elle a un très grave défaut : un énorme gaspillage d'une denrée rare et chère pour un arduino ; la mémoire vive.
Chacune des 8 variable Z1..Z8, par exemple,  va consommer deux octets de la mémoire vive de l'arduino.
Alors, je crie NON !!! aux traditions et aux bons conseils de la majorité de mes collègues programmeurs, seule la deuxième option est valable pour un arduino.

Deuxième option :
On va utiliser des mots d'un troisième langage, Humain pur.
Mais comme le compilateur ne va pas les comprendre, on va aussi lui fournir une sorte de dictionnaire "Humain pur"->"Humain-Arduino"
De ce fait, le compilateur va pouvoir, dans un premier temps, traduire "Humain pur" en "Humain-Arduino", puis ensuite, traduire l' "Humain-Arduino" en Arduino pur.
Avantage : tout le travail se fait dans le gros ordinateur, et non dans l'arduino, qui préserve donc la totalité de sa mémoire vive pour le travail utile.

Ce dictionnaire est en fait une succession de ligne au format
#define < mot "Humain-Arduino">
(define doit être en majuscule, et suivre sans espace le symbole dièse)

Ce qui donne,pour mes deux arduinos ;

Code:
// ===== dictionnaire de langue : les "define"  
// 1.)  les noms des PINs pour les détections
#define Z_1 22
#define Z_2 23
#define Z_3 24
#define Z_4 25
#define Z_5 26
#define Z_6 27
#define Z_7 28
#define Z_8 29
// Le PIN  commandant le relais pour couper le courant traction dans la zone Z_4
#define STOP_Z_1 30 // Le relais pour couper le courant traction dans la zone Z_4

// 2.)Les valeurs logiques possibles pour les occupations de zone
#define LIBRE HIGH
#define OCCUPE LOW

// 3.)Les valeurs logiques possibles pour les activités
#define FAIT HIGH
#define PAS_FAIT LOW

Cette liste de #define n'est pas limitative, et sera complété au fur et à mesure des besoins.

A suivre, le debut du "SETUP()".
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeJeu 5 Mar - 23:09

Le travail vu jusqu'à maintenant se passe uniquement dans le gros ordinateur relié à l'arduino par son bus USB.
Si on compile et télécharge dans l'arduino, celui-ci ne reçoit rien, on s'est juste contenté de fabriquer les outils pour écrire le "croquis" (nom que l'arduino donne au programme).

Le croquis se compose de deux parties :
La première partie, le setup,
Code:

setup ()
 {

 }
contient entre les deux accolades toutes les lignes de code à exécuter une seule fois au démarrage de l'arduino.
Il s'agit principalement de paramétrer les entrées/sorties, et de créer et initialiser les varizbles globales.
Ce qui donne ici
Pour les entrées/sorties :
Pour initialiser une entrée/sortie digitale en entrée :
Code:
pinMode(Z_4,INPUT);
Pour initialiser une entrée/sortie digitale en sortie :
Code:
pinMode(STOP_Z_1 30,OUTPUT);
Pour créer une variable booléenne valant "Pas_Fait" :
Code:
const boolean trav_Z_4 = Pas_Fait;

Ce qui nous donne le code :
Code:

void setup()
   {
     //  Les tests des zones
     pinMode(Z_1,INPUT);
     pinMode(Z_2,INPUT);
     pinMode(Z_3,INPUT);
     pinMode(Z_4,INPUT);
     pinMode(Z_5,INPUT);
     pinMode(Z_6,INPUT);
     pinMode(Z_7,INPUT);
     pinMode(Z_8,INPUT);

     // les drapeaux indiquant si le travail a déjà été fait ou non
     const boolean trav_Z_1 = Pas_Fait;
     const boolean trav_Z_2 = Pas_Fait;
     const boolean trav_Z_3 = Pas_Fait;
     const boolean trav_Z_4 = Pas_Fait;
     const boolean trav_Z_5 = Pas_Fait;
     const boolean trav_Z_6 = Pas_Fait;
     const boolean trav_Z_7 = Pas_Fait;
     const boolean trav_Z_8 = Pas_Fait;

     //la sortie permettant de couper le courant de traction en zone Z_1
     pinMode(STOP_Z_1 30,ROULE);  // Le relais est au repos
}
Cela nécessite d'ajouter deux nouvelles lignes dans la partie "#define"
Code:

#define STOP HIGH
#define ROULE LOW

La suite prochainement...
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeVen 6 Mar - 23:26

La boucle
Après la phase d'initialisation vient ce qu'on appelle la boucle (loop en langage arduino)

Code:

void loop()
  {
    //  ici le code des instructions à effectuer
  }

Le code sera exécuté de la première à la dernière instruction, puis l'arduino reprendra à la première ligne du "loop", et cela tant qu'on ne coupera pas son alimentation électrique.
Pour mon module, la partie loop() sera divisée en trois parties :
Le test des 8 zones Z1...Z8 et l’exécution  du travail à faire pour chaque partie.
lLes instructions ne dépendant pas du passage des trains (par exemple, déclenchement aléatoire d'un orage)
La réinitialisation des drapeaux (les variables booléennes)

Ce qui donne comme architecture du programme :

http://jcbecker.free.fr/Modelisme/Mes_Modules/Hieronymus_Station/Arduino/Programmation/Principes_0_h440.jpg
Pour chacune des huit zones, le principe du travail à effectuer sera le même.
Par exemple, pour la zone Z_4, et son drapeau, la variable booléenne trav_Z_4 :

La zone est gérée par deux variables booléennes :

  • L'état de l'entrée Z_4 (pin 25 de l'arduino) dépendant du module Viessmann, lui-même dépendant de l'état LIBRE/OCCUPE de la zone.
  • L'état de la variable trav_Z_4.


Cela nous donne quatre configurations possibles :

Entrée Z_4 = LIBRE et le drapeau trav_Z_4= Pas_FAIT :
Le train n'est pas encore arrivé en Z_4, donc :

  • Rien à faire en Z_4 et après (Z_5...Z_Cool.
  • Train possible en Z_1...Z_3 : il faut tester ces zones.


Entrée Z_4 = OCCUPE et le drapeau trav_Z_4= Pas_FAIT :
Le train est en Z_4, les animations n'ont pas encore eu lieu, donc :

  • On met trav_Z_4 à  FAIT.
  • On lance les animations.
  • Rien à faire dans les autres zones.


Entrée Z_4 = OCCUPE et le drapeau trav_Z_4= FAIT :
Le train est en Z_4, les animations ont  eu lieu, donc :

  • Il n'y a rien à faire en Z_4.
  • Rien à faire dans les zones Z_1...Z_3 (avant Z_4) le train y est déjà passé.
  • Train possible en Z_5...Z_8 : il faut tester ces zones.


Entrée Z_4 = LIBRE et le drapeau trav_Z_4= FAIT :
Le train est passé en Z_4, et les animations ont étét faites, donc :

  • Rien à faire en Z_4.
  • Rien à faire en Z_1...Z_3.
  • Train possible en Z_5...Z_8 : il faut tester ces zones
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeSam 7 Mar - 23:11

D'après le post précédent, il n'est pas nécessaire de traiter les quatre configuration possibles, mais seulement celles qui ,demande à l'arduino de faire une action.

Ce qui donne, pour la zone 4, si on teste les zones de la dernière (Z_8 ) à la première (Z_1), le code :

Code:

if (trav_Z_4==Pas_FAIT)
  {
    //  Les animations prévues quand le train arrive en Z_4 n'ont pas encore été lancées...
       if (Z_4==OCCUPE)
           {
               // ----------Ici, on lance les animations.
                  trav_Z_4==FAIT;  // les animations pour Z_4 ne pourront pas être relancées
           }   // ----------Fin de " if (Z_4==OCCUPE)"
        else
          {  
            // ici, on inclus le test de la zone précédente, soit Z_3.
          }
  }  // ----------Fin de " if (trav_Z_4==Pas_FAIT)"

Le problème va être une imbrication des test des zones, le code d'une zone va être à l'intérieur du code de la zone suivante, lui-même à l'intérieur de la zone suivante, tel des poupées russes.
On se trouve donc devant le choix :
Soit on documente abondement le code à chaque crochet, ouvrant comme fermant.
Soit on devient fou en cherchant où placer cette %$£&@$ de crochet fermant afin que le programme ne plante plus.

Ce qui donne :

Code:

if (trav_Z_4==Pas_FAIT)
  {
    //  Les animations prévues quand le train arrive en Z_4 n'ont pas encore été lancées...
       if (Z_4==OCCUPE)
           {
               // ----------Ici, on lance les animations.
                  trav_Z_4==FAIT;  // les animations pour Z_4 ne pourront pas être relancées
           }   // ----------Fin de " if (Z_4==OCCUPE)"
        else
          {  
             //========== Test de la zone 3 =============
            if (trav_Z_3==Pas_FAIT)
               {
                //  Les animations prévues quand le train arrive en Z_3 n'ont pas encore été lancées...
                 if (Z_3==OCCUPE)
                      {
                       // ----------Ici, on lance les animations.
                        trav_Z_3==FAIT;  // les animations pour Z_3 ne pourront pas être relancées
                       }   // ----------Fin de " if (Z_3==OCCUPE)"
                    else
                      {  
                        // ici, on inclus le test de la zone précédente, soit Z_2
                       }
             }  // ----------Fin de " if (trav_Z_3==Pas_FAIT)"
          }
  }  // ----------Fin de " if (trav_Z_4==Pas_FAIT)"

La suite bientôt...
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeDim 8 Mar - 23:24

Le code "poupées russes" pour le squelette de la partie "détection des trains" :
Code:

 //========== Test de la zone Z_8=============
if (trav_Z_8==Pas_FAIT)
  {
    //  Les animations prévues quand le train arrive en Z_8 n'ont pas encore été lancées...
       if (digitalRead(Z_8)==OCCUPE)
           {
               // ----------Ici, on lance les animations.
                  trav_Z_8==FAIT;  // les animations pour Z_8 ne pourront pas être relancées
           }   // ----------Fin de " if (digitalRead(Z_8)==OCCUPE)"
        else
          {  
             //========== Test de la zone Z_7 =============
            if (trav_Z_7==Pas_FAIT)
               {
                //  Les animations prévues quand le train arrive en Z_7 n'ont pas encore été lancées...
                 if (digitalRead(Z_7)==OCCUPE)
                      {
                       // ----------Ici, on lance les animations.
                        trav_Z_7==FAIT;  // les animations pour Z_7 ne pourront pas être relancées
                       }   // ----------Fin de " if (Z_7==OCCUPE)"
                    else
                      {  
                        // ===========Test de la zone  Z_4
                        if (trav_Z_6==Pas_FAIT)
                          {
                            //  Les animations prévues quand le train arrive en Z_6 n'ont pas encore été lancées...
                               if (digitalRead(Z_6)==OCCUPE)
                                   {
                                       // ----------Ici, on lance les animations.
                                          trav_Z_6==FAIT;  // les animations pour Z_6 ne pourront pas être relancées
                                   }   // ----------Fin de " if (digitalRead(Z_6)==OCCUPE)"
                                else
                                  {  
                                     //========== Test de la zone Z_5 =============
                                    if (trav_Z_5==Pas_FAIT)
                                       {
                                        //  Les animations prévues quand le train arrive en Z_5 n'ont pas encore été lancées...
                                         if (digitalRead(Z_5)==OCCUPE)
                                              {
                                               // ----------Ici, on lance les animations.
                                                trav_Z_5==FAIT;  // les animations pour Z_5 ne pourront pas être relancées
                                               }   // ----------Fin de " if (digitalRead(Z_5)==OCCUPE)"
                                           else
                                              {  
                                                // ===========Test de la zone  Z_4
                                                if (trav_Z_4==Pas_FAIT)
                                                  {
                                                    //  Les animations prévues quand le train arrive en Z_4 n'ont pas encore été lancées...
                                                       if (digitalRead(Z_4)==OCCUPE)
                                                           {
                                                              // ----------Ici, on lance les animations.
                                                                  trav_Z_4==FAIT;  // les animations pour Z_4 ne pourront pas être relancées
                                                           }   // ----------Fin de " if (digitalRead(Z_4)==OCCUPE)"
                                                        else
                                                          {  
                                                             //========== Test de la zone Z_3 =============
                                                            if (trav_Z_3==Pas_FAIT)
                                                               {
                                                                //  Les animations prévues quand le train arrive en Z_3 n'ont pas encore été lancées...
                                                                 if (digitalRead(Z_3)==OCCUPE)
                                                                      {
                                                                       // ----------Ici, on lance les animations.
                                                                        trav_Z_3==FAIT;  // les animations pour Z_3 ne pourront pas être relancées
                                                                       }   // ----------Fin de " if (digitalRead(Z_3)==OCCUPE)"
                                                                    else
                                                                      {  
                                                                        // ===========Test de la zone  Z_2
                                                                        if (trav_Z_2==Pas_FAIT)
                                                                         {
                                                                           //  Les animations prévues quand le train arrive en Z_2 n'ont pas encore été lancées...
                                                                           if (digitalRead(Z_2)==OCCUPE)
                                                                                      {
                                                                                          // ----------Ici, on lance les animations.
                                                                                         trav_Z_2==FAIT;  // les animations pour Z_2 ne pourront pas être relancées
                                                                                       }   // ----------Fin de " if (digitalRead(Z_2)==OCCUPE)"
                                                                                else
                                                                                     {  
                                                                                        //========== Test de la zone 1 =============
                                                                                       if (trav_Z_1==Pas_FAIT)
                                                                                              {
                                                                                               //  Les animations prévues quand le train arrive en Z_1
                                                                                               //    n'ont pas encore été lancées...
                                                                                              if (digitalRead(Z_1)==OCCUPE)
                                                                                                     {
                                                                                                         // ----------Ici, on lance les animations.
                                                                                                        trav_Z_1==FAIT;  
                                                                                                                   // les animations pour Z_1
                                                                                                                   //   ne pourront pas être relancées
                                                                                                     }               // ----------Fin de " if (digitalRead(Z_1)==OCCUPE)"
                                                                                                    //else    {      Rien, car pas de Z_0...   } Cette ligne est inutile
                                 //=============================================================================
                                 //  tous les tests sont fait, il faut maintenant fermer les accolades, dans l'ordre inverse des ouvertures...
                                 //=============================================================================
                                                                                                       }  // ----------Fin de " if (trav_Z_1==Pas_FAIT)"
                                                                                                }  // ----------Fin de " if (trav_Z_2==Pas_FAIT)"
                                                                               }  // ----------Fin de " if (trav_Z_3==Pas_FAIT)"
                                                           }  // ----------Fin de " if (trav_Z_4==Pas_FAIT)"
                                             }  // ----------Fin de " if (trav_Z_5==Pas_FAIT)"
                                      }  // ----------Fin de " if (trav_Z_6==Pas_FAIT)"
                     }  // ----------Fin de " if (trav_Z_7==Pas_FAIT)"
  }  // ----------Fin de " if (trav_Z_8==Pas_FAIT)"
N'importe quel informaticien programmeur sauterait au plafond affraid  en voyant ce code sans connaitre le contexte de son écriture, un peu comme un adepte farouche du fine-scale découvrant un bâtiment en pâte à modeler Suspect  No  sur son réseau.

Normalement il aurait fallu faire à la place une fonction récursive, mais celle-ci est beaucoup plus gourmande en occupation de la mémoire des données, et aurait limité le nombre d'animations possible.



La suite bientôt  : comparaison avec une fonction récurrente...
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeLun 9 Mar - 23:36

La version "fonction récursive" :
Il n'est plus possible de travailler avec les "#define" du "dictionnaire de langues".
A la place, il va faloir utiliser des tableaux de données, qui vont coùter de précieux octets en mémoire.

Dans le "setup()" : on créé et initialise les tableaux de variables
Code:

int tbl_num_zones [9] = {0,1,2,3,4,5,6,7,8};
//(Ce tableau occupe (gaspille ?) 2x9, soit 18 octets en mémoire des données)
booleen tbl_mem_zones [9] = {PAS_FAIT,PAS_FAIT,PAS_FAIT,PAS_FAIT,PAS_FAIT,PAS_FAIT,PAS_FAIT,PAS_FAIT,PAS_FAIT};
//(Ce tableau occupe (gaspille ?) 1bit x9, soit 9 bits, qui vont être répartis sur deux octets en mémoire des données)

Petite remarque comme les indices dans les tableaux commencent à zéro, et que je veux faire correspondre les indices de ces tableaux avec les numéros des zones, qui commence à "1", j'ai donc créé une zone fantome n° 0.

La partie présente dans le "loop()" :
Code:

function test_zone (num_zone)
{
 if  (num_zone>1)  //sinon arrêt de la récursivité
   {
      if (tbl_mem_zones [num_zone]==Pas_FAIT)
      {
       if (digitalRead(tbl_num__zones [num_zone] )==OCCUPE)
           {
               // ----------Ici, on lance les animations pour la zone numéro "num_zone".
                  tbl_mem_zones [num_zone]==FAIT;  // les animations pour la zone de numéro "num_zone". ne pourront pas être relancées
           }   // ----------Fin de " if (digitalRead(tbl_num__zones [num_zone])==OCCUPE)"
   } // === fin de if (tbl_mem_zones [num_zone]==Pas_FAIT)
    else
          {  
           test_zone ((num_zone-1); on lance le teste pour la zone précédente
          }
}  // === fin de if  (num_zone>1)


La suite bientôt : comparaison entre les deux versions, et mises en œuvre...
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeDim 15 Mar - 21:14

sunny Du  très bon bounce,...et du affraidpas bon du tout... No

Du très bon :
J'ai le bois pour mes deux grands modules !!!
Du beau médium de 6 mm, bien lisse, bien solide. Et parfaitement découpé, au millimètre près, en  plaques de dimensions souhaitées.
YAPLUKA (mais FOKON) coller/visser, avec quelques baguettes de renfort aux angles, et toute la menuiserie est terminée.

Toute la voie est posée (mais en "volant", sur des planches provisoires). YAPLUKA (mais FOKON) poser/clouer la voie sur les modules définitifs, et le réseau est terminé.

Pataras !
Je suis à 350 km de tout ça, revenu à Paris pour cause d'élections.

Monsieur Coronavirus (à qui j'ai échappé jusqu'à maintenant) me bloque loin de mes morceaux de réseau, et de Marie aussi, confiné dans son home, pour plus de quatre semaines...
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeMar 17 Mar - 11:25

Après les tests des zones Z_1 à Z_8, et l'exécution des animations concernées, il faut lancer les actions aléatoires (ne dépendant pas de la position des trains).
Voici le code de cette partie :
Code:

 //============ Début des actions aléatoires =============

 //  =========== Fin des actions aléatoires ===============
Que fait ce code ? Rien du tout, mais il le fait très bien.
Ce sont deux lignes de commentaire entre lesquelles il faudra placer toutes les actions aléatoires


Il reste un dernier problème à régler :  la remise à zéro des drapeaux, sans laquelle le train suivant ne pourra pas déclencher les animations.
Pour cela, on teste l'ensemble des zones, et si toutes sont libres, on remet les drapeaux à "PAS_FAIT".

Code:

 //========== Remise à Zéro des actions liées aux zones Z1 à Z8 =============
       if (
                  (digitalRead(Z_1)==LIBRE)
            &&(digitalRead(Z_2)==LIBRE)
            &&(digitalRead(Z_3)==LIBRE)
            &&(digitalRead(Z_4)==LIBRE)
            &&(digitalRead(Z_5)==LIBRE)
            &&(digitalRead(Z_6)==LIBRE)
            &&(digitalRead(Z_7)==LIBRE)
            &&(digitalRead(Z_8)==LIBRE)
           )    //   Ce test rend VRAI si toutes les zones sont libres.
  
                {    // ----------Tous les zones sont à LIBRE : la rame est donc passée,
                     //on remet les drapeaux à PAS_FAIT pour autoriser à nouveau les animations.
                     trav_Z_1 = PAS_FAIT;
                     trav_Z_2 = PAS_FAIT;
                     trav_Z_3 = PAS_FAIT;
                     trav_Z_4 = PAS_FAIT;
                     trav_Z_5 = PAS_FAIT;
                     trav_Z_6 = PAS_FAIT;
                     trav_Z_7 = PAS_FAIT;
                     trav_Z_8 = PAS_FAIT;
                }  //  =======Fin de Remise à Zéro des actions à effectuer=============
   // L'arduino va maintenant recommencer son cycle au début de la boucle "loop ()"

A suivre ...
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeJeu 19 Mar - 13:43

J'ai regroupé tous les morceaux de code dans le fichier ci-dessous :
Code:

//=====================
#include <Ethernet.h>
#include <SD.h>
#include <SPI.h>
//=====================
    
// ===== dictionnaire de langue : les "define"  ===
    // 1.)  les noms des PINs pour les détections
    #define Z_1 22
    #define Z_2 23
    #define Z_3 24
    #define Z_4 25
    #define Z_5 26
    #define Z_6 27
    #define Z_7 28
    #define Z_8 29
    // Le PIN  commandant le relais pour couper le courant traction dans la zone Z_4
    #define STOP_Z_1 30 // Le relais pour couper le courant traction dans la zone Z_4

    // 2.)Les valeurs logiques possibles pour les occupations de zone
    #define LIBRE HIGH
    #define OCCUPE LOW

    // 3.)Les valeurs logiques possibles pour les activités
    #define FAIT HIGH
    #define PAS_FAIT LOW

    // 4.)Les valeurs logiques possibles pour les feux rouge:vert
    #define STOP HIGH
    #define ROULE LOW
//=========== Initialisations ======

void setup()
   {
     //  Les tests des zones
     pinMode(Z_1,INPUT);
     pinMode(Z_2,INPUT);
     pinMode(Z_3,INPUT);
     pinMode(Z_4,INPUT);
     pinMode(Z_5,INPUT);
     pinMode(Z_6,INPUT);
     pinMode(Z_7,INPUT);
     pinMode(Z_8,INPUT);

     // les drapeaux indiquant si le travail a déjà été fait ou non
     const boolean trav_Z_1 = Pas_Fait;
     const boolean trav_Z_2 = Pas_Fait;
     const boolean trav_Z_3 = Pas_Fait;
     const boolean trav_Z_4 = Pas_Fait;
     const boolean trav_Z_5 = Pas_Fait;
     const boolean trav_Z_6 = Pas_Fait;
     const boolean trav_Z_7 = Pas_Fait;
     const boolean trav_Z_8 = Pas_Fait;

     //la sortie permettant de couper le courant de traction en zone Z_1
     pinMode(STOP_Z_1 30,ROULE);  // Le relais est au repos
}

//================================================
//================ La boucle =======================
//================================================
loop ()
{
   //================================================
  //========== Partie 1 : le test des zones =================
  //================================================
 
 //========= Test de la zone Z_8 ===================
if (trav_Z_8==Pas_FAIT)
  {
    //  Les animations prévues quand le train arrive en Z_8 n'ont pas encore été lancées...
       if (digitalRead(Z_8)==OCCUPE)
           {
               // ----------Ici, on lance les animations.
                  trav_Z_8==FAIT;  // les animations pour Z_8 ne pourront pas être relancées
           }   // ----------Fin de " if (digitalRead(Z_8)==OCCUPE)"
        else
          {  
             //========== Test de la zone Z_7 =============
            if (trav_Z_7==Pas_FAIT)
               {
                //  Les animations prévues quand le train arrive en Z_7 n'ont pas encore été lancées...
                 if (digitalRead(Z_7)==OCCUPE)
                      {
                       // ----------Ici, on lance les animations.
                        trav_Z_7==FAIT;  // les animations pour Z_7 ne pourront pas être relancées
                       }   // ----------Fin de " if (Z_7==OCCUPE)"
                    else
                      {  
                        // ===========Test de la zone  Z_4
                        if (trav_Z_6==Pas_FAIT)
                          {
                            //  Les animations prévues quand le train arrive en Z_6 n'ont pas encore été lancées...
                               if (digitalRead(Z_6)==OCCUPE)
                                   {
                                       // ----------Ici, on lance les animations.
                                          trav_Z_6==FAIT;  // les animations pour Z_6 ne pourront pas être relancées
                                   }   // ----------Fin de " if (digitalRead(Z_6)==OCCUPE)"
                                else
                                  {  
                                     //========== Test de la zone Z_5 =============
                                    if (trav_Z_5==Pas_FAIT)
                                       {
                                        //  Les animations prévues quand le train arrive en Z_5 n'ont pas encore été lancées...
                                         if (digitalRead(Z_5)==OCCUPE)
                                              {
                                               // ----------Ici, on lance les animations.
                                                trav_Z_5==FAIT;  // les animations pour Z_5 ne pourront pas être relancées
                                               }   // ----------Fin de " if (digitalRead(Z_5)==OCCUPE)"
                                           else
                                              {  
                                                // ===========Test de la zone  Z_4
                                                if (trav_Z_4==Pas_FAIT)
                                                  {
                                                    //  Les animations prévues quand le train arrive en Z_4 n'ont pas encore été lancées...
                                                       if (digitalRead(Z_4)==OCCUPE)
                                                           {
                                                              // ----------Ici, on lance les animations.
                                                                  trav_Z_4==FAIT;  // les animations pour Z_4 ne pourront pas être relancées
                                                           }   // ----------Fin de " if (digitalRead(Z_4)==OCCUPE)"
                                                        else
                                                          {  
                                                             //========== Test de la zone Z_3 =============
                                                            if (trav_Z_3==Pas_FAIT)
                                                               {
                                                                //  Les animations prévues quand le train arrive en Z_3 n'ont pas encore été lancées...
                                                                 if (digitalRead(Z_3)==OCCUPE)
                                                                      {
                                                                       // ----------Ici, on lance les animations.
                                                                        trav_Z_3==FAIT;  // les animations pour Z_3 ne pourront pas être relancées
                                                                       }   // ----------Fin de " if (digitalRead(Z_3)==OCCUPE)"
                                                                    else
                                                                      {  
                                                                        // ===========Test de la zone  Z_2
                                                                        if (trav_Z_2==Pas_FAIT)
                                                                         {
                                                                           //  Les animations prévues quand le train arrive en Z_2 n'ont pas encore été lancées...
                                                                           if (digitalRead(Z_2)==OCCUPE)
                                                                                      {
                                                                                          // ----------Ici, on lance les animations.
                                                                                         trav_Z_2==FAIT;  // les animations pour Z_2 ne pourront pas être relancées
                                                                                       }   // ----------Fin de " if (digitalRead(Z_2)==OCCUPE)"
                                                                                else
                                                                                     {  
                                                                                        //========== Test de la zone 1 =============
                                                                                       if (trav_Z_1==Pas_FAIT)
                                                                                              {
                                                                                               //  Les animations prévues quand le train arrive en Z_1
                                                                                               //    n'ont pas encore été lancées...
                                                                                              if (digitalRead(Z_1)==OCCUPE)
                                                                                                     {
                                                                                                         // ----------Ici, on lance les animations.
                                                                                                        trav_Z_1==FAIT;  
                                                                                                                   // les animations pour Z_1
                                                                                                                   //   ne pourront pas être relancées
                                                                                                     }               // ----------Fin de " if (digitalRead(Z_1)==OCCUPE)"
                                                                                                    //else    {      Rien, car pas de Z_0...   } Cette ligne est inutile
                                 //=============================================================================
                                 //  tous les tests sont fait, il faut maintenant fermer les accolades, dans l'ordre inverse des ouvertures...
                                 //=============================================================================
                                                                                                       }  // ----------Fin de " if (trav_Z_1==Pas_FAIT)"
                                                                                                }  // ----------Fin de " if (trav_Z_2==Pas_FAIT)"
                                                                               }  // ----------Fin de " if (trav_Z_3==Pas_FAIT)"
                                                           }  // ----------Fin de " if (trav_Z_4==Pas_FAIT)"
                                             }  // ----------Fin de " if (trav_Z_5==Pas_FAIT)"
                                      }  // ----------Fin de " if (trav_Z_6==Pas_FAIT)"
                     }  // ----------Fin de " if (trav_Z_7==Pas_FAIT)"
  }  // ----------Fin de " if (trav_Z_8==Pas_FAIT)"

  //================================================
  //========== Partie 2 : les actions aléatoires =============
  //================================================

     //============ Début des actions aléatoires =============

     //  =========== Fin des actions aléatoires ===============

  //================================================
  //========== Partie 3 : les réinitialisations ===============
  //================================================

   //========== Remise à Zéro des actions liées aux zones Z1 à Z8 =============
       if (
                  (digitalRead(Z_1)==LIBRE)
            &&(digitalRead(Z_2)==LIBRE)
            &&(digitalRead(Z_3)==LIBRE)
            &&(digitalRead(Z_4)==LIBRE)
            &&(digitalRead(Z_5)==LIBRE)
            &&(digitalRead(Z_6)==LIBRE)
            &&(digitalRead(Z_7)==LIBRE)
            &&(digitalRead(Z_8)==LIBRE)
           )    //   Ce test rend VRAI si toutes les zones sont libres.
  
                {    // ----------Tous les zones sont à LIBRE : la rame est donc passée,
                     //on remet les drapeaux à PAS_FAIT pour autoriser à nouveau les animations.
                     trav_Z_1 = PAS_FAIT;
                     trav_Z_2 = PAS_FAIT;
                     trav_Z_3 = PAS_FAIT;
                     trav_Z_4 = PAS_FAIT;
                     trav_Z_5 = PAS_FAIT;
                     trav_Z_6 = PAS_FAIT;
                     trav_Z_7 = PAS_FAIT;
                     trav_Z_8 = PAS_FAIT;
                }  //  =======Fin de Remise à Zéro des actions à effectuer=============
 

    //=================================
      }   //========= Fin du loop() ===========
    //=================================
    // L'arduino va maintenant recommencer son cycle au début de la boucle "loop ()"

Etant malheureusement séparé de tout mon matériel par 350 km et une frontière, je n'ai pas pu le tester en entier...
Dès la fin des "problèmes actuels, je finis de monter les modules et poser la voie, puis j'y raccorde les arduinos pour les essais.

En attendant, vous pouvez copier/coller ce code, et le modifier comme vous le souhaitez.

A bientôt.
Revenir en haut Aller en bas
http://jcbecker.free.fr
Jicébé
Membre
Membre
Jicébé


Masculin Age : 77
Localisation : Paris
Nombre de messages : 5950
Date d'inscription : 28/07/2008

Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitimeDim 22 Mar - 15:10

Jusqu'à maintenant, malgré sa longueur, mon programme (Croquis en langue "Arduino") ne fait strictement rien de visible.
Il est temps de le mettre au travail.
Malheureusement, étant séparé de tout mon matériel par 350 km et une frontière, tout est reporté à une date ultérieure plutôt floue.

Toutefois, voici quelques réalisations simples.

Cahier des charges :

  • Mettre en place un cantonnement automatique à l'entrée du module principal, sur la voie interne.
  • Pouvoir agir en plus manuellement sur ce cantonnement.


Pour la coupure du courant de traction, le principe est simple : la zone Z_1 est alimentée par la sortie 1 de la partie "traction" du détecteur Viessmann.
Il suffit donc de placer un relais sur ce fil.
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Cantonnement_Z1_1

N'importe quel relais convient du moment qu'il soit commandé sous une tension de 5 V=, avec une intensité très faible, ce qui suppose que sa bobine est alimenté par une source de tension extérieur, à travers un montage amplificateur.
Des schémas trainent partout dans les revues, les livres et sur le net,  et je vais simplement considérer que la bobine du relais dispose de trois prises ; une est à relier au "+" d'une alimentation extérieure, une autre au "-" de la même alimentation, et la troisième, qui va imposer un état "Travail"/"Repos", directement à une sortie digitale libre de l'arduino commandant ce relais (par exemple : la sortie 30).
Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Cablage_relais

Il faut maintenant ajouter les lignes de code manipulant ce relais.

Partie "bibliothèques" : en principe, il n'y a rien à ajouter.
Partie "Dictionnaire de langue" : on crée quelques mots en langage "humain pur" :
Pour le fil de commande :
Code:

#define STOP_Z_1 30                  // Le PIN  commandant le relais pour couper le courant traction dans la zone Z_1
Pour l'état souhaité, il y a une complication :
Code:

#define PEUT_ROULER HIGH
#define DOIT_STOPPER LOW
ou bien
Code:

#define PEUT_ROULER LOW
#define DOIT_STOPPER HIGH
suivant que le relais fonctionne en logique positive ou négative, et suivant que le fil de traction est relié au pole Travail ou Repos du relais
Mais une erreur est sans conséquence, et on peut utiliser la fameuse méthode dite "par tâtonnements successifs : on choisit l'une des deux possibilitées au hasard, puis, conformément à la loi de Murphy, on constate qu'on s'est trompé, on corrige et on recompile

Dans la partie void setup() :
Code:

pinMode(STOP_Z_1, OUTPUT);      // met la broche STOP_Z_1 (30) en sortie

La ligne de code
Code:

digitalWrite(STOP_Z_1, DOIT_STOPPER);
va couper le courant dans la zone Z_1 "jusqu'à nouvel ordre".


La ligne de code
Code:

digitalWrite(STOP_Z_1, PEUT_ROULER);
va rétablir le courant dans la zone Z_1 "jusqu'à nouvel ordre".

(A suivre)
Revenir en haut Aller en bas
http://jcbecker.free.fr
Contenu sponsorisé





Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Empty
MessageSujet: Re: Module T-Trak quadruple Hieronymus-Station (Jicébé)   Module T-Trak quadruple Hieronymus-Station (Jicébé) - Page 5 Icon_minitime

Revenir en haut Aller en bas
 
Module T-Trak quadruple Hieronymus-Station (Jicébé)
Revenir en haut 
Page 5 sur 6Aller à la page : Précédent  1, 2, 3, 4, 5, 6  Suivant
 Sujets similaires
-
» Module double T-Trak "PARIS" (Jicébé)
» Module T-TRAK c'est parti.
» Montage de mes kits Modules d'angle T-Trak BOIS-Modélisme (JICEBE)
» Module T-Trak triple !
» module T-Trak Gilles 44

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
1/160 - Echelle N :: Modèles réduits à l'echelle N :: Votre réseau :: Modules T-Trak-
Sauter vers: