Plotting 2d sur OLED

Plotting 2D en CPython

En CPython, il est banal de faire ce que l'on appelle du plotting 2D, du tracé de courbes x,y notamment dans l'interpréteur Jupyter.

Typiquement, on lance l'interpréteur graphique en faisant :

jupyter qtconsole

ce qui donne :

Ensuite, on active typiquement le mode dit "pylab" avec la commande magique %pylab (qui donne un accès intégré à numpy et matplotlib), puis on peut facilement créer 1 série de valeur de pour les abscisses et une série de valeur pour les ordonnées calculée à partir de la série x et on l'affiche très facilement avec la fonction plot qui est fournie par matplotlib :

>>> %pylab
Using matplotlib backend: TkAgg
Populating the interactive namespace from numpy and matplotlib
>>> x=arange(360)
>>> y=sin(radians(x))
>>> plot(x,y)

Ce qui donne par exemple ici le graphe suivant :

En micropython ?

Un afficheur OLED i2c s'interface très facilement avec une carte Micropython comme cela est présenté par ailleurs, notamment avec le Pi Pico ou encore un ESP 32.

Un afficheur OLED type fournit 128x64 pixels ce qui est déjà pas mal pour faire toutes sortes de choses, afficher des widgets, des chiffres, etc. Mais il est aussi très intéressant d'envisager l'affichage de courbe et l'application qui vient immédiatement à l'esprit est la réalisation d'un "mini-oscillo" en MicroPython, ce que là encore nous présentons par ailleurs.

En fait, il s'avère intéressant de pouvoir faire du "plotting 2D" sur afficheur OLED i2C car on dispose d'une immédiateté intéressante pour visualiser l'effet de son code d'une part, notamment via l'interpréteur, et d'autre part cela rend concret l'affichage. Le potentiel didactique voire ludique est intéressant.

Un atout intéressant comparativement à Jupyter est la facilité par exemple avec laquelle on peut réaliser des animations de courbes ou formes sur l'afficheur et la possibilité de créer des affichages interactifs avec des capteurs, etc. On aboutit au concept de "physical plotting 2D"

Noter au passage que le caractère "binaire" de l'affichage est intéressant en i2C pour garder la réactivité de l'afficheur. Si on veut un affichage couleur, il faudra passer à un afficheur SPI, mais là, on perdra le côté simple de l'afficheur i2C et les performances de rapidité seront partiellement "avalées" par d'une part le caractère multicanal (RGB) et l'augmentation de taille de l'écran.

Bref, il est intéressant et au final pas très compliqué d'envisager le "plotting 2D" sur afficheur i2C.

Le point de départ

On va commencer par quelque chose de simple, afficher la bissectrice du plan y=x

Cf code fait.