Dans la page de présentation du projet, j'expliquais que le code source des contrôleurs Arduino serait disponible sur GitLab.
Mon Gitlab est désormais accessible et vous pourrez y retrouver tous les code source du projet.
Le git est divisé en plusieurs branches: une par attraction précisément.
Cela donnera une meilleure visibilité.
Vous remarquerez que certains codes sont incomplets. C'est tout à fait normal: chaque branche possède un code de base, qui est implémenté durant le développement du manège.
Par exemple, cette année, le développement se concentre sur la Grande Roue, donc c'est ce code qui va évoluer au fil du temps.
Il y a un code pour le contrôle du manège, et un (ou plusieurs) pour le contrôle des lumières.
Le code de base consiste à déclarer l'appareil sur le réseau I2C. I2C est un protocole qui permet à certains appareils (de l'Arduino dans le cas présent) de discuter entre eux, d'échanger des informations. Il y a un élément Master, et un ou plusieurs éléments slave.
Dans mon cas, les éléments slave possèdent toutes les fonctions pour lesquels ils sont destinés. C'est l'Arduino Master qui va leur envoyer l'ordre d'exécuter telle ou telle fonction.
Il peut y avoir plusieurs Arduinos par manège. Il y en aura au moins un pour contrôler les moteurs, et au moins un pour contrôler les lumières, mais cela peut varier en fonction des contraintes du manège.
A terme, l'Arduino Maitre sera en mesure de contrôler en temps réel les manèges. Pour ce faire, je créerai un pupitre utilisateur, comportant des boutons poussoirs et des fader, et l'utilisateur aura contrôle en temps réel sur un manège qu'il aura sélectionné au préalable.
Les fonctions des boutons poussoirs et des faders seront alors ré-écrites à la volée, pour s'adapter au manège choisit par l'utilisateur.
Mise au point concernant la qualité du code
Je m'efforce de commenter au maximum mon code, et le rendre le plus lisible et logique possible. Néanmoins, je suis bien conscient qu'il n'est pas optimisé.
J'apprends de façon autodidacte et je n'ai jamais suivi de cours pour faire du C++.
J'en appelle donc à votre indulgence. Oui certaines variables permettraient assurément de s'éviter une partie du code. Oui, certaines optimisation éviteraient une consommation déraisonnable de mémoire.
Je suis d'ailleurs à votre écoute pour toute remarque, suggestion ou amélioration concernant le code source du projet.
A terme, je réaliserai les schémas de câblage, que vous pourrez également télécharger depuis le Gitlab.
Ce que vous pouvez faire avec le code source.
Si vous souhaitez reproduire le fonctionnement de la maquette chez vous, libre à vous: le code est disponible et peut être téléchargé, utilisé et modifié.
Si vous souhaitez le publier, il vous suffit d'en mentionner son auteur original (moi), et pas de soucis.
En revanche, l'usage de ce code à des fins commerciales n'est pas autorisé.
Le rendu en visuel
Voici dans les deux vidéos ci dessous un aperçu des menus de l'interface.
Certaines fonctions sont encore à développer.
Dans la première vidéo, c'est un aperçu global de ce à quoi ressembleront les menus, mes les fonctions finales doivent encore être développées. Dans la seconde vidéo, je m'attarde sur la section maintenance, et en particulier sur la partie "Check des attractions".
Il s'agit d'une fonction qui va envoyer sur le réseau I2C une commande de type "ping".
Les équipements connectés ont tous un numéro d'identification unique, qu'ils communiquent. Si un de ces numéro est renvoyé à l'Arduino Master, alors c'est que l'équipement correspondant est en ligne. Sinon, il est hors ligne.