Bonjour
Comme promis voici le programme pour faire un DRO 3 axes sommaire : à savoir l'affichage des valeurs X,Y,Z envoyées par les règles et la remise à zéro ; c'est tout. Si vous voulez d'autres fonctions c'est à vous de les faire et donc d'adapter le programme et éventuellement le schéma électronique.
Les règles travaille en mode "normal", c'est à dire en envoyant les valeurs environ 3 fois par seconde. L'utilisation du mode "rapide" (40 envois /seconde) est à mon avis superflu pour un DRO. Le seul avantage que je vois c'est que l'on peut réaliser une moyenne glissante des valeurs et donc - peut-être - stabiliser l'incessant clignotement du dernier digit (+/- 1/100).
Pour le mode "rapide" il faut appliquer pendant 100ms (env) 1.5V sur la sortie "Data" de la règle (on passe alors en mode "hold" puis 1.5V aussi 100 ms sur la sortie "clock" .
Cela peut-être réalisé avec 74HC4051 ou un CD4066 (interrupteur analogique) mais occupe 3 sorties sur l'arduino.
En raison de la lenteur de la lecture/écriture sur les sorties de l'arduino lié à l'IDE, le programme fourni lit en accès direct sur les ports I/O. L’avantage c'est que c'est très rapide, l’inconvénient c'est que le code n'est pas applicable sur toute la famille arduino sans modification des valeurs de pin. De même il faut pour chaque règle une routine spécifique qui ne diffère que par les valeurs de pin. Il est certainement possible de faire une librairie mais le jeu n'en vaut pas la chandelle à mon avis.
Comme le timing de lecture du signal des règles est crucial il déconseillé d'utiliser les interruption logicielle ou matérielle dans le programme comme par exemple lire (et affichée) une vitesse de broche par exemple : pour cela il sera préférable d'utiliser un convertisseur fréquence/tension (tel le LM2917) et d'utiliser un broche de mesure analogique de l'arduino.
Le programme fourni fonctionne tel que sur arduino min/mini pro. Il peut fonctionner (et a fonctionné) )sur Mega2560 en changeant les pin d'entrée dans le programme ou en choisissant les entrées sur la carte (on se servira du pin mapping de la carte pour cela). Du moment que le processeur "tourne" à 16MHz, ça roule. Plus ou moins et cela oblige à revoir les "timing".
Je joins au programme, le schéma électrique à titre indicatif. Les amp-op LM393 indiqués sur le schéma sont la version "D" c'est à dire en SOIC, La version normale en boitier DIP utilise le même brochage. De même le régulateur de tension 1,5V indiqué est une version CMS . La façon d'obtenir la tension de 1.5V importe peu du moment qu'on l'ait. Tout mon schéma est en CMS (y compris les résistances et les condensateurs) car j'avais commencé à placer quelques composants pour mon application avant de penser à joindre un schéma pour le programme. Il n'y a donc pas d'image du circuit imprimé correspondant
Ce qui est fourni l'est "tel que", Je laisse à d'autres le soin d'améliorer le cas échéant le programme, de faire un circuit imprimé correspondant et de les rendre public.
Je n'assure pas le SAV et surtout pas par MP qui seront effacés systématiquement. S'il y a des questions, j'y répondrai sur le forum ou laisserais à d'autre le soin de le faire.
Voir la pièce jointe ArduiDRO.zip