π
<-

img2calc: convertis tes images à afficher sur TI-RGB Array

img2calc: convertis tes images à afficher sur TI-RGB Array

Unread postby critor » 28 May 2021, 10:54

13917img2calc est notre service universel de conversion d'images pour calculatrices graphiques.

À ce jour selon les cas, il te génère soit des fichiers ou variables à appeler depuis tes programmes Basic ou scripts Python, soit directement des scripts Python intégrant l'image en question.

1392913930Dans ce dernier cas, nous te rajoutions hier la possibilité de convertir des images pour un affichage sur BBC micro:bit.

Autre grande nouveauté aujourd'hui, tu peux maintenant convertir tes images en scripts Python permettant à ta calculatrice de les afficher sur la grille TI-RGB Array ! :bj:

En effet la grille TI-RGB Array dispose de 2×8=16 diodes RGB adressables.

1213012129La grille TI-RGB Array est à connecter à ta calculatrice via l'interface TI-Innovator Hub et son port breadboard.

Une option disponible à ce jour uniquement pour les modèles ayant une gestion en Python du TI-Innovator Hub, soit 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à 2×8 pixels.

Déjà quel format adopter pour l'image au sein du script Python ? Il nous faut tout d'abord voir les instructions dont on dispose.

Pour récupérer un objet dont les méthodes permettent de contrôler le TI-RGB Array, il te faut commencer par le code suivant :
Code: Select all
from ti_hub import * # uniquement TI-Nspire CX II
from rgb_arr import * # uniquement TI-83PCE/84+CE

rgbarr = rgb_array()

En pratique contrairement à la BBC micro:bit, le TI-Innovator Hub n'est pas directement pilotable en Python mais dans un langage de script propriétaire. Les différents appels aux bibliothèques Python fournies par TI sur la calculatrice convertissent en fait ce qu'on leur demande en instructions pour le langage de script du TI-Innovator Hub. Par exemple, le code précédent envoie en réalité au TI-Innovator Hub l'instruction CONNECT RGB.

L'objet Python ainsi récupéré offre alors les méthodes suivantes :
  • .set(diode, rouge, vert, bleu) : allume la diode indiquée (n°0 à 15) dans la couleur RGB précisée
  • .set_all(rouge, vert, bleu) : allume les 16 diodes dans la couleur précisée
  • .all_off() : éteint les 16 diodes
  • .pattern(masque) : allume en rouge les diodes correspondant au masque binaire indiqué
Comme nous l'avions vu dans l'article précédent, ici les instructions d'affichage transitent via le port USB de la calculatrice, ce qui génère un certain délai. Afin d'obtenir un affichage d'image aussi instantané que possible et donc pouvoir espérer faire jouer des animations aussi fluides que possible, il nous faut donc minimiser le nombre d'instructions utilisées.

Intéressons-nous donc à la méthode .pattern() qui permet d'allumer plusieurs diodes à la fois. Par exemple .pattern(42) envoie la commande SET RGB PATTERN 42. Comme 42=25+23+21, cela allumera en rouge 3 diodes : les n°1, 3 et 5.

Mais si nous n'avons que du rouge, nous n'irons pas loin... Et bien justement, la dernière mise à jour 1.5 du TI-Innovator Hub a rajouté un paramètre de couleur optionnel à l'instruction PATTERN, sous la forme SET RGB PATTERN masque rouge vert bleu. En fait les bibliothèques Python de TI ne le gèrent pas encore, mais il y a quand même une astuce pour en profiter malgré tout. En effet toutes les méthodes Python acceptent un paramètre supplémentaire non spécifié au menu : un suffixe qui sera concaténé à l'instruction envoyée. Pour envoyer par exemple un SET RGB PATTERN 42 255 0 255, il nous suffit d'appeler .pattern(42, "255 0 255"). ;)

Cette méthode .pattern() aurait pu nous être très utile pour minimiser le nombre d'instructions échangées, notamment dans le contexte d'images indexées : au lieu d'une instruction pour chacune des 16 diodes, nous aurions une seule instruction par couleur de la palette. Mais hélas, nous nous rendons vite compte qu'elle ne convient pas. En effet, elle allume bien maintenant le masque de diodes dans la couleur indiquée, mais elle éteint systématiquement toutes les autres diodes. L'affichage d'une image comportant plusieurs couleurs est donc strictement impossible. :'(


Donc tant pis. En attendant que Texas Instruments nous fournisse de meilleures instructions (ou pas), nous optons pour une boucle appelant la méthode .set() pour allumer au pire chacune des 16 diodes du TI-RGB Array.

Nous choisissons ici comme déjà expliqué de compacter les données Python de l'image sous la forme d'un tableau d'octets (type byte), mais pas de les compresser, le gain d'une compression RLE étant bien faible sur un aussi petit nombre de pixels, sauf à afficher des images ne présentant pas une grande complexité.

Quant au format de ces données, nous choisissons de chaîner des quadruplets d'octets :
  • numéro de diode
  • rouge
  • vert
  • bleu
Ce qui permet entre autres de gérer des images transparentes en ne rafraîchissant pas l'état des diodes non indiquées.

1393113932Et voilà, l'image que tu as choisie s'affiche alors sur le TI-RGB Array ! :bj:

Tu peux maintenant dessiner absolument tout ce que tu veux, de préférence en 2×8 pixels, et obtenir rapidement le script l'affichant sur ton TI-RGB Array ! :D

Tu restes libre bien sûr de fournir des images plus grandes, elles seront si besoin redimensionnées. Mais avec ici sur le TI-RGB Array des pixels peu nombreux et assez "gros", il vaut mieux pour toi garder le contrôle sur ce que ça donnera pixel par pixel, en fournissant une image au plus proche du format d'affichage.

Liens img2calc :
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 46.3%
 
Posts: 41908
Images: 15444
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Return to News Divers

Who is online

Users browsing this forum: No registered users and 23 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Reprise de ton ancienne fx-92 Collège ou Graph 25/35/90 à 3€ peu importe son état. Même non fonctionnelle et donc invendable, même ancienne Graph 35 non conforme aux programmes (pas de Python), même ancienne Graph 25/35 inutilisable aux examens (pas de mode examen) et donc invendable. Etiquette de retour fournie, pas de frais de port à payer.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1201 utilisateurs:
>1140 invités
>53 membres
>8 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)