Mise à jour MaClasseTI.fr plateforme TI-83 en ligne gratuite
![Unread post Unread post](/forum/styles/prosilver/imageset/icon_post_target_unread.gif)
![](https://i.imgur.com/wW04Ra1m.png)
Rappelons que dans ce contexte, on distingue :
- les enseignements faisant encore l'objet d'une évaluation terminale : Français (épreuve anticipée en Première), Philosophie, 2 enseignements de spécialité, grand oral
- les enseignements évalués en contrôle continu : le reste du tronc commun et les enseignements optionnels
- les épreuves terminales, peu importe qu'elles soient écrites, pratiques ou orales, sont organisées sous le cadre réglementaire national, ne permettant que l'autorisation de la calculatrice comme seul outil numérique personnel, avec mode examen dans le cas d'une calculatrice graphique
- les évaluations pour le contrôle continu sont organisées selon des modalités librement choisies par l'enseignant ou établissement concerné, qui à la différence peuvent autoriser tout outil numérique qu'ils jugent pertinent pour l'évaluation (ordinateur, tablette, smartphone, ...) ou au contraire tous les interdire
Le choix des enseignements de spécialité est totalement libre pour les élèves décidant de poursuivre en série générale, avec à ce jour jusqu'à 13 spécialités possibles selon les lycées. Pour les élèves décidant de poursuivre en série technologique, l'organisation est similaire, mis à part que les élèves n'ont pas ou très peu de choix. Selon la série choisie, les enseignements de spécialités sont soit imposés, soit n'offrent qu'un nombre très limité de choix spécifiques à la série en question.
Problème, en pratique, les seuls élèves à être concernés par une épreuve terminale autorisant la calculatrice ne sont désormais plus que ceux :
En conséquence :
Les alternatives en attendant un éventuel équipement mises en oeuvre par les enseignants étaient jusqu'à présent :
- faisant le choix de la série générale avec certains enseignements scientifiques en spécialité, et qui de plus conservent ces enseignements jusqu'en Terminale : Mathématiques, Physique-Chimie et/ou Sciences de l'Ingénieur
- faisant le choix de certaines séries technologiques : STL, STI2D, STMG, ST2S, STHR ou STAV
En conséquence :
- plutôt que de s'équiper dès la Seconde nombre de familles préfèrent différer l'achat d'une calculatrice graphique, en pratique à la Première ou même pire à la Terminale
- nombre d'enseignants ne se donnent même plus la peine de recommander cet achat en Seconde, et parfois même en Première
Les alternatives en attendant un éventuel équipement mises en oeuvre par les enseignants étaient jusqu'à présent :
- faire avec la Casio fx-92+ Spéciale Collège apportée du Collège par les élèves, certes excellente au Collège mais avec le défaut comme son nom l'indique de n'être pas parfaitement adaptée aux exigences du lycée
- faire avec les ordinateur portable, tablette ou smartphone des élèves, avec des applications ou plateformes bien souvent choisis par les enseignants, et l'énorme défaut que ces outils numériques auxquels ils habituent les élèves ne seront pas ceux autorisés aux épreuves terminales
![](https://i.imgur.com/7wtFANft.png)
Majoritairement opensource, MaClasseTI.fr se compose de différents modules :
- Calculatrice en ligne (émulateur TI-83 Premium CE)
- Editeur Python (conception de projets STEM en Python ou en écriture par blocs, avec accès à une bibliothèque de projets)
- Tutoriels
- Classe (gestion de classe, banque d'activités et exercices, etc.)
![](https://i.imgur.com/XBx9XTtt.png)
![](https://i.imgur.com/cZ9Pbbqt.png)
- possibilité de faire appel à l'émulateur depuis un tuto afin d'y reproduire les manipulations
- possibilité d'intégrer l'émulateur ou l'éditeur Python dans les exercices ou activités que tu crées
- etc.
Majoritairement opensource et intégralement gratuite, la plateforme MaClasseTI.fr libère les enseignants de toute problématique d'équipement. Ils pourront désormais commencer à faire prendre en main les TI-82 Advanced Edition Python et TI-83 Premium CE aux élèves dès le premier jour de leur arrivée en Seconde, et l'achat de la calculatrice pourra quant à lui être réalisé plus tard : en Première, en Terminale, voir même juste avant les épreuves de spécialité ! On pourrait même imaginer des services de location de calculatrices désormais, juste le temps des épreuves.
Nous avions signalé nombre de bugs lors du lancement de la plateforme, particulièrement dans l'éditeur Python.
Rappelons que cet éditeur Python inclut non pas un émulateur mais un simulateur de l'application Python TI-83 Premium CE Edition Python.
Aujourd'hui Texas Instruments et VittaScience nous sortent une mise à jour majeure de la plateforme, alors vérifions ensemble ce qui a changé niveau Python.
Rappelons que cet éditeur Python inclut non pas un émulateur mais un simulateur de l'application Python TI-83 Premium CE Edition Python.
Aujourd'hui Texas Instruments et VittaScience nous sortent une mise à jour majeure de la plateforme, alors vérifions ensemble ce qui a changé niveau Python.
Sommaire :
1) Nouveaux projets
![](https://i.imgur.com/VZWZ03it.png)
![](https://i.imgur.com/lFTteeRt.png)
Pour te lancer dans un nouveau projet tu étais obligé de :
- ouvrir n'importe lequel des projets offerts par la bibliothèque intégrée
- pour tout y effacer
- et enfin pouvoir commencer à coder ton projet
![](https://i.imgur.com/Scd7jOmt.png)
B) Editeur
![](https://i.imgur.com/iSPWwcVt.png)
![](https://i.imgur.com/hwvEFA9t.png)
- Code: Select all
def fibo(n):
b, i = 0, 0
while i <= n:
if i < 2:
a = i
else :
a, b = a + b, a
i += 1
return a
On peut citer par exemple les niveaux d'intentation qui ne sont pas indiqués par des losanges.
![](https://i.imgur.com/VuvwMaCt.png)
Malheureusement, cela semble apporter davantage d'ennuis que cela en corrige.
Si tu utilises des indentations avec 2 espaces, il devient impossible de copier-coller correctement les scripts saisis dans l'éditeur en ligne vers un autre environnement de développement Python. En effet il y a une non homogénéité dans le codage automatique des indentations, certaines utilisant alors des espaces et d'autres des tabulations.
![](https://i.imgur.com/ng3iTxht.png)
C) Variables
![](https://i.imgur.com/4MSZid0t.png)
entreret
annul.
Nous avons maintenant droit à une touche supplémentaire
var. En cliquant dessus après ou même pendant l'exécution d'un script Python, tu obtiens la liste de toutes les variables affectées. Si l'environnement Python n'est pas occupé (exécution du script terminée ou bien attente d'une saisie), cliquer sur l'une de ces variables permet de saisir son nom dans la console, afin par exemple d'en consulter la valeur.
D) Fonction print() et police
![](https://i.imgur.com/uciOeAot.png)
![](https://i.imgur.com/s92Szd1t.png)
- Code: Select all
LINES = 4
DELTA = 8
START = 4
def print_stars(i):
print(" "*(DELTA // 2)*(LINES - i - 1) + "*"*(DELTA*i + START))
for i in range(LINES):
print_stars(i)
print("Hello TI-World from inside !")
for i in range(LINES - 1, -1, -1):
print_stars(i)
On pouvait de plus noter en passant l'utilisation d'une police très différente de celle de la calculatrice.
![](https://i.imgur.com/Ok6PYmet.png)
Les espaces sont correctement pris en compte, et on note que la police de caractères utilisée a été changée pour mieux reproduire les affichages de la calculatrice. C'est maintenant la police communautaire TI-84+CSE / 84+CE / 83PCE de jacobly qui est utilisée !
![Bien joué! :bj:](./images/smilies/sg3agbjg3ag.gif)
E1) Fonction ti_system.disp_at()
La bibliothèque ti_system fournit des fonctions spécifiques à l'environnement Texas Instruments.
Parmi elles, on trouve la fonction
Parmi elles, on trouve la fonction
disp_at(ligne, texte, alignement)
, permettant d'afficher une chaîne de caractères sur une ligne précise de l'écran de la calculatice, avec :- ligne : le numéro de la ligne de 1 à 11 (numérotation de haut en bas)
- texte : la chaîne de caractères à afficher
- alignement : au choix "left", "center" ou "right" pour aligner respectivement à gauche, au centre ou à droite
![](https://i.imgur.com/ijdQMUjt.png)
![](https://i.imgur.com/597b1cRt.png)
- Code: Select all
from ti_system import *
logo = [
["WWWWWWW WWW", "center"],
["WWWWWWW ", "center"],
["WWWWWWWWW WWW WWWWWW ", "right"],
["WWWWWWWWW WWW WWWWWWW ", "right"],
["WWWWWWWWWWWWWWW WWW WWWWWW", "left"],
["WWWWWWWWWWWWWW WWW WWWWWWWWWW", "right"],
["WWWWWWWWWWWW WWW WWWWWWWWWW", "right"],
["WW WWW WWWW", "center"],
[" WWWWWWWWWW", "center"],
[" WWWWWWWW", "center"],
[" WWWWW", "center"]
]
for i in range(len(logo)):
ligne = logo[i]
disp_at(i + 1, ligne[0], ligne[1])
disp_wait()
Nous constations 2 problèmes :
- l'affichage sans effacement de ce qu'il y avait déjà aux positions ciblées
- et de petits décalages sur certains enchaînements d'alignements, car si tu comptes bien les affichages étaient réalisés non pas sur 32 colonnes comme avec la calculatrice mais sur 33 colonnes
![](https://i.imgur.com/dQ5OIBxt.png)
![](https://i.imgur.com/A7Exq8Gt.png)
Toutefois, un autre problème semble présent.
Il reste un décalage, bizarrement variable, sur la première ligne affichée.
Peut-être le calcul de l'alignement ici au centre, tient-il compte, à tort, de la dernière position du curseur...
Il reste un décalage, bizarrement variable, sur la première ligne affichée.
Peut-être le calcul de l'alignement ici au centre, tient-il compte, à tort, de la dernière position du curseur...
E2) Fonction ti_system.wait_key()
![](https://i.imgur.com/QNaSyipt.png)
ti_system.wait_key()
permet d'attendre l'appui sur une touche du clavier.Ici contrairement à la calculatrice seulement 2 touches sont disponibles,
annulet
entrer.
Sauf que la fonction wait_key() ne renvoyait pas le code de la touche pressée, mais rien.
De plus autre problème, pour ceux qui programmaient exclusivement en mode blocs, cette fonction était inaccessible car aucun bloc ne lui était associé.
De plus autre problème, pour ceux qui programmaient exclusivement en mode blocs, cette fonction était inaccessible car aucun bloc ne lui était associé.
![](https://i.imgur.com/KE6bzzmt.png)
- 5 si l'on active la touche
entrer
- 9 si l'on active la touche
annul
varquant à elle n'est pas gérée par la fonction wait_key(), son rôle spécifique se réduisant à ce que nous avons décrit plus haut.
![](https://i.imgur.com/Wbf1oZxt.png)
E3) Exportation/importation de valeurs
La bibliothèque ti_system offre plusieurs fonctions permettant d'exporter/importer des valeurs entre l'environnement Python et le système TI-83 Premium CE :
store_list(nom, liste)
: permet d'exporter les valeurs d'une liste de nombre réels (entiers ou flottants) vers la variable liste TI-83 Premium CE dont on indique le numéro (de 1 à 6 pour L1 à L6) ou le nom sur 5 caractères maximumrecall_list(nom)
: permet inversement de récupérer dans l'environnement Python les valeurs d'une variable liste TI-83 Premium CErecall_RegEQ
: permet de récupérer dans l'environnement Python la chaîne de caracètres avec l'équation de la dernière régression statistique effectuée dans l'environnement TI-83 Premium CE
![](https://i.imgur.com/ODzuemQt.png)
- Code: Select all
from ti_system import *
store_list(6,[ i**2 + i + 41/2 for i in range(8)])
print(recall_list(6))
store_list("TEST",[ i**2 + i + 41 for i in range(8, 14)])
print(recall_list("TEST"))
Si elles n'ont certes que peu d'intérêt ici où l'environnement Python est à ce jour totalement scindé de l'environnement TI-83 Premium CE, c'était quand même bien embêtant que certains projets parfaitement fonctionnels sur ta calculatrices soient ici inutilisables.
![](https://i.imgur.com/wc9Uwtmt.png)
Par contre, recall_RegEQ semble avoir été omise, continuant à interrompre l'exécution sur une exception NotImplementedError.
F) Bibliothèque turtle
La bibliothèque de tracé à la tortue turtle utilisée par l'interface en ligne ne respectait pas rigoureusement le standard. En témoigne le script suivant qui affiche sur calculatrice un superbe tournesol dressé sur un beau ciel bleu, mais donnait sur l'interface en ligne une espèce de chardon écrasé par terre...
Plusieurs problèmes intervenaient ici :
- Code: Select all
from math import pi, sin, cos, sqrt
from turtle import *
turtle = Turtle()
def spiral():
phi = (1+sqrt(5))/2
a =0
r = 0
dr = 0.15
turtle.penup()
for i in range(300):
turtle.forward(r)
turtle.pencolor(0,0,0)
turtle.dot(3)
turtle.pencolor(205,133,63)
turtle.dot(2)
turtle.goto(0,0)
turtle.setheading(0)
a+=360/phi
turtle.right(a)
if a>=360:
r+=dr
a-=360
def feuille(core,a):
turtle.begin_fill()
turtle.right(a/2)
turtle.forward(core)
turtle.left(a)
turtle.forward(core)
turtle.left(180-a)
turtle.forward(core)
turtle.left(a)
turtle.forward(core)
turtle.end_fill()
turtle.speed(0)
turtle.pencolor(30,144,255)
turtle.dot(320)
d=25
core=40
turtle.pencolor(160,82,45)
turtle.dot(40)
c=((255,215,0),(255,255,0))
for i in range(2):
turtle.pencolor(c[0][0], c[0][1], c[0][2])
turtle.fillcolor(c[i][0], c[i][1], c[i][2])
for h in range(10*i,370,20):
r=h * pi / 180
x=d*cos(r)
y=d*sin(r)
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
turtle.setheading(h)
feuille(core,32)
spiral()
turtle.show()
Plusieurs problèmes intervenaient ici :
- la fonction d'orientation setheading() qui semblait ne pas utiliser la bonne unité d'angle
- la fonction pencolor() ne retenant pas la bonne couleur dans certains cas
- la fonction dot(), semblant prendre comme paramètre le diamètre du disque à remplir sur l'interface en ligne, alors qu'elle prend le rayon sur la calculatrice
![](https://i.imgur.com/z2BkB2wt.png)
Le comportement de la fonction dot() n'a pas été changé comme on peut voir au fond bleu. C'est justifiable, car dans le standard turtle la fonction dot() attend affectivement le diamètre du disque en paramètre et non pas le rayon. C'est ici la calculatrice TI-83 Premium CE qui a tort.
G) Bibliothèque ti_plotlib
![](https://i.imgur.com/4f9NZsKt.png)
![](https://i.imgur.com/GmViUbjt.png)
- Code: Select all
import ti_plotlib as plt
import math
plt.cls()
def linspace(min2, max2, number):
time = []
space = round(max2) + math.fabs(min2)
step = space / number
point = min2
time.append(point)
for i in range(0, number, 1):
point = point + step
time.append(point)
return time
def Sinus(t):
sin = []
for i in range(0, len(t), 1):
sin.append(math.sin(t[int(i)] / 180.0 * math.pi))
return sin
NUMBER_OF_POINTS = 50
MINIMUM = -360
MAXIMUM = 360
Angle = linspace(MINIMUM, MAXIMUM, 50)
Sinus2 = Sinus(Angle)
print(str(Angle))
print(str(Sinus2))
plt.cls()
plt.auto_window(Angle, Sinus2)
plt.grid(90, 0.25, "dot")
plt.color(0, 0, 153)
plt.axes("on")
plt.color(0, 0, 0)
plt.labels('Angle (°)', '', 6, 1)
plt.title('f(x) = sin(x)')
plt.color(0, 153, 0)
plt.plot(Angle, Sinus2, "o")
plt.color(255, 0, 0)
plt.scatter(Angle, Sinus2, "o")
plt.show_plot()
![](https://i.imgur.com/0GyTN0Ct.png)
![](https://i.imgur.com/TwUWaOUt.png)
![](https://i.imgur.com/lHqNN9Gt.png)
interroge son contenu :
- Code: Select all
import ti_plotlib as plt
l = dir(plt)
l.sort()
print(l)
Par exemple, on n'y retrouvait pas de quoi consulter les bornes de la fenêtre, ce qui nous semblait fort problématique dans certains cas.
![](https://i.imgur.com/JkFCKYut.png)
Nous y trouvons enfin de quoi consulter les bornes de la fenêtre : xmin, xmax, ymin et ymax.
Mais ce n'est pas tout, est également tout ce qui concerne les régressions statistiques : fonction lin_reg() ainsi que de quoi consulter les coefficients de la dernière régression linéaire : a, b et m.
H) Bibliothèque ti_draw
En plus des bibliothèque de tracé à la tortue et des bibliothèques de tracé par coordonnées dans un repère, la TI-83 Premium CE offre également une bibliothèque de tracé par pixels, ti_draw.
Sauf que ti_draw était jusqu'ici absente de l'interface en ligne...
![](https://i.imgur.com/Va06qA2t.png)
![](https://i.imgur.com/FmQ5Qspt.png)
![](https://i.imgur.com/AlXApqwt.png)
![](https://i.imgur.com/ZmG1KDmt.png)
- Code: Select all
import ti_draw
l = dir(ti_draw)
l.sort()
print(l)
I) Bibliothèques ti_hub et ti_rover
![](https://i.imgur.com/051nbZit.png)
La bibliothèque ti_hub est dédiée TI-Innovator Hub, brique programmable intégrant plusieurs capteurs/actionneurs et permettant d'en connecter d'autres via des ports Grove et breadboard.
Et bien miraculeux, non seulement la bibliothèque ti_hub est présente, mais son importation déclenche l'ajout d'un TI-Innovator Hub dans la partie simulation.
Mais encore mieux que ça, de façon fort intelligente la plateforme arrive à déterminer les différents types de capteurs et actionneurs invoqués par ton code et te les rajoute également, tout en te précisant si il s'agit d'éléments intégrés au TI-Innovator Hub ou d'éléments rajoutés !
![](https://i.imgur.com/FPZeJEwt.png)
- Code: Select all
from ti_hub import *
import brightns
from analogout import *
# Analog Write on OUT 1
out1 = analog_out("OUT 1")
def ecl_affine(x):
k = 1 + x / 100
return 255 * 1
L = brightns.measurement()
while not L == 100:
P = ecl_affine(L)
out1.set(P)
L = brightns.measurement()
P = ecl_affine(L)
out1.set(P)
La valeur retournée par chaque capteur peut ici être ajustée, de quoi tester tes projets comme en vrai !
C'est de plus un formidable outil si tu souhaites faire développer des projets STEM en classe car il te permet à chaque élève de disposer (virtuellement) de ses propres éléments matériels, plutôt que de faire la queue pour tester avec les éléments matériels de la classe en nombre limité.
De ton côté tu n'as plus besoin de t'embêter avec la logistique, n'ayant pas besoin de prévoir et distribuer les éléments matériels en quantité suffisante pour les séances concernées. Tu peux réserver les éléments matériels pour les tests finaux et présentation du projet.
![](https://i.imgur.com/kL0nf0Et.png)
Cela pouvait vite devenir bien gênant avec du code conséquent.
C'est maintenant corrigé, fini ces ajouts non sollicités de capteurs de température.
![](https://i.imgur.com/EMVESrrt.png)
Ce périphérique intègre lui-même divers capteurs et actionneurs (capteur de distance, capteur de couleur au sol, diode RVB, ...).
C'est ici fantastique sur l'interface en ligne, car non seulement le robot TI-Innovator Rover, lorsque invoqué, est rajouté au simulateur, mais il est même accompagné d'un véritable tapis de tests !
![](https://i.imgur.com/BjOHtagt.png)
- Code: Select all
import ti_rover as rv
def poly(n):
for i in range(n):
rv.forward(1)
rv.left(360//n)
for i in range(3, 6):
poly(i)
Hautement pertinent, tu pourras ainsi tester aisément comme en vrai tes projets utilisant les couleurs au sol pour influer sur le comportement du TI-Innovator Rover !
Un tapis de plus notamment bien pensé pour le codage d'un projet de"suivi de ligne".
Et en prime, les sens de rotation des deux servomoteurs et même distance restant à parcourir sont reportés en temps réel !
![](https://i.imgur.com/Ha2H7FCt.png)
Dans les deux cas cela faisait appel à une sous-bibliothèque color dont l'invocation déclenchait immédiatement une erreur se plaignant d'un objet robot non défini :
ExternalError: ReferenceError: robot is not defined' lors de l'utilisation de la librairie color
Lien : https://maclasseti.fr/