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 - Jean-Luc

Pages: 1 ... 3 4 [5] 6 7 ... 93
61
Trucs & astuces / Re : sous-programme répétitifs
« le: février 23, 2022, 06:06:55 pm »
Merci

Bon c'est quand même tout à plat tout ça. Il n'y a pas de mystère. Pour moins dupliquer du code, il faut normaliser les données et sans doute passer les constantes en données.

La première chose que je ferais c'est de définir une struct ou une class (mieux) décrivant les objets que vous utilisez. Par exemple certains canton ont un feu rouge donc :

class Feu {
    byte rouge;
    byte orange;
    byte vert;

...
};


Pour les cantons :

class Canton {
    boolean circuler; //memoire inter "autorisation de circuler canton"
    boolean arret; //memoire pas inter "autorisation de circuler canton"
    byte potar;//consigne de vitesse canton
    unsigned long datetempovitesse;
    ...
public:
    Canton(const byte inPotar, ...) : circuler(false), arret(false), potar(inPotar), datetempovitesse(0), ...
    ...
};

Ensuite on instancie autant de cantons que nécessaire.

Canton G1(A0, ...);
Canton C1(A1, ...);

Mutualiser les interruptions doit être faisable mais il faudrait savoir de quelle broche vient l'interruption (ie l'avoir en donnée). Il faudrait faire une version modifiée de PinChangeInt car la version commune fait exactement ce que vous ne voulez pas : distribuer une interruption commune à 8 pins sur 8 fonctions alors qu'il faudrait  récupérer le canton correspondant à la pin et avec un seul code traiter le canton en question.

Une fois les objets canton créés, c'est facile de mutualisme le code des lignes 312 à 419 mais je vois des irrégularité dans l'init du grafcet
438 à 450, idem

Les aiguilles je sais pas, la topologie de votre réseau est câblée en dur dans le code.

Idem, il semble qu'il ait des cas particuliers dans la gestion de chaque canton (j'ai diagonalisé, il y a plus de 1000 lignes de code) mais les différents cantons appartiennent-il à des catégories en nombre limité ? Si oui, en utilisant une classe de base Canton avec une ou plusieurs méthodes virtuelles et une classe dérivée par catégorie permet  de mutualiser la structure du code et d'en écrire un minimum.

62
Bibliothèques / Re : Bibliothèque SlowMotionServo
« le: février 23, 2022, 05:01:19 pm »
Antoine,

Voici SlowMotionServo modifié pour utiliser la lib ESP32Servo (lib qu'il faut donc installer). J'ai pas trop le temps de tester mais ça compile. Dis moi à l'occasion si ça fonctionne.

63
Bibliothèques / Re : Bibliothèque SlowMotionServo
« le: février 23, 2022, 04:47:40 pm »
Ça n'a pas l'air trop difficile à faire.

Antoine, comment comptes-tu commander le servo, je ne suis pas sur qu'une impulsion en 3.3V soit reconnue, il faudrait un ampli.

64
Trucs & astuces / Re : sous-programme répétitifs
« le: février 23, 2022, 04:44:43 pm »
Bonjour,

Difficile de répondre sans en savoir un peu plus. Les capteurs se matérialisent comment ? Un numéro de broche ?

Pouvez vous mettre ci-dessous une paire d'exemplaire de vos 19 bouts de programme ? (sans oublier les balises code)

65
Vos projets / Re : Re : Mes servos chantent même à l'arrêt
« le: février 23, 2022, 09:32:55 am »
Je ne sais pas ce que fait attach/detach, je n'ai jamais essayé.
Est-ce que le moteur reste alimenté ? Est-ce qu'il continue à consommer du courant ?

detach coupe le pulse de commande. Le servo n'est plus asservi mais reste alimenté.

66
Vos projets / Re : Re : Mes servos chantent même à l'arrêt
« le: février 23, 2022, 09:29:00 am »
Bonjour,

Le montage que j'ai présenté a été motivé par le fait qu'il pouvait y avoir des mouvements incontrôlés du servo lors de la mise sous tension du décodeur.
Le fait de démarrer le signal PWM avant de mettre le moteur sous tension a résolu ce problème,  d'où ce schéma qui permet de contrôler l'alimentation.

J'ai également rencontré ce problème qui se règle est tirant le signal de contrôle du servo au 5V via une résistance de 10k par exemple.

Il semble que ce mouvement incontrôlé soit dû à l'électronique du servo qui pense voir un créneau sur le signal quand la tension monte à l'allumage.

Cordialement.

67
Bibliothèques / Re : Bibliothèque SlowMotionServo
« le: février 22, 2022, 09:30:27 pm »
Ça devrait pouvoir se faire.

Je vais regarder.  :)

68
Composants / Re : Re : Benchmark MCU
« le: janvier 20, 2022, 10:25:23 pm »
( Peut-être mon programme fait-il en effet de l'attente active ? J'avoue ne pas savoir ce que c'est mais je soupçonnais quelque chose de ce genre.

C'est simple. l'I2C fonctionne à 400kHz. Envoyer un octet à un périphérique nécessite ~16 bits, soit 40µs. Si le processeur doit envoyer plusieurs fois un octet, il doit attendre que le précédent soit parti du registre I2C. Pour cela il teste en boucle un bit d'état de l'I2C qui indique sa disponibilité. Pendant tout ce temps le CPU ne fait rien d'autre que d'attendre l'I2C. C'est ce qu'on appelle une attente active. Ça se passe à l'intérieur de la bibliothèque SSD1306.

Pour résoudre le problème, on peut
  • faire une bibliothèque qui permet au programme de tester si l'I2C est libre et s'il ne l'est pas de faire autre chose. Ça revient à faire du multitâches à la main, c'est à la charge du programmeur et c'est pas drôle.
  • faire une bibliothèque qui gère un tampon d'octets à envoyer à l'I2C et qui effectue le transfert sur interruption « I2C dispo »
  • Le top : dégotter une bibliothèque qui utilise le DMA du Teensy 3.5 pour gérer par matériel un transfert mémoire vers l'I2C de manière autonome et pendant ce temps là le CPU fait autre chose.
 

69
Composants / Re : Benchmark MCU
« le: janvier 18, 2022, 02:26:46 pm »
Il faut aussi déterminer ce qui coince.

De ce que j'ai lu plus haut, c'est l'I2C. On pourra mettre le CPU le plus véloce qu'on veut, si le programme consiste à faire de l'attente active sur l'envoi de trames I2C, il ira à la vitesse de l'I2C, c'est à dire pas bien vite. :)

Le problème ne serait-il pas le fait que les fonctions Arduino font de l'attente active pour attendre que l'I2C soit dispo ?

70
JMRI et Arduino / Re : Protocole de pilotage
« le: janvier 16, 2022, 04:49:02 pm »
Bonjour Erik,

Je n'utilise pas C/MRI. J'avais commencé cette bibliothèque pour essayer de faire quelque chose de correct. L'idéal serait qu'un Locoduinaute utilisateur de CMRI la reprenne.

Pour le carte 24IN/48OUT, je ne sais pas.

Bonne année 2022 également  ;)

71
Trucs & astuces / Re : Allumer et éteindre des LEDs
« le: novembre 02, 2021, 03:57:02 pm »
Bonjour,

Sauf erreur de ma part, elle fonctionne avec tout type d'Arduino

Cordialement

72
Débuter / Re : Lecture d'une carte SD
« le: octobre 24, 2021, 07:58:34 pm »
Bonsoir,

Si il s'agit d'écrire et de lire des données dans un fichier de la SD card, il est moins coûteux et plus simple d'écrire en binaire via write et de lire via read plutôt que de passer via des chaînes de caractères.

read et write ont notamment une version avec 2 arguments. Le premier est un pointeur vers les données en mémoire (un uint8_t ¨*) et le second le nombre d'octet.

Ainsi écrire un entier de 32 bits se ferait comme suit :

uint32_t donnee = 128000;
file.write((uint8_t *)&donnee, sizeof(donnee));

De manière symétrique, on lirait comme ceci :

file.read((uint8_t *)&donnee, sizeof(donnee));

Les deux méthodes retournent le nombre d'octets effectivement écrits ou lus. Ça permet de vérifier que tout se passe bien, que la carte n'est pas pleine, qu'on n'a pas atteint la fin de fichier :

if (file.read((uint8_t *)&donnee, sizeof(donnee)) != sizeof(donnee)) {
    // erreur
}

Je n'ai pas de SD card et je ne peux donc pas fournir un exemple testé.

73
Vie du forum / Problème d'accès au site rédactionnel
« le: octobre 01, 2021, 10:16:51 am »
Bonjour à tous.

Vous avez sans doute constaté que le site rédactionnel est inaccessible et, si vous lisez ceci, vous vous êtes connecté au forum en http et non en https.

Je pense que vous avez sans doute entendu parlé du problème de l'expiration d'un certificat ROOT. La presse en a parlé récemment, soulignant que les vieux terminaux ne pourraient plus accéder à nombre de site et qu'il fallait installer Firefox pour contourner ce problème. Quell blague. Comme d'habitude, la presse n'avait rien compris au problème. Je pense avoir compris mais je n'en suis pas sûr.

Le problème se situe en fait du côté des certificats SSL des serveurs. Beaucoup de sites sont inaccessibles en https mais restes accessibles en http (pas de certificat nécessaire).

J'avais ajouté l'accès en https sur le forum et le site rédactionnel il y a quelques temps et il faut que je revienne en arrière mais je ne pourrai le faire que ce week-end. Peut-être qu'entre temps OVH aura réglé le problème de son côté, en renouvelant ses certificats. Mais rien n'est sûr.

74
Débuter / DÉPLACÉ: Techniques de mise au point
« le: août 24, 2021, 04:22:05 pm »

75
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 12, 2021, 03:37:03 pm »
Ok, donc l'écran n'est pas connecté comme indiqué dans l'article. Pourquoi y aurait-il le même problème ?

Ou alors c'est un snafu avec la numérotation d'IO vu le bazar intégral de l'ESP32 à ce niveau :)

Pages: 1 ... 3 4 [5] 6 7 ... 93