Bonjour à tous,
Je sais que le sujet peut paraître bête, mais c'est vraiment le problème que j'ai. Je m'explique.
Je suis en train de développer un programme destiné à faire tourner un projecteur laser, tel que ceux que l'on peut voir dans les soirées, les boîtes de nuit, etc. Le programme reçoit par liaison série des coordonnées formatées en JSON, enregistre ces coordonnées, calcule en temps réel chaque position de la trajectoire, puis doit envoyer ces coordonnées à une carte DAC par une liaison I2C.
Le calcul des coordonnées fait appel à une fonction d'interruption. La liaison série a été ré-écrite à partir de fonction d'interruptions également, en s'inspirant de GRBL, afin de contourner un inconvénient de la librairie arduino.
Le problème qui se pose est que le programme marche (excepté l'envoi des données au DAC, qui a été mis entre parenthèse le temps de résoudre le problème qui m'occupe) sur la carte Nano que j'utilise pour développer, mais pas sur la carte UNO qui est monté dans ce que sera le projet fini. Sur cette carte-là, le programme s'initialise (chaque sous-programme envoie un message par la liaison série une fois initialisé), la première chaîne de coordonnée est bien reçu, mais le traitement semble ne pas se faire. Alors qu'avec la Nano, une fois la coordonnées reçue elle est chargée dans un buffer, puis traitée, puis la coordonnée suivante est demandée, et ainsi de suite.
Autant j'ai pu résoudre beaucoup des problèmes que ce programme m'a posé depuis que j'y travaille, autant sur celui je sèche. Toute aide, toute idée serait donc bienvenue.
Le code source est ici: https://github.com/troisiemetype/arduino-projecteur-laser/tree/dev
Merci à vous!
PS: l'arduino est commandée par un programme en Python, mais pour ce qui nous intéresse ici il n'est à priori pas incriminé.