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 ... 8 9 [10] 11 12 ... 93
136
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/

137
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.

138
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 !

139
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.

140
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

141
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

142
Exact oui

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

144
Ç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 »

145
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.

146
Vos projets / Re : Projet: pont élévateur pour loco
« le: mai 20, 2020, 05:44:39 pm »
Bon,

Comme j'avais un moteur pas-à-pas de ce type dans mes tiroirs (Le modèle distribué par Velleman : https://www.velleman.eu/products/view/?id=435560) j'ai fait des essais avec l'oscillo pour voir les impulsions.

Mauvaise nouvelle, le moteur déclare forfait quand la « vitesse » descend au dessous de 1900µs (environ, on peut descendre un peu plus bas mais le moteur doit être déjà en mouvement, il ne peut pas démarrer à cette cadence). Ce qui explique pourquoi la plus faible valeur du programme de Christian est 2000. En dessous le moteur décroche.

Avec un système à tige filetée, il te faut un autre moteur, sans doute sans réduction car la tige filetée s'en occupe. Si par exemple tu as une tige 6mm, le pas ISO est de 1mm. Donc un moteur 200 pas par tour aura une précision de 1/200 mm !
C'est pas forcément facile à trouver en unipolaire.

147
Vos projets / Re : Projet: pont élévateur pour loco
« le: mai 20, 2020, 04:08:21 pm »
Mais on peut prendre le problème à l'envers : décrit ton système mécanique et la vitesse désirée.

Edit : parce que le moteur que tu comptes utiliser a une réduction. Au total une rotation complète de l'axe nécessite 4096 pas, ce qui est beaucoup. D'après ce que j'ai vu sur le web, il ne monte pas à plus de 30 tours/minutes, soit 2s pour un tour, soit 2048 pas/s et donc 488µs minimum. Donc il se peut que 300µs interpas ne soit pas atteignable, le moteur rate des pas.

148
Vos projets / Re : Projet: pont élévateur pour loco
« le: mai 20, 2020, 03:56:40 pm »
Il n'y a que pour le dernier cran (>=500) que ça change quelque chose par rapport à la version avec des millisecondes.

Essaye ça

if(potentiometre < 100) {vitesse = 0;}
else if(potentiometre >= 100 && potentiometre < 150) {vitesse = 9600;}
else if(potentiometre >= 150 && potentiometre < 200) {vitesse = 4800;}
else if(potentiometre >= 200 && potentiometre < 250) {vitesse = 2400;}
else if(potentiometre >= 250 && potentiometre < 300) {vitesse = 1200;}
else if(potentiometre >= 300 && potentiometre < 350) {vitesse = 600;}
else if(potentiometre >= 350 && potentiometre < 400) {vitesse = 300;}
else if(potentiometre >= 400 && potentiometre < 450) {vitesse = 150;}
else if(potentiometre >= 450 && potentiometre < 500) {vitesse = 75;}
else if(potentiometre >= 500) {vitesse = 50;}

149
Vos projets / Re : Projet: pont élévateur pour loco
« le: mai 20, 2020, 03:47:19 pm »
Peux tu mettre le code complet ?

150
Vos projets / Re : Projet: pont élévateur pour loco
« le: mai 20, 2020, 03:42:56 pm »
Il y a 9 else de plus ce qui évite de faire des tests inutiles

Ligne 78, ms est juste le nom de la variable (qui maintenant au lieu de signifier millisecondes signifie microsecondes). Donc oui il faut la laisser.

Pages: 1 ... 8 9 [10] 11 12 ... 93