Programmation asistée avec l'IA Gemini: maj 24/10/26

Si Gemini permet de créer des images, l'IA est aussi une assistance intéressante pour la programmation.
Le test vise à programmer le logiciel en micropython qui doit piloter 3 leds RGB de puissance pour faire une ambiance colorée programmable.

Cela a démarré par quelques phrases qui spécifient en détail ce que l'on veut:
- usage d'un RAP2040-zéro comme processeur
- génération de 3 signaux PWM modulant des mosfets pour gérer le mélange RGB et donner une couleur
- usage d'un oled 1.3" en I2C géré par un SH1106  (le modèle 0.96" est géré par un SSD1306)
- modulation des leds par une fréquence programmable
- menu géré par un encodeur
- exécution d'un programme défini dans un fichier .txt, chaque ligne du fichier spécifiant les 3 octets valeurs RGB (ou le nom de la couleur voulue), la durée en secondes de l'effet , la fréquence de modulation et l'intensité globale des leds
- choix du fichier programme à exécuter
- un fichier config permet de stocker les paramètres courants et niveau de couleur

Les divers fichiers .txt et .py sont stockés sur la flash du module (2Mo environ pour le Pi-zéro) grâce au logiciel Thonny. (on ne peut pas copier directement ces fichiers sur le disque qui monte sous windows en mode Boot, mode réservé aux fichiers UF2).

Au bout de une à deux heures de ma part avec des specs et remarques , l'IA (qui répond en quelques secondes) a produit tout le logiciel micropython opérationnel : la durée vient du fait de l'imprécision de la demande, du raffinage du menu et des tests en temps réel sur breadboard.
Je n'ai écrit aucune ligne de code, juste fait des remarques de modifs , d'ajouts et de corrections d'anomalies  (l'IA en fait mais corrige quand on lui indique l'erreur).
C'est l'IA qui a affecté les broches des signaux en tenant compte des contraintes des slices PWM du RP2040. L'ajout de la gestion de la led neopixel embarquée permet d'afficher la couleur qui sera produite sur les leds de puissance.



Le signal MOD passe à 1 quand la fréquence de modulation est réglée à 0 ou inférieure à 10Hz (limite basse du RP2040) ce qui laisse passer les signaux PWM des leds.

D'abord installer l'interpréteur µpython (version 2Mo de base).
Noter qu'il existe des modules RP2040 avec 16Mo de flash; Pour gérer toute cette capacité il faut installer un interpréteur dédié, le standard ne gérant que 2Mo: demander à l'IA !!!!
en utilisant le mode boot du RP2040:
micropython: fichier .UF2
Le logiciel µpython produit par l'IA à installer avec Thonny sous le nom main.py sur le RP2040: leds_spectre_zero.py
il faut copier aussi la lib de gestion du SH1106 importée par le programme: sh1106.py

En prime l'IA m'a créé deux programmes de test de la flash et d'affichage des fichiers s'y trouvant: flashtest.py  et flashdir.py. Il suffit de les lancer sur la console de Thonny.


La photo indique des chiffres sur le menu qui sont supprimés dans la version du logiciel pour gagner de la place.
Le menu:
1. Choix fichier
choix  du fichier programme .txt à utiliser depuis la flash
2. Spectre RGB
modif de la couleur courante sur la roue chromatique et intensité. la couleur est reflétée sur la led neopixel embarquée(pratique pour tester)
3. Calibrage RGB
permet d'appliquer un coefficient pour chaque valeur RGB afin d'avoir la couluer demandée. on en sort par un appui long > 0.5s
4. Activer programme lance le programme
5. Freq modulation change la fréquence de modulation en manuel en dehors du programme
6. Sauver eeprom
sauve la configuration courante en flash, qui sera utiisée au démarrage

La ligne du bas affiche la fréquence courante de modulation et l'intensité.
pendant le menu un appui long > 0.5s fait un On/off des leds.
Le calibrage permet d'équilibrer la luminosité des leds pour avoir la bonne couleur.
La commande permet de choisir une couleur intermdiaire et ajuster chaque coefficient de 1 à 100%.
On passe d'un coeff à l'autre par un appui court et on sort par un appui long.
Il faut sauver l'eeprom pour garder ces coefficients qui seront appliqués à la prochaine mise sous tension.

Un exemple de programme .txt proposé par l'IA:
# Fichier de configuration des sequences de LEDs
# Lignes ignorees si elles commencent par un diese (#)
# Format avec les noms de couleurs : nom, duree_en_secondes, frequence_Hz, intensite_pourcent
rouge, 5, 50, 100
vert, 3, 100, 80
bleu, 4, 500, 90
blanc, 5, 1000, 100
magenta,3,0,9
# Format avec des valeurs RGB directes : R, G, B, duree_en_secondes, frequence_Hz, intensite_pourcent
255, 128, 0, 4, 2000, 90   # Orange personnalise
128, 0, 255, 4, 5000, 80   # Violet personnalise
LOOP  # retourne au début du fichier


En conclusion utiliser l'IA pour programmer (surtout en interprété µpython pour les tests) est très pratique.
Pendant le codage il est facile de poser des questions sur les circuits utilisés ou contraintes d'utilisation.
Néanmoins il faut surveiller donc avoir les bases de la programmation.