loader

14. Le colorimètre

Vous êtes utilisateur d’une carte BBC micro:bit et de la TI-83 Premium CE Edition Python ? Nous avons le plaisir de vous proposer des activités SNT à réaliser en classe avec la calculatrice connectée au microcontrôleur BBC micro:bit. Ressource n°14 pour calculatrice TI-83 Premium CE Edition Python. Auteur : E. Tixidor

Si vous vous intéressez à la mode, la décoration, ou la synthèse soustractive, vous savez qu’il est difficile de décrire une couleur avec des mots.Une surface bleue est peut-être d’un Bleu ciel, Bleu marine, Bleu nuit, Bleu pétrole, Bleu roi, …

Il n’est pas seulement difficile de donner un nom à une couleur. Il l’est encore plus de se souvenir de la sensation d’une couleur, et d’essayer de la reproduire, de mémoire.L’idée de cette activité est de reproduire à l’identique une synthèse additive de la calculatrice, et de retrouver son code trichromatique RVB.

1) Principe de la trichromie

La couleur est la perception visuelle de l'aspect d'une surface ou d'une lumière. Nous nous intéresserons ici à la seule description physique d’une couleur, indépendamment de l’éclairage ainsi que des aspects liés à la perception.
Toutes les couleurs peuvent être obtenues par synthèse additive des trois couleurs primaires, Rouge, Vert, et Bleu, dont on aura ajusté les intensités.
Dans cet espace colorimétrique RVB, les couleurs sont représentées par rouge (R), vert (V) et bleu (B).

Pour un dispositif numérique, tel un écran de smartphone, ordinateur, ou même l’écran couleur de votre calculatrice.
L’intensité lumineuse varie pour chaque canal selon une valeur comprise entre 0 et 255. La profondeur de chaque composante est donc codée sur 8 bits, c'est-à dire un octet.

La profondeur de chaque composante est une valeur comprise entre 0 et 255. Chaque valeur est donc codée sur 8 bits c'est à dire un octet.
Ce qui donne quand même, par combinaison de toutes les valeurs possibles pour les trois canaux R, V et B, 16 777 216 c[4] ouleurs (soit presque 17 millions de couleurs).
 
L’image suivante montre quelques exemples de codes RVB. La première valeur exprime l’intensité du rouge, selon une valeur comprise entre 0 et 255. La deuxième le vert, et la troisième, le bleu.


Le blanc a pour code 255, 255, 255 et le noir 0, 0, 0.


2) Dispositif expérimental

a. Ecran de la calculatrice
Le dispositif servira à reproduire la couleur d’une surface. Cette surface peut-être imprimée sur une photographie. Ou bien, représentée sur une partie de l’écran de la calculatrice.
Nous choisirons, pour des raisons de commodité la deuxième option.
L’écran de la calculatrice sera alors partagé de la manière suivante : 
  • Un carré, d’une couleur inconnue et choisie de manière aléatoire, sera affiché dans le coin inférieur droit. Ce sera la carré témoin.
  • Un carré dont on pourra ajuster la couleur sera affiché dans le coin inférieur gauche.
  • Le code RVB du carré de gauche sera affiché dans le coin supérieur gauche.




Le but sera d’utiliser les commandes du dispositif pour se rapprocher le plus possible de la couleur inconnue du carré de droite. A la manière d’un caméléon. 


https://unsplash.com/photos/WBCefg9hYo4?utm_source=unsplash&utm_medium=referral&utm_content=creditShareLink


b. Commandes 

Les commandes utiliseront les boutons de la carte microbit pour changer de canal coloré :
  • Bouton a pour descendre d’un canal coloré, de manière cyclique : B => V => R => B …
  • Bouton b pour monter d’un canal coloré, de manière cyclique : R => V => B => R
  • Un potentiomètre, banché sur le PIN 0 du shield Grove permettra d’ajuster précisément l’intensité lumineuse du canal.
  • L’écran LED de la carte microbit affiche le canal en cours de réglage. 



c. Travail demandé
A partir du cahier des charges présenté ici, la séance pourrait se faire en trois temps :
  • Demander aux élèves d’établir l’algorithme correspondant, écrit en langage naturel.
  • Puis, une fois celui-ci établi, le programme en Python serait fourni.

Utiliser alors le programme pour retrouver le code RVB d’une couleur inconnue, celle du carré témoin.



Remarque : le fichier TI_Runtime_for_Microbit_ver_2.x.hex est à télécharger dans la carte micro:bit en connectant celle-ci directement à l’ordinateur (via le port USB).

1. Lecture du script
Le script étant fourni aux élèves, ceux-ci devraient pouvoir mettre en correspondance l’algorithme avec les instructions Python correspondantes. 

Quelques précisions sont données ici pour aider sa lecture. On détaillera les fonctions utiles carre et dessine, la manière avec laquelle on repère le canal RVB en cours de modification, et la mesure de position du potentiomètre.


2. Fonction carre
def carre(x,y,c):
  for i in range(c):
      plt.line(x,y-i,x+c,y-i,"")
 
La fonction carre prend en paramètres :
-        Les positions x,y du coin infèrieur gauche du carré
-        La largeur c de chaque côté
Cette fonction dessine un carré plein de côté c à partir du coin inférieur gauche de coordonnées x,y
 

3. Fonction dessine

def dessine(x,y,c,rvb):
plt.color(rvb[0],rvb[1],rvb[2])
carre(x,y,c) 
Les paramètres :
  - x,y : coordonnées du coin inférieur gauche du carré
  - c : largeur côtés
  - rvb : liste de 3 valeurs, correspondant aux intensités des 3 canaux colorés (0-255) 

Cette fonction établit la couleur du dessin à venir, à partir de la liste rvb.
Puis elle appelle la fonction carre pour dessiner l’un des carrés colorés.


4. Le changement de canal RVB

La liste CANAL contient les caractères “R“, “V“ et “B“. La liste COUL contient les valeurs R,V,B.
La variable t repère la position du canal coloré rouge, vert ou bleu qui sera modifié.

CANAL[t] vaut “R“, “V“ ou “B“ et COUL[t] a la valeur du canal rouge, vert ou bleu (0-255). 

Pour éviter un dépassement d’indice lorsque l’on augmente la valeur de t d’une unité, on utilise l’opérateur modulo %
t = (t+1)%3 
Et lorsque l’on devra diminuer t :
 t = (t-1)%3 
Ainsi, la valeur de t sera toujours comprise entre 0 et 2, correspondant aux indices des deux listes CANAL et COUL.


5. Contrôle de la position du potentiomètre

Il n’y a pas encore, à ce jour, de fonction dédiée dans la librairie microbit pour contrôler la position du capteur angulaire (Grove – Rotary Angle Sensor).
Mais il
est constitué d’un circuit électronique similaire à celui utilisé pour d’autres capteurs. On pourra alors utiliser la fonction grove.read_lightlevel()
Cette fonction retourne normalement une valeur comprise entre 0 et 100, correspondant à l’intensité lumineuse mesurée par le capteur de lumière (Grove – Light Sensor).
Avec le capteur angulaire (Grove – Rotary Angle Sensor), la valeur 0 correspond à la position en bout de course lorsque l’on tourne vers la gauche. La valeur 100, à la position extrême vers la droite.

6. Utiliser le programme

Une fois le programme lancé, le carré de droite a une couleur aléatoire, parmi les 17 millions possibles, en théorie [note1]. Alors, en sélectionnant les canaux R, V, B et en ajustant le capteur angulaire, on essaiera de reproduire cette couleur cible inconnue.  

Note 1 : L’écran de la calculatrice n’est pas assez performant pour restituer exactement ces 17 millions de couleurs que l’on pourrait programmer. Il faut être sur que celui-ci soit limité à la profondeur de couleur de 16 bits, ce qui fait quand même 66 000 couleurs environ.

7. Prolongements possibles
On pourrait ajouter une nouvelle condition d’arrêt du programme, pour lui donner un aspect plus ludique. Ce serait par exemple d’arrêter la partie lorsque le joueur est très proche de la couleur cible. 

Il faudrait établir une condition, basée sur le calcul de la différence des valeurs entre la liste COUL (couleur du carré de gauche) et CIBLE (couleur du carré cible). 

On pourrait également ajouter un chronomètre à cette partie.   

Pour transférer le code Python créé sur l'interface Vittascience :

  • Cliquer sur le bouton : "Télécharger .py pour calculatrice"
  • Connecter votre calculatrice TI-83 Premium CE Edition Python à l'ordinateur à l'aide du câble USB.
  • Ouvrir le logiciel TI Connect CE.
  • Glisser sur la calculatrice (dans le logiciel TI Connect CE) le programme téléchargé (.py) pour le copier.
  • Attendre la fin du téléchargement.
  • Débrancher votre calculatrice et connecter votre carte micro:bit.
  • Ouvrir l'application Python de votre calculatrice (touche prgm) et lancer votre programme.

  • Pour réaliser ces activités, vous aurez besoin de votre calculatrice TI-83 Premium CE Edition Python mise à jour avec le dernier système d’exploitation disponible et de télécharger et d’installer les modules BBC micro:bit.

    Toutes les instructions d'installation sont disponibles dans l'activité n°0 Présentation et installation.

    Licence d'utilisation

    Licence Creative Commons

    Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas de Modification 2.0 France