Pico-Oled-Boot : Une carte OLED + contrôle utilisateur pour Raspberry-Pi Pico
Bonjour à tous,
Je voulais vous parler d'un projet en gestation, un afficheur OLED prêt à l'emploi sous MicroPython. Si la couche matériel et les fonctionnalités de la carte sont intéressante, c'est surtout sur la partie logicielle qu'il y a eu des efforts considérables
![]() |
| source: Pico-Oled-Boot |
Pico-Oled-Boot
Commençons par un petit tour du propriétaire du Pico-Oled-Boot.
Comme vous le remarquerez, nous avons prévu de nombreux contrôles, la bonne nouvelle étant que seulement 4 broches sont utilisées sur le Pico (2 pour le bus I2C et 2 pour les boutons A et B).
![]() |
| Source Pico-Oled-Boot |
Les boutons A & B permettent l'utilisation des mécanismes d'interruption étant donné que les boutons A & B sont raccordés directement sur deux GPIOs du Pico.
![]() |
| Source Pico-Oled-Boot |
Le Pico s'insère directement derrière la carte. La mise en oeuvre est donc vraiment très facile.
Un bouton Reset est mis a disposition et positionné en dessous de la carte (pour éviter les pression accidentelles).
Enfin, un connecteur Qwiic/Stemma est également monté sur le bus I2C exploité par l'écran et le GPIO Expander. Vous pourrez ainsi brancher facilement des capteurs et en lire les données sur votre écran.
Voyez aussi notre bibliothèque de pilotes MicroPython appelée esp8266-upy.
Support logiciel
Bibliothèque de base
La carte dispose bien entendu d'une bibliothèque MicroPython (et nombreux exemples) facilitant la prise en main de la carte.
Cette bibliothèque est accessible sur le dépôt pico-oled-boot (GitHub, anglais/Français) et ce petit bout script montre à quel point l'utilisation est simple... c'est d'ailleurs le code de test utilisé en fin de fabrication.
from oledboot import *
import time
import micropython
micropython.alloc_emergency_exception_buf(100)
print( "Display joystick direction (+ Enter +Start) on the display" )
print( "Pressing button A / B do toggle the Red / Green LEDs." )
labels = {START:"Start", ENTER:"Enter", UP:"Up", DOWN:"Down", LEFT:"Left", RIGHT:"Right"}
lcd = OledBoot()
# Initialize screen
lcd.fill(0)
lcd.show()
# Using button A & B with LEDs
last_a = time.ticks_ms()
def a_pressed( pin ):
global lcd, last_a
# avoids two consecutive changes within 100ms
if time.ticks_diff( time.ticks_ms(), last_a ) > 100:
lcd.red.value( not(lcd.red.value()) )
last_a = time.ticks_ms()
last_b = time.ticks_ms()
def b_pressed( pin ):
global lcd, last_b
if time.ticks_diff( time.ticks_ms(), last_b ) > 100:
lcd.green.value( not(lcd.green.value()) )
last_b = time.ticks_ms()
lcd.a.irq( handler=a_pressed, trigger=Pin.IRQ_RISING )
lcd.b.irq( handler=b_pressed, trigger=Pin.IRQ_RISING )
while True:
lcd.fill(0) # Clear
_d = lcd.dir # Get direction
if _d in labels:
lcd.text( labels[_d],0,0,1 ) # Text,x,y,color
elif _d > 0: # 0=No direction
lcd.text( str(_d), 0,0, 1 )
lcd.show()
time.sleep_ms( 100 )Des outils avancés
C'est la partie logicielle qui a le plus profité des efforts de développement.
Un menu configurable
OledMenu.py permet de créer un menu contrôlable à l'aide du joystick.
Le but initial étant de permettre la sélection d'une entrée menu (un MenuItem)
![]() |
| OledMenu sur le Pico-Oled-Boot |
Le menu supporte la sélection d'une valeur numérique dans une gamme
| OledMenu sur le Pico-Oled-Boot |
Mais aussi la sélection d'une valeur parmi une liste (Combo)
![]() |
| OledMenu sur le Pico-Oled-Boot |
Un éditeur
OledEdit.py permet d'éditer une donnée (alphanumérique ou numérique) avec validation du contenu.
| OledMenu sur le Pico-Oled-Boot |
FBGFX
La bibliothèque esp8266-upy/FBGFX pour MicroPython ne date pas d'hier.
Cette bibliothèque offre des routines de dessin/traitement pour manipuler un FrameBuffer.
Par exemple:
Affichage de digits type "Horloge Numérique"
| fbdigit de FBGFX |
Affichage d'icône
| icontls de FBGFX |
Des éléments 1bit Pixel-Art
Disponibles au format icon ou au format de fichier pbm Portable Bit Map lisible directement depuis MicroPython.
| 1bit pixel art sur FBGFX |
RoboEyes pour MicroPython
RoboEyes pour MicroPython, une autre bibliothèque développée par nos soints, est forcement compatible avec Pico-Oled-Boot.
Il faudra que je prépare une démo pour pico-oled-boot .
| RoboEyes pour MicroPython |
Jeu pour Pico-Oled-Boot
pour le moment il n'y a qu'un seul jeu MicroPython développé pour le Pico-Oled-Boot... mais je suis fort tenté d'en ajouter d'autres.
![]() |
| Racer pour Pico-Oled-Boot |






Écrire un commentaire