J'aime bien les arduinos, petits, pratiques et plusieurs librairies sur différents sujets sont disponibles. Ce qui me désole un peu, c'est le manque de librairie un peu plus complexe et versatile. C'est vrai qu'un ATMEL 328P n'a qu'approximativement 2K de RAM et 32K de Flash ( un peu moins à cause du bootloader ) mais tout de même.
Pololu fait de petit contrôleur de moteur qui facilite l'utilisation de driver de moteurs, cependant il faut soit un autre microcontrôleur pour l'utiliser, soit un module sans-fils vers TTL ou encore un communication avec un PC. Si l'espace ou les batteries sont limités, de pouvoir utiliser 100% du Arduino devient important. Donc avoir une librairie qui permet d'utiliser différent drivers ( ou breakout ) devient important. Oui, il y a des limitations, autre le nombre de pins disponible, le nombre d'interruption d'un UNO est vraiment limité et il est quasi impossible d'interfacer plusieurs encodeurs. Adafruit fait une librairie pour utiliser leur shield, autant avec des moteurs DC que stepper. Il est cependant possible d'avoir un librairie plus versatile et complète.
Donc, avec tout le code que j'ai fait sur les Arduino, j'ai décidé de faire un peu de ménage et développer ma première librairie permettant de contrôler des moteurs DC avec encodeurs et analyse de courant. De plus, un concept de roue encapsulant le contrôle du moteur, lecture des encodeurs et info tel que le Gear Ratio permettra de connaitre le RPM et l'accélération ainsi qu'implémenter des méthodes utilitaires. Les interruptions 1 et 2 sont utilisées pour recevoir les changements des encodeurs. Si possible, selon le type de module ( UNO, MEGA, DUE et un jour ZERO ) le nombre d'encodeurs pourra être augmenter. Faudra voir si je me créer un compte Github pour la cause.
Tant qu'a changer la roue de tirobot et y ajouter des encodeur,en plus d'en avoir besoin pour le projet de petit bateau, pourquoi a prendre un peu plus de temps et bien faire les choses.