Voir les contributions

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


Messages - Thierry

Pages: 1 ... 41 42 [43] 44 45 ... 48
631
Le logiciel DCC++ / Re : DCC++ BaseStation
« le: mars 09, 2016, 03:18:31 pm »
Merci Jean-Luc pour, littéralement, cette explication de texte.  :)

Le code est lisible et bien optimisé, c'est boooo.  8)

J'allais ajouter qu'effectivement ce test est lui même à l'intérieur d'une macro plus conséquente !

Une macro doit tenir sur une seule ligne, c'est une contrainte du langage. Mais parfois, et c'est le cas là, elle ne tient pas. Et dans ce cas, le '/' en fin de ligne signifie que la macro n'est pas terminée et qu'elle continue sur la ligne suivante !

Pourquoi faire une aussi grosse macro ?
L'autre solution de codage aurait été de faire une fonction avec les mêmes arguments R et N. Mais au moment de l'exécution la routine d'interruption aurait dû appeler cette fonction, et cela aurait généré un peu de code assembleur pour la mémorisation du pointeur d'exécution, le passage des arguments, la valeur de retour, etc... En procédant par une macro, plus de fonction appelée puisque le code de la macro est directement intégré à sa place dans le source. Le principal inconvénient de cette approche réside dans la taille mémoire programme qui augmenterait significativement à chaque appel de la macro puisque l'ensemble de son code est à nouveau compilé. Mais cela ne se pose pas ici puisque la macro n'est appelée qu'une seule fois selon le type d'Arduino... Donc une solution optimale, tout en conservant l'idée des arguments, et en réduisant l'empreinte mémoire mais aussi et surtout le temps passé dans la routine d'interruption.

Ps : flute, battu par Jean-Luc !

632
Le logiciel DCC++ / Re : DCC++ BaseStation
« le: mars 09, 2016, 09:08:30 am »
Au delà de la bonne utilisation ou non des structures, j'ai moi aussi jeté un oeil sur le code et je dois dire que c'est bien écrit, clair et très documenté. Il y a de très bonnes idées, mais il reste une syntaxe dans DCCpp_Uno.ino que je n'ai pas comprise (ligne 443) :

  if(R.currentReg->activePacket->buf[R.currentBit/8] & R.bitMask[R.currentBit%8]){
    OCR ## N ## A=DCC_ONE_BIT_TOTAL_DURATION_TIMER ## N;
    OCR ## N ## B=DCC_ONE_BIT_PULSE_DURATION_TIMER ## N;
  } else{ /* ELSE it is a ZERO */
    OCR ## N ## A=DCC_ZERO_BIT_TOTAL_DURATION_TIMER ## N;
    OCR ## N ## B=DCC_ZERO_BIT_PULSE_DURATION_TIMER ## N;
} /* END-ELSE */

est-ce que ## est un opérateur ?? J'avoue que je sèche.
A part ça, j'ai commencé à extraire la partie DCC de son code et je vais tenter (à mon rythme, donc pas trop vite...) de le comparer en terme de mémoire consommée à cmrdArduino.
La partie reconnaissance du ACK est aussi très intéressante. Il semble que le LMD18200 ait sa broche 8 qui permette de vérifier la consommation de courant instantanée, comme les broches 1 et 15 du L298N qu'emploie Greg . A creuser.
Pour ce qui est du prix de son montage, il faut voir les contraintes qu'il s'est imposé, c'est à dire aucune soudure, aucun composant autre que l'Arduino et le shield L298N (plutôt coûteux) au dessus... Pour le prix de ce shield, on peut utiliser deux LMD18200 qui rempliront le même rôle !

633
Si je peux me permettre, je m'insinue...

Le test vérifie que l'argument venantDe et la donnée membre de la classe mVoieSortantDroit pointent vers la même voie. Si les pointeurs sont égaux, alors évidemment les contenus aussi ! Mais là on veut absolument s'assurer qu'on ne parle pas de choses différentes mais exactement de la même voie, donc on compare les pointeurs.

Et non, si venantDe est un pointeur, alors *venantDe est son contenu, et &venantDe est le pointeur contenant la valeur du pointeur venantDe !

634
Effectivement, le réseau est impressionnant...

635
Hello

In the given sample, you will see that for convenience and tests, i have used a different DCC address for each combination !

636
Le logiciel DCC++ / DCC++ BaseStation
« le: mars 03, 2016, 02:31:09 pm »
Denis nous a signalé il y a peu de temps l'existence d'une bibliothèque très intéressante pour créer un module de pilotage DCC à partir d'un Arduino: https://github.com/DccPlusPlus/BaseStation . Il faut que tout le monde en profite, alors je porte la discussion sur le Forum.

Ce projet couvre plusieurs domaines:

un générateur de signaux DCC comme le cmdrArduino largement utilisé ici, mais maison, qui traite aussi bien les locos que les accessoires.
un module de commande série permettant d'envoyer des commandes de pilotage via la console série
une extension de tout ça pour gérer aussi des aiguillages en conservant les dernières positions, et des capteurs de toutes sortes.

A noter les vidéos (https://www.youtube.com/channel/UCJmvQx-fe0OMAIH-_g-_rZw) très bien faites (si on comprend l'anglais) sur le DCC en général, et le projet en particulier.

Vu la qualité du discours et des commentaires sur les videos, c'est dommage que le gars soit anglo-saxon, sinon on aurait fait le forcing pour le fairer venir sur Locoduino !

637
Shields et Modules / Re : Carte Servomoteurs DCC + CAN
« le: mars 02, 2016, 08:32:29 pm »
Superbe ! Pas de problème pour le collaboratif, on est là pour ça !

638
Good evening.

I have just posted a new version 4.35, with the possibility for an AccessoryLightMulti to handle blinking in an easier way. You can find also a new sample SimpleLedMulti.ino to illustrate the use of the class. The main change is in the AddDccPosition(). The third argument where already the bit mask to express which led have to be on, the new fourth argument is also a mask, but to say which led is blinking when on !

639
Each led is linked to a port of the Arduino driver. When you define this port, you can declare it either DIGITAL, or DIGITAL_INVERTED according to the way you have connected your led !

640
Hello

First, about signals. Before the actual 4.30 version of UAD, the AccessoryGroup was the only answer to your needs. It was a little bit heavy, and that's the reason why i created a new class AccessoryLightMulti. This class allows you to build a full signal into one class, handling blinking, dimming and combination of on/off lights with one Dcc code. The samples have been adapted to use this new class instead of the old groups. The groups are still usable for heterogeneous accessories moving together, like a pool of turnouts ...
Basically, you can define an AccessoryLightMulti, add leds with dimming arguments if necessary (beware of the pins used for these leds, dimming is only working on analog pins). then with AddDccPosition, you can fix combinations of lights on and off with a bit field. You will just have to set the blinking effect manually. See the ::Move in the sample SignalFrench. Even if this is not so easy, i think the best way for you should be probably to adapt signalFrench to your needs... If you decide to do that, tell me and i will give you an english translated ino file (comments mainly...) if you need.

641
Débuter / Re : Probleme avec la bibliothèque MENWIZ
« le: février 14, 2016, 06:42:47 pm »
J'ai poussé une bibliothèque prête à l'emploi (https://git.framasoft.org/locoduino.org/LcdUI/blob/master/LcdUi.zip). Mais je n'ai pas fait de version pour écran à quatre lignes... A creuser.

642
Débuter / Re : Probleme avec la bibliothèque MENWIZ
« le: février 14, 2016, 03:22:37 pm »
C'est exactement le cas. Le but de LcdUi est de fournir un moyen de construire une interface utilisateur sur un écran Lcd Arduino. La seule interface fournie fonctionne avec un écran 2 lignes de 20 caractères, mais elle est extensible et pourrait supporter un écran plus grand. Elle manque pour l'instant de testeurs, n'ayant servi que pour mon propre projet... Elle est disponible et utilisable sur notre dépôt (https://git.framasoft.org/locoduino.org/LcdUI/tree/master. Il y a de la doc en français dans le Wiki, et des exemples. Il faut absolument que je me penche sur la création d'un zip pour une bibliothèque !

643
Débuter / Re : IDE Arduino
« le: février 12, 2016, 03:55:21 pm »
L'IDE est minimaliste, en tout cas au niveau de son éditeur... Mais il fait le travail !
De mon côté sous Windows je travaille essentiellement avec Visual Studio pour debugger avec un embryon de simulateur Arduino maison, et je finis par compiler le projet voulu avec l'IDE... J'utilise SublimeText aussi que j'ai découvert assez récemment, mais comme simple éditeur en remplacement de mon vieux PsPad. J'ai bien vu qu'il était possible de le paramétrer pour remplacer l'IDE original mais je n'ai pas tenté l'expérience.

644
Présentez vous ! / Re : Nouvel utilisateur
« le: février 12, 2016, 09:40:26 am »
Bonjour, et bienvenue parmi nous.
C'est bien de se fixer des objectifs raisonnables dans un premier temps. Avec l'expérience, les envies et les buts grandiront naturellement !

645
Débuter / Re : faire du comptage
« le: février 09, 2016, 12:11:16 pm »
Voilà ce même code reformaté et corrigé. Le format est important. Je ne veux pas faire le lourd et ajouter à ce que DDEFF a déjà dit mais.... Si, je vais le faire quand même ! :)
C'est un peu comme une lettre manuscrite: si tu mets toutes les lettres accolées, pas d'espaces ou au milieu des mots, des majuscules n'importe où, des sauts de lignes intempestifs, et une ponctuation hétéroclite,il est fort probable que le destinataire pourra déchiffrer le texte mais il lui faudrait beaucoup de temps et d'efforts, et une partie du fond du message serait sans doute perdue.
Le compilateur C qui est derrière l'IDE ne se préoccupe certes pas des espaces et des sauts de lignes, s'ils ne sont pas au milieu des symboles (voir le 'last' plus haut...), mais celui qui relit, si, parce que le format aide à comprendre la structure du programme et ce qu'à voulu faire l'auteur. Ne pas oublier aussi qu'aujourd'hui tu es cet auteur et que tu comprends aisément ton code, même mal écrit, mais demain tu redeviendras un lecteur qui ne se rappelle plus ce qu'il a fait à l'époque et tentera de redécouvrir le pourquoi du comment de chaque terme du programme...
D'autre part, si tu ne dis pas dans le teste quelle fonction est appelée, ça ne risque pas de marcher.
enfin, une fonction ne peux pas recevoir une liste de liste d'arguments. Il faut l'appeler plusieurs fois.

Mais ne t'inquiètes pas, ça va rentrer ! ;);)


void loop()             //au début les 2 aiguilles sur voie 1, les signaux marquent le rouge et les zones d'arrêt sont alimentées
{
   if (digitalRead(dza1) == LOW && digitalRead(dza2) == LOW)           //pas de train en gare//
   {
      digitalWrite(aigeD, HIGH);
      digitalWrite(aigsD, HIGH);
      digitalWrite(SV1r, HIGH);
      digitalWrite(SV2r, HIGH)
      digitalWrite(AZAv1, HIGH)
      digitalWrite(AZAv2, HIGH);

      delay (100);
      digitalWrite(aigeD, LOW)
      digitalWrite(aigsD, LOW);                                         
    }
 }

Pages: 1 ... 41 42 [43] 44 45 ... 48