Utiliser un écran connecté I2C à partir de Python

Aperçu

Faites fonctionner l'écran LCD connecté à RaspberryPi via I2C depuis Python. Cette fois, nous utiliserons un écran LCD avec SpikenzieLabs MPTH attaché au HD44780.

Préparation

Il est nécessaire de se préparer à utiliser I2C côté RaspberryPi. Tout d'abord, ajoutez les deux lignes suivantes à / etc / modules.

i2c-bcm2708
i2c-dev

Ensuite, supprimez / commentez la ligne suivante de / etc / modprobe.d / raspi-blacklist.conf.

blacklist i2c-bcm2708

Redémarrez-le une fois, puis installez ʻi2c-toolsetpython-smbus`.

sudo apt-get install i2c-tools python-smbus

Obtenir le numéro de bus I2C et l'adresse de l'appareil

Tout d'abord, obtenez le numéro de bus et l'adresse de l'écran LCD à utiliser. Exécutez sudo i2cdetect 0 et sudo i2cdetect 1, Celui sans erreur est le numéro de bus (0 ou 1), et l'adresse est obtenue à partir de la sortie. Par exemple, si la sortie est la suivante, 0x20 est l'adresse.

WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- — -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Communication réelle

La bibliothèque smbus est utilisée pour la communication I2C. Récupérez l'objet de connexion avec smbus.SMBus (numéro_bus) et envoyez les données avec write_i2c_block_data. Cette méthode prend ʻaddr, cmd, vals. ʻAddr est l'adresse de l'appareil. «cmd» et «vals» sont différents, mettant le premier octet des données transmises dans «cmd» et le reste dans «vals». En effet, il est nécessaire d'envoyer au moins 1 octet (Référence) ..

import smbus

bus = smbus.SMBus(bus_number)
s = "abcde"

bus.write_i2c_block_data(addr, ord(s[0]), ord(s[1:]))

Le HD44780 ne peut pas lire la séquence de contrôle pour une raison quelconque, utilisez donc la commande fournie par MPTH pour l'effacement.

Les commandes spéciales sont appelées après «0x80». L'écran clair est 0x05 0x01, donc

bus.write_i2c_block_data(addr, 0x80, [0x05, 0x01])

Sera.

Bibliothèque

J'ai créé une bibliothèque qui les résume. Vous pouvez l'appeler depuis un autre programme ou l'essayer depuis la ligne de commande. Dans les deux cas, il est nécessaire de s'exécuter avec les privilèges root.

Utiliser sur la ligne de commande

Le format est le suivant.

sudo ./i2cdisplay.py <bus> <addr> {write|clear|cursor|backlight}

«» et «» sont respectivement le numéro de bus et l'adresse de l'appareil. Les sous-commandes sont la sortie de caractères, l'effacement de l'écran, la commutation de l'affichage du curseur et le réglage du rétroéclairage.

Sortie de caractères

La sortie des caractères est sudo ./i2cdisplay.py <bus> <addr> write <input> +. Si vous passez plusieurs chaînes de caractères séparées par des espaces à «», la sortie sera divisée en plusieurs lignes. Par exemple, si vous souhaitez afficher abc sur la première ligne et def sur la deuxième ligne,

sudo ./i2cdisplay.py <bus> <addr> write "abc" "def"

Il devient.

Écran propre

sudo ./i2cdisplay.py <bus> <addr> clear

Changer l'affichage du curseur

#Afficher le curseur
sudo ./i2cdisplay.py <bus> <addr> cursor True 
#Tu veux te cacher
sudo ./i2cdisplay.py <bus> <addr> cursor False

Réglage du rétroéclairage

#La force est de 0-Choisissez parmi 255 (128 dans l'exemple ci-dessous)
sudo ./i2cdisplay.py <bus> <addr> backlight 128

Utiliser comme bibliothèque

#Initialisation
d = MPTHDisplay(<bus>, <addr>)

#Sortie de caractères
d.write("abc")

#nouvelle ligne
d.newline()

#clair
d.clear()

#Sortie multiligne
d.writelines("abc", "def")

référence

Recommended Posts

Utiliser un écran connecté I2C à partir de Python
Exploitez Filemaker depuis Python
Faites fonctionner le neutron de Python!
Faire fonctionner LXC depuis Python
Utilisez DynamoDB à partir de Python comme SQL.
Scraping depuis un site authentifié avec python
Exploitez le stockage d'objets cloud de Sakura à partir de Python
sql à sql
[Python] [Excel] Exploiter des feuilles Excel à partir de Python en utilisant openpyxl (en utilisant une feuille de test comme exemple)
MeCab de Python
Contrôlez l'écran EL organique connecté I2C d'Akizuki à partir de Raspberry Pi
[Pandas Python] Créer un DataFrame vide à partir d'un DataFrame existant
Générez une instruction d'insertion à partir de CSV avec Python.
Un moyen simple d'appeler Java depuis Python
Utilisez Thingsspeak de Python
Touchez MySQL depuis Python 3
Manipuler Redmine à l'aide de Python Redmine
Faire fonctionner mongoDB à partir de python dans l'environnement ubuntu ① Introduction de mongoDB
Utiliser fluentd de python
Accéder à bitcoind depuis python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Utilisez MySQL depuis Python
[AWS] Exploitez SQS à partir du SDK (envoi / réception) [Python] [Node.js]
Exécutez Python à partir d'Excel
Installer Python à partir de la source
Utiliser Kinesis avec Python
Exécuter des commandes depuis Python
Utiliser MySQL depuis Python
Faire fonctionner Blender avec Python
Manipuler riak depuis python
Forcer Python depuis Fortran
Utilisez BigQuery depuis Python.
Exécuter la commande depuis Python
Utiliser Excel avec Python (1)
[Python] Lire depuis Stdin
Utilisez mecab-ipadic-neologd de Python
Utiliser Excel avec Python (2)
[Python] Envoyez un e-mail depuis Gmail avec le paramètre d'authentification en deux étapes
J'ai essayé d'envoyer un e-mail d'Amazon SES avec Python
Essayez d'exploiter un fichier Excel en utilisant Python (Pandas / XlsxWriter) ①
Essayez d'exploiter un fichier Excel en utilisant Python (Pandas / XlsxWriter) ②
Aplatir à l'aide du rendement Python de
Appeler CPLEX depuis Python (DO cplex)
Deep Python appris de DEAP
Exploitez Excel avec Python open pyxl
Publier de Python vers Slack
Tri rapide d'un tableau en Python 3
Exploitez TwitterBot avec Lambda, Python
Fonctionnalités de grammaire ajoutées à partir de Python3.6
Flirter de PHP à Python
Rendre MeCab disponible à partir de Python 3
Afficher les données UTM-30LX en Python
Informations obtenues à partir de tweet_id (Python)
OCR à partir de PDF en Python
Créer un œuf avec python
Exécutez le script illustrator à partir de python
Utiliser MySQL depuis Anaconda (python)
Python est un langage pour adultes