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

schéma technique ou ici

 


 

 

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