Faites fonctionner l'écran LCD connecté à RaspberryPi via I2C depuis Python. Cette fois, nous utiliserons un écran LCD avec SpikenzieLabs MPTH attaché au HD44780.
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-toolset
python-smbus`.
sudo apt-get install i2c-tools python-smbus
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: -- -- -- -- -- -- -- --
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.
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.
Le format est le suivant.
sudo ./i2cdisplay.py <bus> <addr> {write|clear|cursor|backlight}
«
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.
sudo ./i2cdisplay.py <bus> <addr> clear
#Afficher le curseur
sudo ./i2cdisplay.py <bus> <addr> cursor True
#Tu veux te cacher
sudo ./i2cdisplay.py <bus> <addr> cursor False
#La force est de 0-Choisissez parmi 255 (128 dans l'exemple ci-dessous)
sudo ./i2cdisplay.py <bus> <addr> backlight 128
#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")
Recommended Posts