Texas Instruments fait de gros efforts pour rendre la programmation de ses calculatrices accessible à tous et toutes. Le constructeur a prêté une attention toute particulière aux plus jeunes et non initiés, souhaitant leur permettre de créer tous les projets imaginables sans avoir à se concentrer sur des difficultés annexes.

Sur les calculatrices
TI-Nspire CX,
TI-83 Premium CE et
TI-84 Plus CE, il était possible de connecter l'interface
TI-Innovator Hub, le robot pilotable
TI-Innovator Rover, la grille programmable
TI-RGB Array ou encore l'adaptateur
TI-SensorLink pour capteurs analogiques
Vernier.
Tous ces éléments ont de plus le gros avantage d'être utilisables directement avec le langage
Python des derniers modèles
TI-Nspire CX II,
TI-83 Premium CE Edition Python et
TI-84 Plus CE Python, faisant de l'écosystème
Texas Instruments le seul
Python connecté !

Un superbe support pour les enseignements scientifiques au lycée maintenant qu'ils partagent le même langage de programmation, notamment en
SNT, spécialité
NSI,
SI et
Physique-Chimie, avec le gros avantage de la mobilité. En effet, les programmes produits et données collectées restent présents dans la calculatrice apportée par chaque élève à chaque cours, ce qui allège la charge logistique de l'enseignant. Données et algorithmes peuvent donc être traités / travaillés à la prochaine séance, en devoir à la maison ou même de façon transdisciplinaire en collaboration avec un autre enseignant !


Le
TI-Innovator Hub dispose de plusieurs actionneurs intégrés :
- LIGHT : diode rouge
- COLOR : diode RGB
- SOUND : haut-parleur


En plus de ceci, le
TI-Innovator Hub te permet de connecter des actionneurs externes :
- soit sur ses ports OUT 1, OUT 2 et OUT 3 des actionneurs Grove
- soit sur son port breadboard à 10 broches programmables
Nombre d'actionneurs différents sont gérés et contrôlables directement d'une simple ligne.
Commençons déjà par les actionneurs les plus simples supportés aussi bien au format
Grove que
breadboard :
- LED : diode
- SPEAKER : haut-parleur
- DCMOTOR : moteur à courant continu
- BUZZER : buzzer
- RELAY : relais
- SQUAREWAVE : générateur de signal rectangulaire
D'autres actionneurs plus évolués sont supportés uniquement au format
Grove :
- POWER : transistor de puissance
- VIB.MOTOR : moteur à vibrations
- SERVO : servomoteur (uniquement sur le port OUT3 dédié à l'alimentation en 5 Volts)
Et d'autres uniquement au format
breadboard :
- RGB : diode RGB
- SERVO.CONTINUOUS
Le
TI-Innovator Hub te permet également d'utiliser des actionneurs non supportés, aussi bien analogiques
(ANALOG.OUT) que numériques
(DIGITAL.OUT).
Pour les plus simples une connexion
Grove peut suffire, tu auras juste à calculer correctement la valeur à écrire.
Pour les actionneurs les plus complexes il faut écrire un véritable pilote.
Parmi ce large éventail d'actionneurs directement gérés par le TI-Innovator Hub, on pouvait regretter l'absence d'afficheurs à segments.
D'autant plus dommage qu'il existe des afficheurs à segments utilisant le format Grove et donc déjà connectables directement...

Les afficheurs à segments sont constitués de cellules permettant chacune d'afficher un chiffre ou une lettre. On distingue :
- les cellules numériques : dédiées à l'affichage de chiffres, elles sont constituées de 7 ou 8 segments (selon si le chiffre peut être accompagné du séparateur décimal)
- les cellules alphanumériques : pouvant afficher à la fois des chiffres et des lettres, elles sont constituées de 14 segments

Aujourd'hui nous allons nous intéresser plus particulièrement aux afficheurs numériques à 4 cellules.
On pourrait imaginer relier directement les différentes broches de l'afficheur au port
breadboard du
TI-Innovator Hub, puis ensuite coder un pilote comme évoqué.
C'est certes envisageable, mais c'est une solution très lourde dans le sens où les afficheurs bruts nécessitent un grand nombre de broches, 12 pour celui ci-contre.
Outre la lourde connectique que l'utilisateur aura alors à gérer (de préférence sans se tromper), cela occuperait de plus entièrement le port breadboard du TI-Innovator Hub, empêchant ainsi l'utilisateur de brancher autre chose.


Il existe toutefois des interfaces permettant de réduire le nombre de broches pour l'utilisateur, comme par exemple le contrôleur
TM1637. Il permet de réduire le nombre de broches de contrôle à seulement 2,
DIO et
CLK.
En rajoutant bien évidemment l'alimentation et la masse, cela ne fait malgré tout que 4 broches, soit une utilisation très légère et raisonnable du connecteur
breadboard de ton
TI-Innovator Hub.


Double avantage, ce brochage est également compatible avec le format
Grove.

On trouve ainsi des afficheurs munis du contrôleur
TM1637 aussi bien au
format Grove qu'au
format breadboard.
Les
spécifications du
TM1637 sont disponibles publiquement, et il existe déjà un
pilote écrit en langage
C++ pour cartes
Arduino.
Toutefois les TI-Nspire CX II ne gèrent hélas pas le langage C++, du moins pas officiellement...

Et bien justement
Hans-Martin Hilbig, formateur
T3 pour
Texas Instruments, vient de nous réaliser un nouvel exploit : une réécriture intégrale du pilote
C++ du
TM1637 mais cette fois-ci dans le langage
Python officiellement supporté sur les
TI-Nspire CX II !

Voici donc
M1637driver1.py, un module
Python additionnel rajoutant à ta
TI-Nspire CX II le support des afficheurs numériques à contrôleur
TM1637 !

Le module est à installer de préférence dans le dossier
/PyLib/ de ta calculatrice. Il est alors rajouté au menu des modules
Python et ainsi directement importable pour tes projets.

Nous allons te guider rapidement dans la prise en main de l'afficheur
TM1637 et de son pilote.
Si tu utilises la version
Grove de l'afficheur, tu peux la connecter aux ports
OUT 1 ou
OUT 2 du
TI-Innovator Hub.

Si tu utilises la version
breadboard, il te faudra réaliser les connexions suivantes :
Note que dans les deux cas l'afficheur TM1637 génère une consommation importante. Pour en garantir le bon fonctionnement tu devras connecter ton TI-Innovator Hub à une source d'alimentation USB externe via son port micro-USB, batterie ou secteur.
M1637driver1.tns n'utilise visiblement pas les
nouvelles possibilités de l'OS
5.3 permettant de lister ses fonctions au menu, alors nous allons te les expliquer rapidement.
Tout d'abord il te faut construire un objet
Python pour pouvoir ensuite contrôler ton afficheur. Au choix selon la connexion que tu as réalisée :
mydis = TM1637display('OUT 1')
mydis = TM1637display('OUT 2')
mydis = TM1637display('BB')
L'objet alors obtenu te fournit différentes méthodes pour piloter ton afficheur.
Mais première chose à faire obligatoirement, régler la luminosité de l'afficheur avec la méthode
.setBrightness(niveau)
.
niveau peut aller ici de 0 à 6, et pour la luminosité maximale nous appellerons donc
myset.setBrightness(6)
.
L'affichage se passe via la méthode
.setSegments(données)
.
données est ici une liste de 4 nombres entiers, un par cellule donc.
Dans un premier temps, commençons par afficher des chiffres. Il n'y a ici pas encore besoin de comprendre le format de la liste, car nous avons une méthode
.encodeDigit(chiffre)
permettant d'en générer automatiquement le contenu.

On peut par exemple s'en servir pour construire une fonction rudimentaire permettant d'afficher un nombre :
- Code: Select all
def showNumber(num, dis):
l = []
while num:
l.append(dis.encodeDigit(num % 10)
num //= 10
l.reverse()
dis.setSegments(l)
Et voilà donc ci-contre par exemple le résultat de l'appel
showNumber(1637, mydis)
.

Tentons maintenant d'aller plus loin et de contrôler directement les segments pour afficher librement tout ce que l'on veut, et entre autres des lettres.
Les 4 nombres de la liste passée à
.setSegments() indiquent en binaire les segments à allumer, selon la numérotation ci-contre.
Voilà pourquoi par exemple l'appel
.encodeDigit(1)
nous retourne 6, c'est-à-dire en binaire
0b00000110 avec les bits 1 et 2 armés pour allumer les 2 segments permettant d'afficher le chiffre 1.
Petit cas particulier, le bit 7 si armé est pris en compte uniquement pour le 2
ème nombre de la liste, et permet alors d'allumer le séparateur horaire
:
au centre de l'afficheur.

Maintenant que nous avons donc compris le format, nous ne sommes plus limités aux simples chiffres et pouvons enfin nous amuser à afficher librement tout ce que nous voulons, comme par exemple le mot
done :
- Code: Select all
l = [
0b01011110, #d
0b00111111, #O
0b01010100, #n
0b01111001, #E
]
mydis.setSegments(l)
Ta
TI-Nspire CX II peut donc enfin exploiter pleinement en
Python un afficheur 4 chiffres à 7 segments, de tout nouveaux horizons pour tes projets !
