Page 1 sur 1

img2calc: convertis tes images à afficher sur micro:bit

Message non luPosté: 27 Mai 2021, 10:40
de critor
13917Nous revenons aujourd'hui sur img2calc, notre service universel de conversion d'images pour calculatrices graphiques.

Depuis peu, img2calc gère la production de scripts Python incluant de quoi afficher l'image convertie sur l'écran de ta calculatrice.

Grande nouveauté aujourd'hui, tu peux maintenant convertir tes images en scripts Python permettant à ta calculatrice de les afficher sur une carte BBC Micro:bit ! :bj:

En effet la BBC Micro:bit dispose d'un afficheur muni de 5×5 LEDs rouges.

Une option disponible pour les modèles gérant cette carte, soit à ce jour les TI-Nspire CX II ainsi que les éditions Python des TI-83 Premium CE et TI-84 Plus CE.

Nous prendrons comme exemple l'image ci-contre faisant déjà 5×5 pixels en niveaux de gris.

img2calc t'offre ici la possibilité de générer ton script pour 2 modules Python différents au choix :
  • soit microbit
  • soit ti_innovator (micro:bit) pour les TI-Nspire CX II ou ti_hub (micro:bit) pour la plateforme CE
La différence est très simple. Les modules microbit sont à installer sur ta calculatrice, liens de téléchargements disponibles en fin d'article. Sans ces modules, le script généré ne fonctionnera pas.

Si par contre tu choisis ti_innovator (micro:bit) ou ti_hub (micro:bit), ici tu n'as rien à installer puisque ces modules sont directement intégrés à la calculatrice ! :bj:
L'astuce mise en œuvre est d'utiliser leur méthode send() afin de définir notre propre fonction permettant d'envoyer directement à la carte micro:bit le code Python que l'on souhaite lui faire exécuter :
Code: Tout sélectionner
def send_microbit(cmd):
  send("\x04")
  send(cmd)
  send("\x05")


L'afficheur de la micro:bit étant constitué de LEDs rouges, lors de la conversion img2calc ne prend ici en compte que les niveaux de gris et les transforme en niveaux de rouge comme illustré ci-contre.

Mais quel format adopter pour l'image au sein du script Python ?

On peut certes imaginer une boucle allumant les diodes une par une à coups d'appels display.set_pixel(x,y,brillance), la brillance étant codée de 0 à 9, ce qui nous laisse toute liberté sur le format de stockage des données de l'image.

Cette méthode a toutefois le défaut d'être lente, puisque concernant ici un afficheur externe. En effet pour 5×5=25 diodes, les délais dus au protocole de communication seront multipliés par 25. Cela donnera de plus un affichage de l'image non pas instantané mais progressif, et pas du meilleur effet, bien embêtant de plus si tu souhaites afficher plusieurs images à la suite pour donner un effet d'animation. :'(

Sachant qu'avec le projet img2calc nous visons en priorité les performances, il nous faut trouver autre chose. Et bien cela tombe bien, car la carte BBC micro:bit gère son propre format d'image :
Code: Tout sélectionner
#your image data
#5x5 10-shades of gray pixels
image = "33445:20005:21006:00006:98877"

1392913930L'image est alors directement affichable sur la micro:bit en lui faisant exécuter d'une façon ou d'une autre display.show(Image(...)) ! :bj:

Tu peux maintenant dessiner absolument tout ce que tu veux, de préférence en niveaux de gris sur 5×5 pixels, et obtenir rapidement le script l'affichant sur ta micro:bit ! :D

Tu restes libre bien sûr de fournir des images couleurs ou plus grandes, elles seront si besoin redimensionnées et passées en niveaux de gris. Mais avec ici sur la micro:bit un afficheur munis de pixels peu nombreux et assez "gros", il vaut mieux garder le contrôle de ce que ça donnera pixel par pixel, en fournissant une image au plus proche du format d'affichage.

Liens img2calc :

Modules micro:bit :

Re: img2calc: convertis tes images à afficher sur micro:bit

Message non luPosté: 27 Mai 2021, 12:12
de Dubs
Génial, on va bientôt voir débarquer Bad Apple sur microbit !

Re: img2calc: convertis tes images à afficher sur micro:bit

Message non luPosté: 27 Mai 2021, 20:22
de critor
Et bien j'ai hâte de voir ce que va donner Bad Apple sur micro:bit. :D

Surtout qu'avec la micro:bit v2 il y aura le son en prime. ;)