SSD1306 affichage OLED i2c (0x3c: 60d) micropython (2019)
petit écran Oled, largeur 128c x longueur 64c, i2c, noir et blanc permettant d’afficher des textes, des images..
4 broches: GND, VCC 3,3v / 5v, SCL, SDA–> communication i2c
bibliothèque ssd1306.py
adresse i2c: 0x3c ,60d
rappel de broches ESP8266
Avec la bibliothèque ssd1306 on accède aux méthodes suivantes:
- text(), pour afficher sur texte au coordonnées x,y
- show(), affiche
- fill(), pour remplir l’écran en noir (1) ou blanc (0)
- poweroff(), éteindre l’écran
- contrast(), réglage du contraste
- invert(), inverse les couleurs (blanc <–> noir)
- pixel(), permet d’allumer un pixel en particulier
- scroll(), permet de faire un scroll de l’écran.
- Dessin de lignes hline(), vline(), line()
- Dessin de rectangle rect(), fill_rect() <– rempli
code micropython à executer sur terminal
# intialisation du bus i2c # scl=Pin5=GPIO5=d1 sda=Pin4=GPIO4=d2 from machine import I2C, Pin i2c= I2C(scl=Pin(5), sda=Pin(4)) import ssd1306 # adresse Oled 0x3c ? print(i2c.scan()) #initialisation de l'écran 128x32 à 0x3c oled=ssd1306.SSD1306_I2C(128,32, i2c, 0x3c) # timer import time oled.fill(0) oled.text("Bonjour", 0, 0) oled.text("il fait beau", 0, 20) oled.show()
time.sleep_ms(3000)
import machine, sys oled.text('version ' + sys.version, 0,10) oled.text('CPU: ' + str(machine.freq()/1000000) + 'MHz', 0,20)
oled.show()
time.sleep_ms(3000)
# inversion fond blanc=1 / fond noir=0 oled.invert(1)
time.sleep_ms(3000)
# écran blanc=1 / noir=0 oled.fill(1) oled.show() # 1-255 oled.constrast(150)
exemple d’utilisation
import machine rtc= machine.RTC() oled.text(str(rtc.datetime(), 0, 20)
Exemple pqp_oled offrant les méthodes:
affiche, afficheXY, surafficheXY, efface, inverse, test, machine
# intialisation du bus i2c # scl=Pin5=GPIO5=d1 sda=Pin4=GPIO4=d2 #del sys.modules['pqp_oled'] from machine import I2C, Pin i2c= I2C(scl=Pin(5), sda=Pin(4)) import ssd1306 # adresse Oled 0x3c ? print(i2c.scan()) #initialisation de l'茅cran 128x64 脿 0x3c # oled=ssd1306.SSD1306_I2C(128,64, i2c, 0x3c) oled=ssd1306.SSD1306_I2C(128,32, i2c, 0x3c) # timer import time # time.sleep_ms(5000) def affiche(Quoi): oled.fill(0) oled.text(Quoi, 0, 10) oled.show() def afficheXY(Quoi,x,y): oled.fill(0) oled.text(Quoi, int(x), int(y)) oled.show() def surafficheXY(Quoi,x,y): #oled.fill(0) oled.text(Quoi, int(x), int(y)) oled.show() def efface(): oled.fill(0) oled.show() def inverse(p): oled.invert(p) def test(): oled.fill(0) oled.text("Bonjour", 0, 0) oled.text("il fait beau", 0, 20) oled.show() def machine(): efface() import machine, sys oled.text('version ' + sys.version, 0,10) oled.text('CPU: ' + str(machine.freq()/1000000) + 'MHz', 0,20) oled.show() time.sleep_ms(2500) # inversion fond blanc=1 / fond noir=0 oled.invert(1) time.sleep_ms(2000) # 茅cran blanc=1 / noir=0 oled.fill(0) oled.show()
exemple d’utilisation
import pqp_oled as o o.afficheXY('Bonjour','80','25) o.machine()
affichage sur Oled (pqp_oled.py) de la luminosité (pqp_luxmetre.py)
Exemple montre sur Oled (nécessite module DS3231 i2c)
# montre à quartz sur oled # ppr 181213 # utilisation sous REPL: # import OledMontre # OledMontre.heure_mm(100) # 1:22/23 --> 99 à 0 from machine import I2C, Pin, RTC from ds3231_port import DS3231 # horloge date/heure import ssd1306 # oled # intialisation du bus i2c # scl=Pin5=GPIO5=d1 sda=Pin4=GPIO4=d2 i2c= I2C(scl=Pin(5), sda=Pin(4)) #initialisation de l'écran 128x64 à 0x3c oled=ssd1306.SSD1306_I2C(128,64, i2c, 0x3c) # adresse Oled 0x3c= 60 ? print(i2c.scan()) # date/heure ds3231=DS3231(i2c) def heure_mm(i): while i > 0: i = i - 1 # on récupère la date et heure (an, mois, jour, hh, mm, ss, jsem, zorbec) = ds3231.get_time() # affiche sur oled oled.fill(0) oled.text( str(hh) + ':' + str(mm) + ':' + str(ss) + ' -->' + str(i), 0, 40) oled.show() def heure_1x(): # on récupère la date et heure (an, mois, jour, hh, mm, ss, jsem, zorbec) = ds3231.get_time() # affiche sur oled oled.fill(0) oled.text( str(hh) + ':' + str(mm) + ':' + str(ss), 0, 40) oled.show()
utilisation sous REPL: >>> import OledMontre >>> OledMontre.heure_mm(100) affichage sur Oled 1:22/23 --> 99 à 0
http://www.crepp.org/wp-content/uploads/2019/03/Oled-apala-190327.mov