En voulant apprendre à utiliser le module RP2040-Zero en
utilisant micropython pour piloter les leds adressables WS2812, il
fallait un exemple concret.
C'est le cube magique:
Il utilise :
- 6 matrices de 8x8 leds WS2812B
- un module RP2040-Zero
- un module analogique accéléromètre GY61
- une structure imprimée 3D
- un accu Li-Ion format 18650 de 9900mAh et son support
- un module stepup réglable entre 4 et 5V
- un module chargeur USB-C
- des interrupteurs miniature et 2 diodes schootky 1N5818
Et un programme en micropython pour animer les leds.
La structure comporte 6 faces cadres collées , certaines avec des plots
de calage (celle qui contient la prise usb de charge est laissée libre
et fixée par 2 vis pour pouvoir accéder à la prise usb du RP2040 qui
reste interne.
le cadre sans cale
le cadre avec cale
le cadre avec 2 switches et la prise usb du chargeur: le module chargeur est collé et inséré dessus
le cadre avec 3 prises usb-c
L'accu sur son support se cale juste.
Le logiciel: L'intérêt
du RP2040 est qu'il a une bonne performance (deux coeurs à 125MHz) et
est très facile à programmer, si on utilise l'interpréteur micropython.
En appuyant BOOST en même temps que RESET, le module monte comme un disque sur le pc.
Il suffit d'y copier :
- l'interpréteur micropython: fichier .UF2
- le fichier main.py et les fichiers associés graphics.py, matrix8x8.py, ws2812.pyadc.py
Ensuite le reset exécute micropyhton qui importe main.py, lui-même important les autres fichiers.
Les switches sW1,SW2,SW3
permettent de choisir l'effet affichés, s'ils sont en l'air un tirage
aléatoire enchaîne successivement l'effet affiché. Le module
accéléromètre (optionnel), modifie les paramètres de certains effets si
on secoue le cube.
Les switches SW3,SW2,SW1 codent l'effet choisi:
0
image aléatoire
1
spirale
2
nombre de 00 à 99
3
dé à jouer
4
rainbow
5
carré
6
lignes
7
tirage aléatoire de l'effet
Il est très facile de modifier (rajouter des effets et de sswitches par exemple) et tester le programme python, j'utilise Thonny pour cela.