Bedienen Sie ein mit I2C verbundenes Display über Python

Überblick

Bedienen Sie das mit RaspberryPi verbundene LCD über I2C von Python aus. Dieses Mal verwenden wir ein LCD mit SpikenzieLabs MPTH, das an HD44780 angeschlossen ist.

Vorbereitung

Es ist notwendig, die Verwendung von I2C auf der RaspberryPi-Seite vorzubereiten. Fügen Sie zunächst die folgenden zwei Zeilen zu "/ etc / modules" hinzu.

i2c-bcm2708
i2c-dev

Löschen / kommentieren Sie als Nächstes die folgende Zeile aus / etc / modprobe.d / raspi-blacklist.conf.

blacklist i2c-bcm2708

Einmal neu starten, dann "i2c-tools" und "python-smbus" installieren.

sudo apt-get install i2c-tools python-smbus

Holen Sie sich die I2C-Busnummer und die Geräteadresse

Ermitteln Sie zunächst die Busnummer und die Adresse des zu verwendenden LCD. Führen Sie "sudo i2cdetect 0" und "sudo i2cdetect 1" aus. Diejenige ohne Fehler ist die Busnummer (0 oder 1), und die Adresse wird vom Ausgang erhalten. Wenn die Ausgabe beispielsweise wie folgt lautet, ist 0x20 die 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: -- -- -- -- -- -- -- --

Aktuelle Kommunikation

Die "smbus" -Bibliothek wird für die I2C-Kommunikation verwendet. Holen Sie sich das Verbindungsobjekt mit smbus.SMBus (bus_number) und senden Sie die Daten mit write_i2c_block_data. Diese Methode verwendet "addr", "cmd", "vals". addr ist die Geräteadresse. "cmd" und "vals" sind unterschiedlich und setzen das erste Byte der übertragenen Daten in "cmd" und den Rest in "vals". Dies liegt daran, dass mindestens 1 Byte gesendet werden muss (Referenz). ..

import smbus

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

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

Der HD44780 kann die Steuersequenz aus irgendeinem Grund nicht lesen. Verwenden Sie daher zum Löschen den von MPTH bereitgestellten Befehl [http://www.spikenzielabs.com/Downloadables/LCD_Interface_v3.pdf].

Spezielle Befehle werden nach "0x80" aufgerufen. Der Bildschirm ist "0x05 0x01", also

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

Wird sein.

Bibliothek

Ich habe eine Bibliothek erstellt, die diese zusammenfasst. Sie können es von einem anderen Programm aus aufrufen oder über die Befehlszeile ausprobieren. In beiden Fällen muss die Ausführung mit Root-Rechten erfolgen.

Verwenden Sie in der Befehlszeile

Das Format ist wie folgt.

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

"" und "" sind die Busnummer bzw. die Geräteadresse. Die Unterbefehle sind Zeichenausgabe, Bildschirmlöschung, Umschalten der Cursoranzeige und Einstellung der Hintergrundbeleuchtung.

Zeichenausgabe

Die Ausgabe der Zeichen lautet "sudo ./i2cdisplay.py write +". Wenn Sie mehrere durch Leerzeichen getrennte Zeichenfolgen an "" übergeben, wird die Ausgabe in mehrere Zeilen unterteilt. Wenn Sie beispielsweise abc in der ersten Zeile und def in der zweiten Zeile anzeigen möchten,

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

Es wird.

Bildschirm löschen

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

Anzeige des Cursors wechseln

#Cursor anzeigen
sudo ./i2cdisplay.py <bus> <addr> cursor True 
#Du willst dich verstecken
sudo ./i2cdisplay.py <bus> <addr> cursor False

Einstellung der Hintergrundbeleuchtung

#Stärke ist 0-Wählen Sie aus 255 (128 im folgenden Beispiel)
sudo ./i2cdisplay.py <bus> <addr> backlight 128

Als Bibliothek verwenden

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

#Zeichenausgabe
d.write("abc")

#Neue Zeile
d.newline()

#klar
d.clear()

#Mehrzeiliger Ausgang
d.writelines("abc", "def")

Referenz

Recommended Posts

Bedienen Sie ein mit I2C verbundenes Display über Python
Bedienen Sie Filemaker von Python aus
Bedienen Sie Neutronen von Python!
Betreiben Sie LXC von Python aus
Betreiben Sie DynamoDB von Python aus wie SQL.
Scraping von einer authentifizierten Site mit Python
Betreiben Sie den Cloud-Objektspeicher von Sakura von Python aus
SQL zu SQL
[Python] [Excel] Betreiben Sie Excel-Tabellen in Python mit openpyxl (am Beispiel eines Testblatts).
MeCab von Python
Steuern Sie Akizukis I2C-verbundenes organisches EL-Display von Raspberry Pi
[Python-Pandas] Erstellen Sie einen leeren DataFrame aus einem vorhandenen DataFrame
Generieren Sie mit Python eine Einfügeanweisung aus CSV.
Eine einfache Möglichkeit, Java von Python aus aufzurufen
Verwenden Sie thingspeak aus Python
Berühren Sie MySQL in Python 3
Bearbeiten Sie Redmine mit Python Redmine
Betreiben Sie mongoDB von Python in einer Ubuntu-Umgebung. ① Einführung von mongoDB
Verwenden Sie fließend Python
Greifen Sie über Python auf Bitcoind zu
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Verwenden Sie MySQL aus Python
[AWS] SQS über SDK betreiben (Senden / Empfangen) [Python] [Node.js]
Führen Sie Python aus Excel aus
Installieren Sie Python von der Quelle
Kinesis mit Python betreiben
Führen Sie Befehle aus Python aus
Verwenden Sie MySQL aus Python
Betreiben Sie Blender mit Python
Manipuliere Riak aus Python
Erzwinge Python aus Fortran
Verwenden Sie BigQuery aus Python.
Führen Sie den Befehl von Python aus
Betreiben Sie Excel mit Python (1)
[Python] Von Stdin lesen
Verwenden Sie mecab-ipadic-neologd von Python
Betreiben Sie Excel mit Python (2)
[Python] Senden Sie eine E-Mail aus Google Mail mit einer zweistufigen Authentifizierungseinstellung
Ich habe versucht, mit Python eine E-Mail von Amazon SES zu senden
Versuchen Sie, eine Excel-Datei mit Python (Pandas / XlsxWriter) zu betreiben
Versuchen Sie, eine Excel-Datei mit Python (Pandas / XlsxWriter) zu betreiben
Mit Python abflachen
Rufen Sie CPLEX von Python aus auf (DO cplex)
Deep Python hat von DEAP gelernt
Betreiben Sie Excel mit Python Open Pyxl
Post von Python nach Slack
Sortieren Sie schnell ein Array in Python 3
Betreiben Sie TwitterBot mit Lambda, Python
Grammatikfunktionen aus Python3.6 hinzugefügt
Flirte von PHP nach Python
Stellen Sie MeCab in Python 3 zur Verfügung
Zeigen Sie UTM-30LX-Daten in Python an
Informationen von tweet_id (Python)
OCR aus PDF in Python
Ein Ei mit Python erstellen
Führen Sie das Illustrator-Skript von Python aus
Verwenden Sie MySQL von Anaconda (Python)
Python ist eine Sprache für Erwachsene