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.


Sujets - Jean-Luc

Pages: [1] 2 3 4
1
Vie du forum / Retour en ligne
« le: août 03, 2023, 05:18:07 pm »
Bonjour à toutes et à tous.

Le forum et le site editorial ont été remis en ligne. Si vous voyez un soucis quelconque, signalez le ci-dessous en indiquant l'URL

Merci de votre patience

2
Infos et bonnes affaires / Raspberry Pi Pico W
« le: juin 30, 2022, 09:06:16 pm »
La Fondation Raspberry Pi a annoncé aujourd'hui le Raspberry Pi Pico W.

Il s'agit du même microcontrôleur que celui de la Raspberry Pi Pico auquel est adjoint un module WiFi CYW43439 d'Infineon.



Il faudra sans doute attendre quelques semaine avant que le WiFI soit supporté par le Raspberry Pi Pico Arduino core.

Les infos : https://www.raspberrypi.com/news/raspberry-pi-pico-w-your-6-iot-platform/

Il est déjà en stock chez Kubii pour 6€99

3
Infos et bonnes affaires / Clone Arduino Nano
« le: mai 13, 2022, 05:24:50 pm »
Bonjour à tous,

J'ai 8 clones d'Arduino Nano à vendre. Me contacter en MP pour les détails.

Ils sont vendus.

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

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

6
Bus CAN / ACAN ESP32
« le: mai 03, 2021, 05:33:38 pm »
Bonjour à tous,

Pierre Molinaro a finalisé la bibliothèque ACAN pour ESP32 avec examples et doc  8)

Elle est disponible dans le gestionnaire de bibliothèques sous le nom ACAN_ESP32.

7
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

8
Vos projets / Pont tournant avec moteur pas-à-pas en microstepping
« le: mai 10, 2020, 02:59:52 pm »
Bonjour,

Je me suis remis sur mon pont tournant qui sera en 3 exemplaires sur mon réseau : 2 ponts tournant PECO (échelle N) et un pont secteur. Voir http://modelleisenbahn.triskell.org/spip.php?rubrique23.

Dans mes essais, je pilotais le moteur PAP via des attentes (delay). J'ai remplacé ça par une classe C++ qui utilise une des PWM associées au TIMER1 en mode 16 bits avec une interruption sur l'overflow pour compter les pas et une sur le compare match pour arrêter le mouvement. Je gère également une accélération et une décélération mais je ne suis pas très satisfait du résultat. J'ai opté pour une accélération/décélération connstante et ça ne rend pas bien. À la réflexion, l'énergie étant en V2, il vaudrait mieux avoir une accélération variable qui suit une courbe telle que l'énergie apportée est constante. Donc quelque chose qui est une parabole couchée. Mais il faut que je précalcule des valeurs, je ne vais pas demander à l'Arduino d'extraire des racines carrées sous interruption :)

J'ai codé aussi la partie CAN avec 8 messages de commande et 2 messages d'états. Les 8 messages de commandes sont en deux catégories : 2 messages pour mouvoir le pont en exploitation, 6 messages pour régler les positions de pont correspondant aux voies. On peut enregistrer des positions en EEPROM sous un identifiant (128 possibles au maximum) et ensuite envoyer une commande de positionnement sur une des positions enregistrées (code 0)  ou sur la position mirroir, à 180° (code 1). Le premier message d'état diffuse toutes les secondes la position du pont. Le second, à la demande, les positions mémorisées en EEPROM.

Enfin j'ai codé une interface graphique pour régler le pont. Elle tourne sur une tablette DYO à base de Teensy 3.6 et d'écran tactile 7".

9
Vos projets / Roue codeuse pour mon pont tournant
« le: avril 25, 2020, 12:04:30 pm »
Bonjour,

Les infos de départ sont ici : http://modelleisenbahn.triskell.org/spip.php?article79

Il m'est venu l'idée de faire la roue codeuse en utilisant la technologie des PCB. Les zones blanches sont remplacées par des facettes métallisées, les zone noires sont noires car on peut choisir un PCB noir (même noir mat chez Seeed mais ils demandent un peu cher). Ça permet aussi d'avoir des perçage précis pour monter le moyeu.

Ça n'a pas de rapport direct avec l'Arduino mais comme ça touche la fabrication de PCB, j'ai pensé que ça pouvait intéresser du monde.

Dessiner la roue à la main dans un éditeur de PCB est une opération permettant d'aller pointer assez rapidement à l'asile le plus proche. J'ai donc écrit un programme en C/C++ qui engendre directement des fichiers au format Gerber et un fichier au format Excellon pour les perçages. Le programme a été écrit rapidement mais comprendre pourquoi les fichiers n'étaient pas visualisés chez JLCPCB a été une autre paire de manche. Bref après deux soirées passées dessus, ça fonctionne. Du moins autant qu'on peut en juger sans commander les cartes.

Ça m'a permis d'apprendre un peu plus en détails comment étaient fichus ces fichiers et plonger dans des langages des années 80 conçus par des mécaniciens, ça pique un peu, voire beaucoup  :-\ ::)

Donc le programme compile sous Unix (Linux je pense, Mac OS X sûr) et se lance bien évidemment en ligne de commande.

Pour le compiler :

g++ -o coding-wheel coding-wheel-pcb.cpp

Il y a une aide minimaliste que l'on obtient en le lançant sans argument :


Eridani-5721:coding-wheel jlb$ ./coding-wheel
Usage: coding-wheel <name> <inner radius> <radius step> <number of values> <gap> [r/g/gr]
  <name>:             name of the destination directory and of the files.
  <inner radius>:     the radius to the center of the inner facet.
  <radius step>:      distance between two facets centers on the same radius.
  <number of values>: number of coded values.
  <gap>:              distance between 2 adjacent facets borders.
  [r/g/gr]:           optional argument. Without any the coding wheel
                      uses a binary coding with inner low order bit.
                      r:  binary coding with outer low order bit.
                      g:  Gray coding with inner low order bit.
                      gr: Gray coding with outer low order bit.

En pièce jointe une roue capturée sur la visionneuse de JLCPCB, générée avec :

Eridani-5721:coding-wheel jlb$ ./coding-wheel roue 35.5 4.5 100 .2 gr
Center coordinates (mm): (65.75, 65.75)
Diameter: 131.50 mm
Gray coding, outer low order bit

Ça peut peut-être servir à quelqu'un :)

10
Vie du forum / Inscriptions en vue de SPAM
« le: juillet 25, 2019, 09:32:04 am »
Bonjour,

Le forum subit depuis ce matin (après un premier succès il y a quelques jours) un flot d'inscriptions bidon afin de disposer d'un compte permettant de spammer le forum (liens commerciaux dans les signatures). J'ai supprimé 7 ou 8 comptes.

La barrière de l'inscription avec la question qui tue ayant fini par être surmontée, j'ai changé la question ... jusqu'à la prochaine fois.

On va voir ce que ça donne.

12
Les réseaux / DÉPLACÉ: Réseau hivernal en N
« le: mai 29, 2019, 08:55:39 am »

13
Vos projets / Satellite V2
« le: février 04, 2019, 05:42:53 pm »
Bonjour à tous.

Un peu de teasing  :P

La série d'articles sur la carte Satellite V1 est en cours de publication. Pour l'instant 2 articles sont publiés :
Nous peaufinons celui sur la messagerie et le middleware pour le WE prochain.

Il y a déjà eu quelques éléments à propos des évolutions futures : http://forum.locoduino.org/index.php?topic=565.0
L'idée a été creusée et voici donc l'état actuel des reflexions sur la carte Satellite V2.

L'idée est de la rendre plus générale et plus adaptable que la V1 avec une banalisation plus poussée des entrées/sorties. La V1 assigne en dur une entrée ou une sortie à une fonction. La V2 partage certaines broches entre plusieurs fonctions. Une fois le logiciel configuré, une des fonctions est choisie. La V1 est munie d'une détection par consommation, la V2 n'en a pas :) La V1 est monolithique, la V2 peut recevoir des cartes d'extension pour ajouter de l'électronique comme par exemple l'électronique de détection.

La Satellite V2 est plus simple au niveau électronique car il n'y a finalement que:
  • Un Arduino Nano
  • Un contrôleur CAN MCP2517FD
  • Un transceiver CAN
  • Une alimentation plus costaude que sur la V1
  • Optionnellement un second régulateur permettant de l'alimenter avec une tension au delà de 12V
  • Des résistances
  • Des connecteurs

On peut connecter:
  • Jusqu'à 6 servomoteurs avec et sans détection de fin de course;
  • Jusqu'à 15 LED pour la signalisation;
  • Jusqu'à 8 détecteurs;
  • Jusqu'à 4 cartes d'extension.

MAIS PAS TOUT EN MÊME TEMPS

La carte est du même format que la V1 : 100x50mm



Une carte d'extension fait 50x25 ou 75x25 ou 100x25 et se place sous la carte Satellite V2.

14
Vie du forum / UP AND RUNNING !
« le: janvier 29, 2019, 10:03:05 pm »
Bonsoir,

Après quelques avatars et le temps d'avoir une BDD opérationnelle, il semblerait que ça soit bon  :)
Et au niveau vitesse, c'est le jour et la nuit :)

Toutefois, si vous constatez des soucis, réagissez à la suite de ce message.

J'ai profité de l'espace disque plus important pour passer la taille des pièces jointes à 1Mo par message et à 500ko par pièce jointe. Mais n'abusez pas  ;D

15
Discussions ouvertes / Programmation : les closures
« le: janvier 11, 2019, 05:05:40 pm »
Bonjour,

J'ai entrepris une petite mise à niveau des nouveautés apportées par C++ 11.

Je ne vais pas parler de tout car c'est quand même très technique mais je voulais vous présenter les « closures » aussi connues sous le nom de « lambda functions » pour plus simplement « fonctions en ligne » qui sont d'une utilité directe et évidente.

Pour illustrer je vais partir d'une exemple avec une Schedule Table (l'article est ici : https://www.locoduino.org/spip.php?article116)
Supposons que nous voulions reproduire le clignotement d'un feu à éclat : un flash bref, disons 50ms, sur une période de 800ms. Avec une Schedule Table, on peut faire comme ceci :

SchedTable<2> flash(800);

void led13On()
{
    digitalWrite(13, HIGH);
}

void led13Off()
{
    digitalWrite(13, LOW);
}

void setup()
{
    flash.at(200, led13On);
    flash.at(250, led13Off);
    pinMode(13, OUTPUT);
    flash.start();
}

void loop()
{
    ScheduleTable::update();
}

Les closures permettent de remplacer la déclaration séparée qui est faite de led13On et led13Off et de les mettre directement dans le programme lors de l'appel de la méthode at, comme ceci :

SchedTable<2> flash(800);

void setup()
{
    flash.at(200, []{ digitalWrite(13, HIGH); } );
    flash.at(250, []{ digitalWrite(13, LOW); } );
    pinMode(13, OUTPUT);
    flash.start();
}

void loop()
{
    ScheduleTable::update();
}

Notez la syntaxe avec les crochets suivis du code entre accolades.

Un autre usage sont les routines d'interruption que l'on attache. Souvent il s'agit juste de mettre à vrai une variable comme par exemple dans cet article : https://www.locoduino.org/spip.php?article148

volatile byte Flag_Recv = 0;   // variable d'échange avec l'interruption IRQ

/*
 *  ISR CAN (Routine de Service d'Interruption)
 *  le flag IRQ monte quand au moins un message est reçu
 *  le flag IRQ ne retombe QUE si tous les messages sont lus
 */
 
void MCP2515_ISR()
{
     Flag_Recv = 1;
}

Et dans setup() :

attachInterrupt(0, MCP2515_ISR, FALLING); // interrupt 0 (pin 2)

Avec les closures on peut écrire directement

attachInterrupt(0, []{ Flag_Recv = 1; }, FALLING); // interrupt 0 (pin 2)

Pages: [1] 2 3 4