MicroPython : Pilote pour écran Nokia 3310 (pilote FrameBuffer pour PCD8544)

Bonjour à tous,
Quand on ne dors pas de la nuit et que mille et une choses viennent polluer la douce mélodie du marchand de sable.... et bien, c'est le moment de s'occuper l'esprit avec.... Heuuu.... un pilote MicroPython?!?!.

Donc, ce petit matin, c'est l'occasion de vous annoncer la sortie du pilote pour écran Nokia 3310 (basé sur le contrôleur PCD8544).
Affichage sur afficheur Nokia 3310

Et comme vous pouvez le voir, la nuit fût productive :-)
Je suis d'accord, la résolution (84x48 pixels) n'est pas à tomber par terre mais cela à quand même permis à Nokia de faire fortune.

Brancher

J'ai utilisé un écran 3310 équipé d'un connecteur UEXT (le MOD-LCD3310 d'Olimex) aussi disponible ici chez MCHobby.
Comme j'ai une carte breakout pour Pyboard avec un connecteur UEXT, c'est super simple à brancher. Je me suis pas foulé pour la connectique... autant de temps gagné sur le code ;-)

Bon, tout le monde n'a pas de carte breakout... voici les connections à réaliser avec des fils Dupont
Source: dépôt GitHub esp8266-upy/modlcd3310

Le code de test

Une fois la bibliothèque lcd3310.py copiée depuis le dépôt GitHub esp8266-upy/modlcd3310 , il ne reste plus qu'à tester le pilote.

Il faut créer l'instance du bus SPI (et broches de commandes LCD_RESET et LCD_DATA) et puis c'est parti!

Le pilote hérite de la classe FrameBuffer, vous pouvez donc utiliser toutes les méthodes de tracé proposées par FrameBuffer.
import time
from machine import SPI, Pin
from lcd3310 import LCD3310

# Pyboard - créer les bus et broches nécessaires
ssel = Pin( "Y5", Pin.OUT, value=True ) # Non sélectionner par défaut
lcd_reset = Pin( "Y9", Pin.OUT, value=True ) # Non sélectionné par défaut
lcd_data  = Pin( "Y10", Pin.OUT, value=True ) # Data/Command (Data par défaut)
spi = SPI( 2 ) # y7=mosi, y6=sck

lcd = LCD3310( spi, ssel, lcd_reset, lcd_data )

# Voir aussi les méthodes FrameBuffer pour plus d'information
# https://docs.micropython.org/en/latest/library/framebuf.html
#
lcd.fill( 1 ) # Allumer tous les points
lcd.text( "Hello", 0,0,0 ) # text, x,y, color=0=transparent
lcd.update()
time.sleep( 3 )

lcd.clear()
lcd.text( "MCHobby<3", 3, 12 )
lcd.text( "Micro-", 3, 12+10 )
lcd.text( "   Python", 3, 12+10+10 )
lcd.rect(0,0,83,47,1)
lcd.update()

Bon pour le reste... la journée, cela ne risque pas d'être aussi productif :/
Faudra un p'tit coup de pouce.

Où acheter

MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible. 

SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Aucun commentaire