Bonjour,
Les infos de départ sont ici :
http://modelleisenbahn.triskell.org/spip.php?article79Il 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