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] 2 3 ... 84
1
Où sont les résistances ?

2
Euh, oui.

Mais physiquement, sur le boîtier, elle est où la patte 1 ?

3
Composants / Re : Un nouveau composant prometteur : le VL6180
« le: juin 08, 2020, 10:23:21 am »
Bonjour

Expérience intéressante et qui m'intéresse d'autant plus que je voudrais détecter la distance au fond des remises à locomotive, que l'arrêt soit automatique ou non reste à déterminer mais avoir juste un affichage est déjà pas mal.

Dans la vidéo on voit dans le second cas, lorsqu'une rame est présente sur la voie de garage voisine, une lecture de 34 ? cm ?
À quelle distance est la voie de garage voisine ? 40 mm ?

4
Discussions ouvertes / Re : Devinette
« le: juin 07, 2020, 11:32:10 am »
Pierre,

Si tu ne testes avec des valeurs 0 et 1, tu n’auras pas de différence entre & et && et | et ||. La différence vient quand les opérandes sont différents de 0 et 1.

Il est déconseillé, en C, d’utiliser & et | sur des booléens. Voir notamment le § 9.7 de ce document :

https://www.ssi.gouv.fr/uploads/2020/05/anssi-guide-regles_de_programmation_pour_le_developpement_securise_de_logiciels_en_langage_c-v1.1.pdf#page85

Et c’est également comme ça dans d’autres documents de bonnes pratiques comme MISRA-C

5
Discussions ouvertes / Re : Re : Devinette
« le: juin 07, 2020, 10:10:37 am »
Quel est l’intérêt concret de ces notions ?

Comprendre la sémantique du langage permet de le maîtriser

Citer
Faut-il se méfier du compilateur ?

Oui et il faut également se méfier de soi même :)

En un mot comme en cent : il n'existe pas réellement de booléens en C ou en C++. Le compilateur ne dira rien si par exemple on écrit :

bool b = 40;

le compilateur est content. Il pourrait émettre un warning avec l'option -Wint-in-bool-context mais cette option n'est pas allumée dans l'IDE.

En appartée :

Je disais à Serrurier, sur un autre fil, que les documents sur le blog d'Eskimon n'étaient pas satisfaisants. Certes il a fini par supprimer ses tableaux qui grandissent tout seul mais il reste des choses comme :

Citer
Si on voulait faire un tableau de 100 étudiants dans lesquels on recense leurs nombres d’absence, on ferait le tableau suivant:

char absenteisme[100];

Je ne suis pas persuadé qu'un char soit le type adéquat pour compter quoique ça soit. La dissertation sur les booléens est également surprenante : https://eskimon.fr/tuto-arduino-105-le-langage-arduino-12#les-variables-booléennes

Le C est un langage très permissif. Avec le temps GCC a fini par ajouter des options permettant de corriger ce libéralisme débridé mais tout n'est pas activé dans l'IDE (probablement parce que ça empêcherait la compilation de bon nombre de bibliothèques et d'exemples).

Il faut donc un peu de discipline  :)

6
Discussions ouvertes / Re : Devinette
« le: juin 06, 2020, 05:15:29 pm »
Les opérateurs « optimisés » reposent sur le fait que FAUX est élément absorbant pour le ET et VRAI est élément absorbant pour le OU. Si le premier terme est élément absorbant pour l’opération, il n’est pas nécessaire d’évaluer le second.

Il n’y a pas d’opérateur « optimisé » pour le XOR car ni VRAI ni FAUX ne sont élément absorbant pour le XOR. Il est donc toujours nécessaire d’évaluer le second terme.

Ceci dit. && n’est pas équivalent a & (et || n’est pas équivalent à |) car le premier est un opérateur logique et le second un opérateur bit à bit, ils ne donnent pas le même résultat. Les opérateurs bit à bit, &, | et ^ ne sont pas des opérateurs logiques sauf à considérer que chaque bit des opérandes est un booléen. Ils ne rentrent donc pas dans la même catégorie que le !, le && et le ||.

PS : boolean est abnadonné, voir https://www.arduino.cc/reference/en/language/variables/data-types/boolean/

7
Présentez vous ! / Re : Re : Bonjour,
« le: juin 05, 2020, 10:29:17 am »
Bonjour,

Peut-on faire exécuter simultanément deux procédures, l'une commandant le clignotement des feux routiers, l'autre commandant les servomoteurs degré par degré avec une temporisation (par millis() et non par delay), pour contrôler la vitesse de manœuvre des barrières ? Je ne vois pas comment on pourrait écrire cela dans la boucle loop(), et ne vois donc d'autre solution que d'imbriquer les deux procédures; il est évident que si je pouvais l'éviter, cela me permettrait de paramétrer séparément les délais de clignotement et de manœuvre des barrières (le cycle réel d'un passage à niveau automatique est peut-être un peu long à l'échelle du modéliste, d'où l'intérêt de pouvoir paramétrer l'ensemble par recours à des constantes)

Ça dépend ce qu'on entend pas simultanément.

Si c'est « en parallèle », c'est non. Un CPU est séquentiel et il ne peut pas faire deux choses en même temps.

Si c'est « de manière entrelacée » c'est oui. Il y a deux façon de faire les choses de manière entrelacée : avec un système d'exploitation ou à la main. Pour l'Arduino c'est à la main.

Mais il existe de nombreuse bibliothèques permettant d'entrelacer sans effort. Pour les servos et les led vous avez SlowMotionServo et LightDimmer, toutes deux disponibles dans le gestionnaire de bibliothèques de l'IDE. Ces deux bibliothèques sont employées dans cet article : https://www.locoduino.org/spip.php?article25

Citer
la commande monServo.write(angle) de la bibliothèque <Servo.h> peut-elle être utilisée directement? Je vois en effet sur certains codes que les fonctions de commande de servomoteurs passent des variables de durée ;

Oui

Citer
J'ai cru lire, au détour d'une phrase, que Arduino n'admettait qu'un nombre limité d'écritures et réécritures. Ai-je bien compris et, dans l'affirmative, pourriez-vous m'indiquer l'ordre de grandeur de ce nombre ?

Oui mais ça concerne l'EEPROM (données persistantes) et la flash (programme et constantes). Respectivement 100000 et 10000 écritures.

Citer
En complément de la question précédente, je simule actuellement le fonctionnement de mon code et mon montage au moyen de Tinkercad (conseillé par l'un des tutoriels du site Eskimon). Connaissez-vous cette application et, dans l'affirmative, si elle vous semble constituer une alternative intéressante pour les débutants (bien que limitée) ?

Je connais de nom mais je n'utilise pas.

PS : méfiez vous de ce qui est sur le blog d'Eskimon (je parle de la présentation du langage), il y a des erreurs et beaucoup de mauvaises pratiques.

8
L'inversion de sens ne se fait pas par inversion du sens du courant (sinon, en 50 Hz...  :D)
Dans la loco, il y a un relai (sans "s", pour faire plaisir à Jean-Luc  ;)) qui est alimenté par une surtension de 24 V.
A chaque surtension, le relai colle et entraine une petite roue dentée qui alimente un bobinage parmi deux.
Le premier bobinage est bobiné dans un sens et l'autre bobinage est bobiné dans l'autre sens :
https://www.beneluxmodels.net/t3807-schemas-de-cablage-locos-marklin-analogiques

La vache de techno anachronique ! on se croirait dans Brazil ! Le truc colle 50 fois/s (si j'ai bien compris) ?

Concernant relai, je suis pour les réformes de l'orthographe qui éliminent les irrégularités !

9
Vos projets / Re : projet centrale wifi DCC++ Can
« le: mai 24, 2020, 01:44:44 pm »
Le package de l’ESP32 est un package d’un bibliothèque « contribuée » par la communauté des makers ?

Parce que pour Eagle je ne sais pas mais je peux vous dire que les bibliothèques KiCad sont truffées d’erreurs, c’est la fête du slip. Tout doit être vérifié, aucune confiance ne doit être accordée.

10
Discussions ouvertes / Re : Il était temps !
« le: mai 23, 2020, 10:37:49 am »
Rétropédalage sur la modif.

La version de GCC dans la dernière version de l'IDE ne semble pas vraiment au point en C++ 14. L'édition de liens échoue en râlant sur des fonctions delete implicites qui ne semble pas être engendrés

11
Discussions ouvertes / Il était temps !
« le: mai 21, 2020, 12:15:39 pm »
Bonjour,

Depuis C++14, et par conséquent c'est disponible dans le système Arduino, on peut spécifier des constantes litérales en binaire. Après 50 ans de C, c'est quand même sympa que ça arrive alors que l'octal dont tout le monde se contre-fout, est présent depuis le début :)

Donc on préfixe par 0B ou 0b et derrière on met les chiffres binaires. Pour la taille, il faut, comme d'habitude, suffixer par u ou U (non signé), l ou L (32 bits) , ul ou UL/uL/Ul (non signé, 32 bits)

On peut également placer des ' aux endroits stratégiques d'une constante numérique entière pour faciliter la lecture en séparant les champs (milliers/centaine, ... ou les champs de bits) mais là c'est pas présent par défaut. Il faut éditer le fichier platform.txt pour remplacer le -std=gnu++11 par -std=gnu++14

12
Exact oui

R2 ne me semble pas utile sur le schéma.

14
Ça doit être ça :

http://wiki.sunfounder.cc/index.php?title=2_Channel_5V_Relay_Module

Trouvé en cherchant sur Google « Arduino relay module schematics »

15
Vos projets / Re : Re : Projet: pont élévateur pour loco
« le: mai 20, 2020, 10:59:24 pm »
Ce que je vais faire, attendre la réception des moteurs en 12v. Faire des essais afin de voir avec un lestage du poids d'une loco.

Si ils sont aussi avec réduction, je ne pense pas que tu les fera tourner plus vite. Le poids de la loco ne devrait pas être un soucis.

Citer
Sinon, que penses-tu, au cas où, de bifurquer sur des moteurs dc?

Je pense que si tu veux faire tourner 4 moteurs à la même vitesse, il faut que tu programmes un asservissement et donc il va falloir que tu mettes des codeurs, 1 par moteur, pour compter les tours et piloter 4 PWM de manière à garder la différence entre les tours de chaque moteur à 0. Et échantillonner 4 interruptions en parallèle sans en perdre, ça commence à être velu. Accessoirement ils faut qu'ils fassent le même nombre de tours au total et avec un codeur tu vas au plus avoir une erreur de deux tours : on peut avoir compté le même nombre de tour pour deux moteurs mais le codeur de l'un est sur le point d'envoyer l'impulsion et le codeur de l'autre vient de l'envoyer. Et 2 tours d'erreur c'est, avec un filtage M3, 1mm d'erreur, 2mm avec un M6.

Non, les moteurs pas-à-pas sont idéaux pour ton application mais pas avec réduction.

Pages: [1] 2 3 ... 84