GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - mon-compte-github/raspberry-python-lcd: Piloter un écran lcd 4x20 en python sur un raspberry

BranchesTags
Open more actions menu

Latest commit

 

History

1 Commit
1 Commit

Folders and files

NameName
Last commit message
Last commit date
a trier
a trier
 
 
assets
assets
 
 
happy-new-year
happy-new-year
 
 
.gitignore
.gitignore
 
 
README.md
README.md
 
 
char_gen.html
char_gen.html
 
 

Repository files navigation

Connecter un écran LCD à un Raspberry

Notre écran LCD 4x20 s'appuie sur une puce HD44780 (comme la majorité des écrans LDC 2 ou 4 lignes). Il se connecte via le bus i2c, ce qui ne nécessite que 4 câbles.

Notre version est flashée avec le jeu de caractères 'A' (chinois).

Que faire avec un LCD ?

On peut faire des trucs assez sympas avec un LCD, des plus simples aux plus pointus.

L'écran permet la définition de caractères personnalisés (8x5 pixels), ce qui permet d'aller encore plus loin comme avec cette progress bar.

Progress Bar.

Configuration

Par défaut, le bus I2C n'est pas activé sur le raspberry.

On commence par activer le module du noyau.

$ sudo nano /etc/modules

Ajouter (ou décommenter les deux lignes suivantes) :

i2c-bcm2708 
i2c-dev

Enregistrer le fichier et redémarrer (sudo reboot).

Si besoin (normalement pas sur une nouvelle installation), supprimer le module de la blacklist.

$ sudo nano /etc/modprobe.d/raspi-blacklist.conf
# commenter si pas déjà fait la ligne ci-dessous
#blacklist i2c-bcm2708

Enfin, on va modifier la config globale :

$ sudo raspi-config

En fonction des versions, aller dans le menu :

  • "5 - Interfacing Options" >> "P5 I2C"
  • "8 - Advanced Options" >> "A7 I2C – Enable/Disable automatic loading"

Would you like the ARM I2C interface to be enabled? Choisir "Yes", quitter l'utilitaire et redémarrer (sudo reboot).

Si ce n'est pas suffisant, il faut également éditer le fichier de config global /boot/config.txt et ajouter vers la fin :

dtparam=i2c=on,i2s=on,spi=on
dtparam=i2c1=on
dtparam=i2c_arm=on

Pour vérifier que tout marche bien, on peut installer les outils smbus.

$ sudo apt-get update
$ sudo apt-get install i2c-tools
$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- 27 -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Notre écran est bien détecté sur l'adresse I2C 0x27 \0/.

Python

On va avoir besoin de la librairie python smbus.

$ sudo apt-get install python-smbus python3-smbus python-dev python3-dev i2c-tools

La librairie smbus est très bas niveau. Pour faciliter le développement, on va utiliser une librairie plus complète : lcddriver.py. Plusieurs versions sont disponibles sur le net, celle présente ici en est une compilation.

Caractères personnalisés

La définition des caractères se fait en construisant une matrice de bits 8x5 : 8 octets (du haut vers le bas) dont seuls les 5 bits de poids faible sont utilisés.

+-----+
| ▮▮▮ |  01110
|▮▮▮ ▮|  11101
|▮▮▮▮▮|  11111
|▮▮▮  |  11100  
|▮▮   |  11000
|▮▮▮  |  11100
| ▮▮▮▮|  01111
| ▮▮▮ |  01110
+-----+

Ensuite il faut programmer le lcd :

# 4 est le numéro du caractère (de 0 à 7)
lcd.load_custom_char(4, [0b01110,0b11101,0b11111,0b11100,0b11000,0b11100,0b01111,0b01110])

Pour faciliter leur création, j'ai amélioré une page html « wysiwyg » qui traîne sur l'Internet : définition « point and click » des caractères avec génération du code correspondant, et possibilité de ré-éditer à partir du code généré.

Automatiser le démarrage du script

Plusieurs méthodes disponible (@rebootavec un cron par exemple). Ici on va faire simple :

$ cat rc.local 
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# nécessite le chemin absolu vers le script
python /home/pi/Workspace/main.py &

exit 0

Un décompte de nouvel-an

TBD

About

Piloter un écran lcd 4x20 en python sur un raspberry

Resources

Readme
Activity

Stars

0 stars

Watchers

1 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.