Raspberry - LCD Oled 0.91" - SSD1306 - I2C

oled-ssd1306



L'afficheur Lcd Oled SSD1306 0,91" est un afficheur graphique matriciel de 128 x 32 pixels à diodes électroluminescentes qui utilise le driver SSD1306 et l'interface I2C 


Il convient à de nombreuses applications portables compactes, telles que des écrans de téléphones portables, de lecteur MP3 et de calculatrice, etc ...

Les manuels et les codes pour le SSD1306 sont disponibles chez de nombreux fabricants


Il utilise 4 broches:

  • GND Masse et VCC 3,3v / 5v
  • SCL et SDA pour la communication i2c



Oled SSD1306 0.91"

oled-0.91


J'utilise le modèle 0.91"

  • 128 x 32,  i2c, noir et blanc 
  • adresse i2c: 0x3c

Vous trouverez d'autres modèles dans ce type de produits.

  • Oled SSD1306  -  0.91"  -  128 x 32
  • Oled SSD1306  -  0.96"  -  128 x 64
  • Oled SSD1306  -  1.3"  -  128 x 64
  • Oled SSD1306  -  1.5"  -  128 x 128



Le Schéma

oled-ssd1306-schema

Cablage du LCD Oled 1306 0.91"  avec le Raspberry

Oled SSD1306    Raspberry
  • GND  -----  Gnd - pin 6
  • VCC  -----  +3,3v - pin 1 ( ou +5v - pin 2)
  • SDA  -----  SDA1  I2C - GPIO2 - pin 3
  • SCL   -----  SCL1  I2C - GPIO3 - pin 5









Installation De La Librairie Adafruit

  • adafruit_exemple
  • adafruit_animate
  • Adafruit_buttons
  • Adafruit_image
  • Adafruit_olex
  • Adafruit_stat


Vous trouverez plusieurs librairies pour utiliser l'afficheur LCD Oled 1306.

J'utilise la librairie Adafruit et tout le neccessaire pour le fonctionnement du LCD Oled 1306

Dans un terminal, saisir les commandes ci-dessous:


  • sudo raspi-config    # Initialisation du bus I2C
  • sudo apt-get update    # Update Rapbian
  • sudo apt-get upgrade -y    # Upgrade Raspbian

  • sudo apt-get install python-pip    # Installation de pip
  • sudo python -m pip install --upgrade pip setuptools wheel    # Upgrade de pip
  • sudo pip install Adafruit-SSD1306    # Installation Adafruit
  • sudo apt install git    # Installation git pour obtenir les exemples d'Adafruit
  • git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git    # Clonage des paquets Adafruit
  • sudo apt-get install -y python-imaging python-smbus i2c-tools    # Installation bus, image et i2c

  • sudo reboot    # Reboot pour prise en charge i2c-tools


  • i2cdetect -y 1  # Vérification cablage - Adresse 3c
    • Si Oled adresse 3c - présent = OK
    • Si Oled adresse 3c - non présent = Revoir cablage


Deplacer dans le dossier Adafruit/examples

  • cd Adafruit_Python_SSD1306
  • cd examples
  • ls   # Pour voir les fichiers .py


Test d'affichage


  • python animate.py
  • python buttons.py
  • python images.py
  • python shapes.py
  • python stats.py



Modification du code stats.py d'Adafruit

  • le_blog_de_claude
  • oled-ssd1306-code


Voici le code stats.py de Adafruit modifié.


Je souhaite que code affiche le texte ci-dessous

  • Le Blog de Claude            # Police arial.ttf / Taille 12
  • - - - - - - - - - - - - - - - - -
  • Le Blog de Claude            # Police Comic_Sans_MS_Bold.ttf / Taille 12
  • - - - - - - - - - - - - - - - - -

Seul le code surligné en vert clair a été modifié ou ajouté


Le code


""" Le Blog de Claude
    modification du code stats.py
    de Adafruit
""" 

import time
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import subprocess


# Raspberry Pi pin configuration:
RST = None     # on the PiOLED this pin isnt used
# Note the following are only used with SPI:
DC = 23
SPI_PORT = 0
SPI_DEVICE = 0

# 128x32 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)
# Initialize library.
disp.begin()
# Clear display.
disp.clear()
disp.display()
# Create blank image for drawing.
# Make sure to create image with mode '1' for 1-bit color.

width = disp.width
height = disp.height
image = Image.new('1', (width, height))
# Get drawing object to draw on image.
draw = ImageDraw.Draw(image)
# Draw a black filled box to clear the image.
draw.rectangle((0,0,width,height), outline=0, fill=0)
# Draw some shapes.
# First define some constants to allow easy resizing of shapes.

padding = -2
top = padding
bottom = height-padding
# Move left to right keeping track of the current x position for drawing shapes.
x = 0
# Load default font.
# font = ImageFont.load_default()
# font = ImageFont.truetype('Minecraftia.ttf', 8)


# Police de caracteres /usr/share/fonts/truetype/msttcorefonts
font1 = ImageFont.truetype("arial.ttf",12)    # Definition font1 = arial.ttf
font2 = ImageFont.truetype("Comic_Sans_MS_Bold.ttf",12)    # Definition font2 = Comic_Sans_MS_Bold.ttf


while True:
    # Draw a black filled box to clear the image.
    draw.rectangle((0,0,width,height), outline=0, fill=0)
    blog = ("Le Blog de Claude")
    trait =("- - - - - - - - - - - - - - - - -")


    # Write two lines of text.
    draw.text((x, top), str(blog),  font=font1, fill=255)  # Affichage du texte "blog" avec la police font1
    draw.text((x, top+8), str(trait),  font=font1, fill=255)
    draw.text((x, top+16), str(blog),  font=font2, fill=255)  # Affichage du texte "blog" avec la police font2
    draw.text((x, top+25), str(trait),  font=font1, fill=255)


    # Display image.
    disp.image(image)
    disp.display()
    time.sleep(.1)




Installer des polices de caractères supplémentaires

ttf


Dans le terminal, saisir la commande ci-dessous

  • sudo apt-get install ttf-mscorefonts-installer