J'ai imprimé la roue codeuse en PLA noir avec une imprimante 3D (une Creality Ender-3 Pro)

Pourquoi recourir au code gray plutôt qu'a un code binaire "ordinaire" ? Parce que dans le cas du code gray, lors de la rotation, il n'y a jamais plusieurs bits qui changent d'état simultanément contrairement au code binaire (ex: passage de 01 à 10 ou pire de 0000 à 1111). l'avantage ? Pour le binaire, le passage de l'état 01 à 10 peut se faire de deux façons :
01 -> 11 -> 10
ou bien :
01 -> 00 -> 10
suivant que c'est le premier ou le second bit le plus prompt à réagir (le "en même temps" est illusoire si on regarde à l'échelle de la nanoseconde)
et pour 4 bits, il y a 4! (factorielle 4) façons de passer de 1111 à 0000 soit 24 états intermédiaires différents possibles (permutations de l'ordre dans lequel les 4 bits commutent), ce qui constitue un aléas total.
Je me rappelle avoir trouvé la cause du déclenchement intempestif d'un système d'alarme (du commerce), due à ce type d'aléa (la transmission de la tension de la pile des détecteurs IR se faisait par radio, sur le même canal logique que celui servant à déclencher l'alarme. Et cette dernière se déclenchait donc de façon apparemment aléatoire lorsque l'information binaire codant la tension passait par un état imprévu mais correspondant à l'alarme. Je vous laisse compter les failles de conception de ce système ! Rassurez-vous, dans le domaine aéronautique la chose est connue et bien maîtrisée!)
Oui mais alors les ordinateurs qui utilisent le code binaire sont plein d'aléas ? En fait non, parce qu'en logique séquentielle synchrone on utilise un chef d'orchestre (une horloge à quartz) qui cadence les circuits de façon à ce que les états logiques soient pris en compte lorsque les niveaux électriques sont bien établis (sur les paliers et pas lors des commutations). Mais dans le cas qui nous occupe, il s'agit de logique combinatoire, sans horloge, les niveaux changent à des instants indéterminés, inconnus (à l'avance) du microcontrôleur. D'où la nécessité d'utiliser ce code gray.

Voici les 24 façons de passer de 1111 à 0000 : Appelons ABCD les 4 bits représentant ce nombre; Il peuvent basculer dans cet ordre A puis B puis c puis D... mais aussi A puis C puis... Voici les combinaisons possibles : ABCD, ABDC, ACBD, ACDB, ADBC, ADCB, BACD, BADC, BCAD, BCDA, BDAC, BDCA, CABD, CADB, CBAD, CBDA, CDAB, CDBA, DABC, DACB, DBAC, DBCA, DCAB, DCBA, soit 24 possibilités différentes passant par des états qui n'ont pas grand chose à voir avec la valeur finale !

Je vous fournis le fichier stl et même les sources pour FreeCAD qui vous permettent d'imprimer cette roue codeuse.