• Erste Schritte
  • Hardware & GPIO
  • Projekte
  • Software
    • Webserver
  • Arduino & ESP8266
  • Hausautomatisierung
  • Sonstiges
    • News
Facebook Twitter YouTube
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
  • Einstieg
    • Erste Schritte
      • Raspberry Pi 3 Einstieg - Starter KitWas brauche und wie starte ich? – Raspberry Pi Einstieg
    • Einrichtung
      • microsd_karte_menuRaspbian Betriebssystem auf eine SD Karte flashen – Einfach & Schnell
      • wlanbluetooth_menuWLAN und Bluetooth einrichten – Raspberry Pi 4
      • wifi_menuWLAN Stick installieren und einrichten – Alternative
      • bash_menuSSH Zugriff einrichten via Putty – Kommandozeilen Zugriff
      • rdp_menuRemotedesktop Verbindung aufbauen – Fernsteuerung
    • Einsteiger Projekte
      • Sinnvolles Raspberry Pi Zubehör
      • 15 Raspberry Pi Projekte für Anfänger
      • Ampelschaltung mit GPIOs
      • GPIOs mit Port Expander erweitern
      • Elektronischer Würfel
      • 13 tolle Projekte für Kinder und Jugendliche
      • Roboter selber bauen
      • In Visual Studio Code mit C++ programmieren
      • Wünsch dir ein Tutorial
    • Programmieren lernen
      • Teil 1: Einführung
      • Teil 2: GPIOs steuern
      • Teil 3: GUI erstellen
      • Teil 4: PWM
      • C# GUI Apps entwickeln
  • Hardware & GPIO
    • 50 der wichtigsten Raspberry Pi Sensoren und Module – Aufgelistet mit Links zu den TutorialsRaspberry Pi Sensoren
    • Beliebte Tutorials
      • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorLuftfeuchtigkeit und Temperatur messen
      • Raspberry Pi WS2801B RGB LED Streifen anschließen und steuernWS2801 RGB LED Streifen anschließen und steuern
      • Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433Mhz)Funksteckdosen (433MHz) steuern
      • Raspberry Pi Relais ModulRaspberry Pi: Relais-Schalter per GPIO steuern
      • Raspberry Pi Servo MotorRaspberry Pi Servo Motor Steuerung
      • Amazon-Alexa-deutsch-auf-dem-Raspberry-Pi-installierenAmazon Alexa (Deutsch) auf dem installieren
      • Entfernung messen mit Ultraschallsensor HC-SR04 – Raspberry PiEntfernung messen mit Ultraschallsensor HC-SR04
      • 71-M-PU7vML.-S3L1500-Raspberry Pi’s über 433 MHz Funk kommunizieren
      • Raspberry Pi PIR Motion SensorBewegungsmelder PIR anschließen und steuern
      • Raspberry Pi USB Boot per Stick oder SSD Festplatte einrichtenUSB Boot per Stick oder SSD Festplatte
      • Analog
        • Raspberry Pi MCP3008 ADCMCP3008: Am Raspberry Pi analoge Signale auslesen
        • Raspberry Pi Gas Sensor MQ-2Raspberry Pi Gas Sensor (MQ-X) konfigurieren und auslesen
        • Raspberry Pi PulsmesserRaspberry Pi Pulsmesser: Herzfrequenz messen
        • Joystick am Raspberry Pi benutzen (mit MCP3008)Joystick am Raspberry Pi benutzen (mit MCP3008)
        • infrarot sharp distance senserInfrarot Abstandsmessung mit dem Raspberry Pi
        • Raspberry Pi Drehregler - Rotary EncoderKY040 Drehregler als Lautstärkeregler für den Raspberry Pi
        • Easpberry Pi Soil SensorBodenfeuchtigkeit mit dem Raspberry Pi messen
        • Raspberry Pi KeypadRaspberry Pi Keypad anschließen – Codeschloss
        • Raspberry Pi door sensorÜberwachung von Fenstern und Türen mit dem Raspberry Pi und Reed-Relais
        • Raspberry Pi Fotowiderstand HelligkeitssensorFotowiderstand (Helligkeitssensor) am Raspberry Pi
        • Raspberry Pi Waage selber bauen (mit Gewichtssensor HX711)Raspberry Pi Waage selber bauen (mit Gewichtssensor HX711)
      • Funk
        • 71-M-PU7vML.-S3L1500-Raspberry Pi’s über 433 MHz Funk kommunizieren lassen
        • Remote Control Raspberry Pi 433Mhz Radio TransmitterRaspberry Pi mit 433Mhz Funksender fernsteuern
        • Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433Mhz)Raspberry Pi Funksteckdosen (433MHz) steuern
        • Raspberry Pi MiFlora - Xiaomi Pflanzensensor in OpenHAB einbindenMiFlora – Xiaomi Pflanzensensor ins Smart Home einbinden
        • Raspberry Pi RFID RC522 TüröffnerRaspberry Pi RFID RC522 Tags auslesen (NFC)
        • Funkkommunikation zwischen Raspberry Pi's und Arduinos (2.4 GHz)Funkkommunikation (2.4 GHz): Arduino & Raspberry Pi
        • Raspberry Pi Radio ReceiverRaspberry Pi als Radioempfänger benutzen
        • Raspberry Pi Xbox 360 Wireless ControllerRaspberry Pi mittels Xbox 360 Controller steuern
        • Raspberry Pi GSM Modul - Huawei Internet SticksRaspberry Pi GSM Modul – Mobiles Internet
        • Raspberry Pi Bluetooth DatentransferRaspberry Pi Bluetooth Datentransfer zum Smartphone
      • Infrarot & Laser
        • Raspberry Pi Infrarot FernbedienungRaspberry Pi: Per IR Remote Befehle ausführen
        • infrarot sharp distance senserInfrarot Abstandsmessung mit dem Raspberry Pi
        • Raspberry Pi Laser Lichtschranke für weite DistanzenRaspberry Pi Laser Lichtschranke für weite Distanzen
        • Infrarot Raspberry Pi FernbedienungInfrarot Steuerung einrichten
        • Raspberry Pi Infrarot Lichtschranke bauen und Geschwindigkeit messenRaspberry Pi Infrarot Lichtschranke bauen
        • Raspberry Pi Fotowiderstand HelligkeitssensorFotowiderstand (Helligkeitssensor) am Raspberry Pi
      • Temperatur & Navigation
        • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorRaspberry Pi: Luftfeuchtigkeit und Temperatur messen
        • Measuring Temperature with a Raspberry Pi Temperature Sensor (1-Wire)Raspberry Pi Temperatursensor (1-Wire): Temperatur messen
        • Raspberry Pi BMP180 SensorRaspberry Pi und I2C Luftdrucksensor BMP180
        • Raspberry Pi RTC Real Time ClockReal Time Clock Modul steuern
        • Rotation und Beschleunigung mit dem Raspberry Pi messenRotation und Beschleunigung mit dem Raspberry Pi messen
        • Raspberry Pi GPS ModulRaspberry Pi GPS Ortungs- / Navigationsgerät bauen
        • Raspberry Pi Kompass selber bauenRaspberry Pi Kompass selber bauen (HMC5883L)
        • Kontaktlosen Infrarot-Temperatursensor MLX90614 am Raspberry Pi auslesenMLX90614 – Kontaktlos Temperaturen messen
      • Displays
        • Raspberrry Pi HD44780 I2CHD44780 LCD Display per I2C ansteuern
        • Raspbery Pi LCD DisplayRaspberry Pi LCD Display: 16×2 Zeichen anzeigen
        • DisplayTipps & Tricks zum offiziellen 7″ Raspberry Pi Touchscreen
        • Raspberry Pi TouchscreenTestbericht zum 7″ Raspberry Pi Touchscreen Display
        • LCD Touch Display (3.2″) am Raspberry PiLCD Touch Display (3.2″) am Raspberry Pi
        • tft lcd touch displayRaspberry Pi LCD Touch Display Teil 2 – Anpassungen
        • Raspberry Pi LED MAX7219 Dot Matrix – ProjektübersichtRaspberry Pi LED Matrix – Projektübersicht
        • Raspberry Pi 7 Segment Anzeige Kathode mit MAX7219Raspberry Pi: 7 Segment Anzeigen mit MAX7219 steuern (Kathode)
        • 7 Segment Anzeige (Anode) mit MAX7219 MAX7221 und Raspberry Pi7 Segment Anzeige mit MAX7219 am Raspberry Pi (Anode)
        • Raspberry Pi Tablet Raspad TestberichtRaspberry Pi Tablet „Sunfounder RasPad“ Testbericht
      • Motoren & Sonstige
        • Raspberry Pi Stepper Motor Control with L293D / ULN2003ARaspberry Pi Schrittmotor ansteuern
        • Raspberry Pi Servo MotorRaspberry Pi Servo Motor Steuerung
        • Raspberry Pi PCA9685 mehrere Servos gleichzeitig steuernMehrere Servo Motoren per Raspberry Pi steuern
        • Raspberry Pi PIR Motion SensorBewegungsmelder PIR anschließen und steuern
        • How to use a Raspberry Pi Fingerprint Sensor for AuthenticationRaspberry Pi Fingerprint Sensor zur Authentifizierung nutzen
        • Raspberry Pi Akku AdapterRaspberry Pi mit Akkus/Batterien betreiben
        • Entfernung messen mit Ultraschallsensor HC-SR04 – Raspberry PiEntfernung messen mit Ultraschallsensor HC-SR04
        • Raspberry Pi WS2801B RGB LED Streifen anschließen und steuernWS2801 RGB LED Streifen anschließen und steuern
        • Raspberry Pi WS2812 RGB LED StripWS2812 RGB LED Streifen per Raspberry Pi steuern
        • Raspberry Pi Überwachungskamera LivestreamÜberwachungskamera Livestream einrichten
        • NoIRAufnahmen mit dem offiziellen Kamera Modul
        • Raspberry Pi Zero - establishing an Ethernet connection (ENC28J60)Raspberry Pi Zero – Ethernet Verbindung
  • Software
    • Webserver Installation
      • apache2_menu25Teil 1 – Apache2
      • php_menu25Teil 2 – PHP 5
      • mysql_menu25Teil 3 – MySQL
      • phpmyadmin_menu25Teil 4 – phpMyAdmin
      • ftp_menu25Teil 5 – FTP Server
      • dns_menu25Teil 6 – DNS Server via No-IP
      • home_menu25Homeverzeichnis ändern
      • share_25Samba Server: Dateien im Netzwerk teilen
      • nodejs_menu25Node.js Webserver installieren und GPIOs schalten
      • ssl_menu25SSL Zertifikat kostenlos mit Let’s Encrypt
      • wordpress_25Eigenen WordPress-Server einrichten
      • cloud-25Nextcloud auf dem Raspberry Pi installieren
    • Entertainment
      • led_menu25Raspberry Pi Ambilight für alle Geräte mit OSMC selber bauen
      • amazon_menu25Amazon Alexa (Deutsch) auf dem Raspberry Pi installieren
      • controller_25Raspberry Pi RetroPie – Spielekonsole selber bauen
      • kodi_menu25Mediencenter Raspbmc als SmartTV mit dem Raspberry Pi
      • android_25Android TV Box zum selber bauen
      • apple-2316234_640Raspberry Pi als AirPlay-Empfänger
      • jukebox_menu25Raspberry Pi als Jukebox (Spotify, Soundcloud, TuneIn, uvm.)
      • steam_25Steam Spiele streamen
      • minecraft_menu25Raspberry Pi Minecraft Server
      • youtube_25YouTube Live Streaming einrichten
      • qr-code-tutorials-raspberrypi.de_25Raspberry Pi QR / Barcode Scanner
    • Fernsteuerung
      • rdp_menuRaspberry Pi Remotedesktop Verbindung
      • ssh_menu25SSH Zugriff einrichten via Putty (Windows)
      • vnc_menu25Raspberry Pi mittels VNC fernsteuern
      • welcome_menu25SSH Terminal Begrüßung ändern
      • telegram1_menu25Telegram Messenger auf dem RaspberryPi
      • telegram2_menu25Mit Telegram Messenger Raspberry Pi steuern
      • bluet_menu25Raspberry Pi Bluetooth Datentransfer zum Smartphone
      • alexa_voice_25Eigenen Raspberry Pi Alexa Skill bauen
      • microphone_25Sprachsteuerung selber bauen
      • mqtt_25MQTT Broker/Client Funkkommunikation
      • mail_25Vom Raspberry Pi Emails senden
      • twitter_25Per Twitter Bot Nachrichten posten
    • Weitere
      • loggen_menu25Sensordaten mit ThingSpeak loggen und auswerten
      • mysql_datalogger25Per lokaler MySQL Datenbank zum Raspberry Pi Datenlogger
      • opencv_menu25OpenCV auf dem Raspberry Pi installieren
      • arduino_menu30tWiringPi installieren & Pinbelegung (Raspberry Pi)
      • radio_menu25Raspberry Pi als Radio Sendestation
      • win10_menu25Windows 10 IoT auf dem Raspberry Pi installieren
      • printer_25Drucker einrichten und per Knopfdruck Bilder drucken
      • gsm_menu25Raspberry Pi GSM Modul – Mobiles Internet (LTE, 3G, UMTS)
      • autostart_menu25Autostart: Programm automatisch starten lassen
      • machine-learning-25Raspberry Pi Machine Learning erlernen
  • Projekte
      • roboter_menu30tRoboter
        • Raspberry Pi Roboter ProjektRaspberry Pi Roboter Projektübersicht
        • Raspberry Pi Roboter Bausatz fertigTeil 1: Zusammenbau
        • Raspberry Pi Roboter - Linien folgenTeil 2: Linien folgen lassen
        • Raspberry Pi Roboter per Infrarot Fernbedienung steuernTeil 3: Per Infrarot Fernbedienung steuern
        • Raspberry Pi Roboter: Ultraschall AutopilotTeil 4: Automatisch Hindernissen ausweichen
        • Raspberry Pi Roboter der eigenen Stimme folgen lassenTeil 5: Der eigenen Stimme folgen lassen
        • Raspberry Pi Roboter mit Xbox 360 Controller fernsteuernTeil 6: Mit Xbox 360 Controller Roboter fernsteuern
        • Raspberry Pi Robot Arm 6DOF6-Gelenkigen Roboter Arm am Raspberry Pi betreiben (6 DOF)
      • led_menu30LED Matrix
        • Raspberry Pi LED MAX7219 Dot Matrix – ProjektübersichtMAX7219 LED Matrix – Projektübersicht
        • 8×8 LED Dot Matrix Parts8×8 LED Matrix – Zusammenbau und Installation
        • Raspberry Pi Bibliothek für mehrzeilige m x n MAX7219 LED MatrizenBibliothek für mehrzeilige m x n MAX7219 LED Matrizen
        • Graphiken auf mehrzeiligen Raspberry Pi LED Matrizen zeichnenGraphiken auf mehrzeiligen Raspberry Pi LED Matrizen zeichnen
        • Pong auf MAX7219 Matrizen spielen (mit Joystick) – Raspberry PiPong auf MAX7219 Matrizen spielen (mit Joystick)
        • Snake auf Raspberry Pi MAX7219 Matrizen spielenSnake auf Raspberry Pi MAX7219 Matrizen spielen
        • 7 Segment Anzeige (Anode) mit MAX7219 MAX7221 und Raspberry Pi7 Segment Anzeige (Anode) mit MAX7219/MAX7221
        • Raspberry Pi 7 Segment Anzeige Kathode mit MAX7219Raspberry Pi: 7 Segment Anzeigen mit MAX7219 steuern (Kathode)
      • wetterstation_menu30Wetterstation
        • Raspberry Pi Wetterstation mit OpenHAB 2 bauenEigene Raspberry Pi Wetterstation mit OpenHAB 2 bauen
        • Raspberry Pi Luftfeuchtigkeit/Temperatur SensorLuftfeuchtigkeit und Temperatur messen
        • raspberry_pi_thingspeak_daten_loggenSensordaten mit ThingSpeak loggen und auswerten
        • Raspberry Pi BMP180 SensorRaspberry Pi und I2C Luftdrucksensor BMP180
        • Measuring Temperature with a Raspberry Pi Temperature Sensor (1-Wire)Raspberry Pi Temperatursensor (1-Wire): Temperatur messen
        • ESP8266 NodeMCU Außenposten-Wetterstation für den Raspberry PiESP8266 Wetterstation Außenposten für den Raspberry Pi
        • Raspberry Pi Gas Sensor MQ-2Raspberry Pi Gas Sensor (MQ-X) konfigurieren und auslesen
      • arduino_menu30tArduino & ESP8266
        • ESP8266 Microcontroller BoardEinführung & Programmierung des ESP8266 NodeMCU Boards
        • Raspberry Pi + ESP8266 NodeMCU: Per WLAN Daten sendenRaspberry Pi + ESP8266 NodeMCU: Per WLAN Daten senden
        • ESP8266 NodeMCU Außenposten-Wetterstation für den Raspberry PiESP8266 Wetterstation Außenposten für den Raspberry Pi
        • Mit dem NodeMCU ESP8266 433MHz Funksteckdosen steuernMit dem NodeMCU ESP8266 433MHz Funksteckdosen steuern
        • ESP8266 NodeMCU HD44780 LCD Display per I2C steuernNodeMCU ESP8266: HD44780 LCD Display per I2C steuern
        • ESP8266 Grafikdisplay: Am SSD1306 OLED per I2C Bilder & Text anzeigen
        • ESP8266 Google Maps API RoutenplanerESP8266 Google Maps API Routenplaner auf LCD anzeigen
        • 2000px-Arduino_Logo.svgRaspberry Pi und Arduino – Einführung
        • arduino unoArduino und Raspberry Pi miteinander kommunizieren lassen
        • Funkkommunikation zwischen Raspberry Pi's und Arduinos (2.4 GHz)Funkkommunikation zwischen Raspberry Pi’s und Arduinos (2.4 GHz)
        • NodeMCU: ESP8266 mit Solarpanel und Akku mit Strom versorgenNodeMCU: ESP8266 mit Solarzelle und Akku mit Strom versorgen
        • ESP8266 Access Point: Günstigen Wlan Repeater selber bauenESP8266 Access Point: Günstigen Wlan Repeater selber bauen
      • Mini Projekte
        • Raspberry Pi Gewächshaus automatisch selber bauenAutomatisches Raspberry Pi Gewächshaus selber bauen
        • Eigene Raspberry Pi Gartenbewässerung mit Webseite bauenEigene Gartenbewässerung mit Webseite bauen
        • Raspberry Pi Radio StationRaspberry Pi als Radio Sendestation verwenden
        • Raspberry Pi Radio ReceiverRaspberry Pi als Radioempfänger benutzen (Autoradio, Car PC)
        • spotify-logo-primary-horizontal-dark-background-rgbRaspberry Pi als Jukebox (Spotify, Soundcloud, TuneIn, uvm.) – Online Radio
        • Raspberry Pi RetroPie Guide - SNES Classic Spielekonsole selber bauenRaspberry Pi RetroPie Guide – SNES Spielekonsole bauen
        • Android + Raspberry Pi: Funksteckdosen App BedienungRaspberry Pi + Android/iOS: Funksteckdosen per App schalten
        • Indirekte Deckenbeleuchtung selber bauen mit farbigem LED LichtIndirekte Deckenbeleuchtung selber bauen mit farbigem LED Licht
  • Sonstiges
    • Wünsch dir ein Tutorial
    • News
    • Reviews
      • Pi Cap – Kapazitives Raspberry Pi Erweiterungsboard
      • Raspberry Pi Tablet „Sunfounder RasPad“ – Testbericht & Einrichtung
      • Testbericht zum 7″ Raspberry Pi Touchscreen Display
      • CrowPi 2 Testbericht: Laptop & Lern-Kit für Kinder
      • Daten auf dem Wio Terminal LCD Screen anzeigen
    • Raspberry Pi Zero
      • Offizielles 5$ Raspberry Pi Zero Modul vorgestellt
      • Raspberry Pi Zero – Ethernet Verbindung herstellen (ENC28J60)
      • Raspberry Pi: WS2801 RGB LED Streifen anschließen und steuern
  • Hausautomation
    • OpenHAB
      • steckdose_25Sonoff S20 Wifi Steckdose steuern
      • wireless_25Funksteckdosen (433 MHz) schalten
      • schalter_25Relais steuern (Rollladen, Lichter, etc.)
      • wetterstation_menu30Wetterstation mit OpenHAB 2 bauen
      • ws28_25WS28xx RGB LED Streifen steuern
      • touchscreen_25Touchscreen Panel bei Näherung aktivieren
      • mqtt_25MQTT Datenabfrage: Raspberry Pi an ESP8266
      • spotify_25Remote Spotify Player im Smart Home
      • heizung_25eQ-3 Thermostat im Smart Home
    • Einführung
      • Raspberry Pi Smart Home OpenHAB installierenOpenHAB installieren & konfigurieren
      • Home Assistant auf dem Raspberry Pi – Erste Schritte
    • ESP8266 NodeMCU
      • esp8266_25Einführung & Programmierung
      • arduino_25ESP8266: Arduino IDE installieren
      • lcd_25NodeMCU HD44780 LCD
      • battery_25Batteriebetrieb via Deep-Sleep
      • wifi_menuPer WLAN Daten senden
      • wetterstation_menu30Wetterstation Außenposten
      • maps_25Google Maps Routenplaner
      • wireless_25NodeMCU Funksteckdosen steuern
      • mail_25Vom NodeMCU Emails versenden
      • rgb_25WS2812B LEDs am Smartphone steuern
      • solar_25ESP8266 Stromversorgung mit Solarzelle
    • Überwachung
      • Aufnahmen mit dem offiziellen Kamera Modul des Raspberry Pi
      • Raspberry Pi: Überwachungskamera Livestream einrichten
      • mailbox_25Briefkasten Sensor – Email Benachrichtigung bei neuer Post
      • Raspberry Pi Überwachungskamera mit Webcam betreiben
      • Überwachung von Fenstern und Türen mit dem Raspberry Pi und Reed-Relais
      • ESP32 Cam Livestream Tutorial für Kamera Modul
    • Raspberry Pi + Android: Benachrichtigungen von Bewegungsmelder
    • Raspberry Pi + Android/iOS: Funksteckdosen per App schalten
    • Raspberry Pi + Android: Schwenkbarer Kamera-Livestream
      • Smart Home
        • Amazon Alexa (Deutsch) auf dem Raspberry Pi installieren
        • Raspberry Pi Funksteckdosen (433MHz) steuern – Tutorial
        • Raspberry Pi Sprachsteuerung selber bauen (Hausautomatisierung)
  • Englisch
  • Französisch
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
Home»Hardware & GPIO»HD44780 LCD Display per I2C mit dem Raspberry Pi ansteuern

HD44780 LCD Display per I2C mit dem Raspberry Pi ansteuern

Facebook Twitter LinkedIn Tumblr Email Reddit
Teilen
Facebook Twitter LinkedIn Email Tumblr Reddit Telegram WhatsApp

LCD Zeichen Displays sind eine einfache und kostengünstige Art einen Text anzeigen zu lassen. Dank dem HD44780 Controller ist das Ansteuern der Module sehr einfach geworden. Allerdings muss man viele GPIOs dafür belegen. Eine Alternative stellt hier der I2C Datenbus dar, womit nur noch zwei GPIOs belegt werden.

In diesem Tutorial wird ein 20×04 HD44780 Zeichen Display mit Hilfe eines I2C Display Adapters angesteuert. Um den Spannungspegel für das Modul herzustellen, ohne dabei die GPIOs zu gefährden wird ein Logik Konverter benutzt.

 

Zubehör

Um ein HD47780 Display per I²C ansprechen zu können, habe ich folgendes Zubehör verwendet:

  • HD44780 Display (20×04 oder 16×02 Zeichen)
  • I2C Display Adapter
  • I2C Logik Level Konverter
  • Breadboard
  • Jumper Kabel

 

hd44780 i2c display
Die Pins des I2C LCD Adapters passen perfekt auf das Display und können aufgelötet werden. Manche Displays werden bereits mit aufgelötetem I²C Adapter geliefert.

 

Aufbau

Auf dem Raspberry Pi dürfen GPIOs nicht mehr als 3.3V Spannung abbekommen, allerdings gibt es einige Module (wie dieses Display), welche 5V Signale benötigen und senden. Dafür kann ein Logic Level Converter benutzt werden, welcher 2 Seiten hat. Auf einer Seite werden jene Anschlüsse, die auf 3.3V laufen angeschlossen und auf der anderen jene mit 5V. Erkennen kannst du das an verschiedenen Merkmalen (LV – HV), wie du im folgenden Bild siehst:

647241639_842

Angeschlossen werden die Pins dann folgendermaßen:

Raspberry Pi 3.3V Level Konverter 5V Level Konverter I2C LCD Adapter
3.3V (Pin 1) LV — —
5V (Pin 2) — HV VCC
GND (Pin 6) GND GND GND
GPIO2 / SDA (Pin 3) TX1 (unten) — —
GPIO3 / SCL (Pin 5) TX1 (oben) — —
—  — TX0 (unten) SDA
—  — TX0 (oben) SCL

 

Hier noch als Zeichnung:

 

Raspberry Pi HD44780 I2C Display Controller

Dabei kann jeder beliebige Masse Pin genommen werden. Der Übersicht zuliebe habe ich Pin 20 statt Pin 6 auf der schematischen Abbildung gewählt.

Dieser Aufbau ist im Übrigen auch mit anderen Modulen, welche Signale mit einer höheren Spannung als 3.3V (in diesem Fall 5V) brauchen (Real Time Clock, etc.) verwendbar.

 

Software

Bevor wir starten können, werden zwei I²C Tools benötigt, welche wir installieren:

sudo apt-get install python-smbus i2c-tools

Danach schalten wir I2C frei (falls du es bereits aus vorherigen Tutorials freigeschaltet hast, kannst du dies überspringen):

sudo raspi-config

Unter „8. Advanced Options“ > „A7 I2C“ aktivieren wir es. Nun fügen wir der modules-Datei noch die entsprechenden Einträge hinzu:

sudo nano /etc/modules

Diese beiden Zeilen kommen ans Ende:

Shell
1
2
i2c-bcm2708
i2c-dev

Anschließend muss noch neugestartet werden, damit alle Änderungen in Kraft treten.

sudo reboot

 

Hast du das Display bereits angeschlossen, kann nun getestet werden, ob es erkannt wurde (solltest du eines der aller ersten Raspberry Pi’s [Rev.1] haben, musst du eine 0 statt 1 übergeben):

sudo i2cdetect -y 1

Die Ausgabe sollte so aussehen:

pi@raspberrypi ~ $ 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: -- -- -- -- -- -- -- --

Falls du hier eine andere Zahl als 27 angezeigt bekommst, musst du dies gleich in der lcddriver.py Datei ändern (ADDRESS = 0x27).

Laden wir aber erst einmal den Code:

mkdir hd44780 && cd hd44780
wget http://tutorials-raspberrypi.de/wp-content/uploads/scripts/hd44780_i2c.zip
unzip hd44780_i2c.zip

Mit Hilfe der beiden enthaltenen Skripts kann das Display nun angesprochen werden. Dazu öffnen wir die Python Konsole und geben folgenden Code ein:

sudo python

Python
1
2
3
4
5
6
7
8
9
10
import lcddriver
from time import *
 
lcd = lcddriver.lcd()
lcd.lcd_clear()
 
lcd.lcd_display_string("Tutorials-", 1)
lcd.lcd_display_string("      RaspberryPi.de", 2)
lcd.lcd_display_string("", 3)
lcd.lcd_display_string("HD44780 I2C Tutorial", 4)

Der erste Parameter der lcd_display_string Funktion steht dabei für den Text und der zweite für die Zeile. Es müssen nicht alle Zeilen auf einmal geändert werden, allerdings können nicht ohne weiteres einzelne Zeichen ersetzt werden. Dafür müsste der gesamte Text (mit geändertem Zeichen an der gewünschten Position) erneut gesendet werden.

Bei meinem I2C Adapter war der Kontrast am Anfang sehr niedrig eingestellt. Falls nichts angezeigt werden sollte, teste das Rädchen auf der Rückseite und schaue schräg auf das Display.

20160115_212307

 

 

Code Referenz: https://github.com/CaptainStouf/raspberry_lcd4x20_I2C
display 16x02 hd44780 HD44780 1602A HD44780 2004 hd44780 display i2c lcd controller Logic level converter python TTL
Teilen Facebook Twitter Pinterest LinkedIn Tumblr Email
Vorheriger Beitrag50 of the most important Raspberry Pi Sensors and Components
Nächster Beitrag Raspberry Pi Remote Access by using SSH and Putty

Ähnliche Beiträge

ESP32 TDS Sensor: Wasserqualität im Smart Home messen

ESP32 pH-Sensor – Automatische pH-Messung für Pool und Hydroponik

Home Assistant auf dem Raspberry Pi – Erste Schritte

Mit der Raspberry Pi REST API via Python alle GPIOs steuern

173 Kommentare

  1. Teetrinker am 29. Januar 2016 22:42

    guter Beitrag
    als Alternative für den Pegelwandler würde natürlich auch ein von der Anschlussbelegung besser verständliches Modul funktionieren
    nur als Beispiel !!!
    http://www.amazon.de/dp/B00JQ0DITU/ref=pe_386171_38075861_TE_item

    aber ich finde es gut das ein Beitrag sich mit i2c befasst was es bei der reichlichen Auswahl von i2c (smb) Bausteine lögisch ist und sich diese ohne umständliche Umprogrammierung von GPIOS anschliessen lassen und damit einen einheitlichen Bus haben und viel Möglichkeiten des Programmieren lassen (bash, Python usw)

    Antworten
    • Felix am 29. Januar 2016 23:17

      Da hast du recht, der ist natürlich auch geeignet. Ich hatte den von mir verwendeten noch rumliegen und daher diesen benutzt.

      Antworten
    • the lizard king am 27. Oktober 2021 13:25

      Ein Logic Level Shifter ist schon das beste, was man benutzen kann, und die Belegung ist bei allen diesen Modulen gleich, das aus deinem Link macht den Job auch nicht besser und wird genauso angeschlossen, wie das hier.

      Im Übrigen sei an alle folgenden Leser gesagt, dass der Raspberry Pi 2 aus diesem Tutorial vlt. einen Logic-Level-Shifter braucht, aber Raspberry 3 und 4er Modelle 5V gpio Pins besitzen

      Antworten
  2. Stefan am 8. Februar 2016 17:41

    Hallo Felix,

    ich hätte ein paar Fragen.

    * Kann dein „Driver“mehr als nur Text ausgeben? (blinken oder sowas ähnliches)
    * Wie kann man variablen ausgeben? Wenn ja, so (lcd.lcd_display_string(„%s-„, 1) %Text)
    * Braucht man einen Potenziometer um den Kontrast einstellen zu können?
    * Kann man Symbole wiedergeben z. B. ein Termometer? (Wenn ja, wie?)

    ich denke das reicht fürs erste. 🙂

    Mach weiter so.

    Antworten
    • Felix am 8. Februar 2016 17:47

      Hallo Stefan,
      kurz und knackig:
      1. Nein, ist nur für Zeichen gedacht. Blinken ist aber ziemlich einfach zu erstellen (Schleife: halbe Sekunde Text anzeigen, Text speichern und Display leeren, halbe Sekunde später wieder vorherigen Text anzeigen lassen).
      2. Fast Richtig: lcd.lcd_display_string("String: %s" % string_var, 1)
      3. Wenn du es einstellen und justieren willst – ja. Du kannst aber auch einfach verschiedene Widerstände ausprobieren und die Größe nehmen, bei der der Kontrast dir gefällt.
      4. Was meinst du mit Symbolen? Du kannst ASCII Zeichen anzeigen lassen, aber keine Bilder. Ist ja auch keine Graphik- sondern ein Zeichendisplay 🙂
      LG Felix

      Antworten
  3. Stefan am 9. Februar 2016 18:41

    Hallo Felix,

    ich habe mich leider missverständlich ausgedrückt. Ich dachte mit meinem Beispiel“ blinken“ daran, ob es noch andere Methoden in dem von dir zur Verfügung gestellten Treiber gibt.

    Mir würde da jetzt spontan einfallen, dass der Cursor angezeigt wird, der Cursor blinkt, die Hintergrundbeleuchtung ausgeschaltet werden kann, der Text im Display von rechts nach links gescrollt werden kann usw.

    Ich hatte es in einem YouTube Video gesehen. Dieser verwendet einen Treiber von Adafruit. Der ist aber so viel ich gesehen habe nicht per I2C-Verbindung gedacht und wird deshalb wahrscheinlich nicht funktionieren. (Link: https://www.youtube.com/watch?v=cVdSc8VYVBM)

    Mal eine andere doofe Frage. Für was ist denn das Rädchen hinten auf dem I2C-Controller gedacht, ist das nicht für den Kontrast?

    Mit Symbolen hatte ich gemeint, ich könnte mir ein Temperatursymbol wie es die meisten 3D-Drucker verwenden anzeigen lassen. (Link: http://nicklievendag.com/wp-content/uploads/cyrus_3d_printer_review_display-1024×530.jpg)

    Antworten
    • Felix am 9. Februar 2016 18:47

      Was du beschreibst ist zwar bei meiner Lösung nicht dabei, aber es sollte sehr einfach sein das zu erstellen.
      Beispiel Text von rechts nach links scrollen:
      Du kopierst den String mehrfach hintereinander („StringStrinString…“) und startest eine Schleife. Bei jedem Durchlauf wird der erste Buchstabe entfernt und die nächsten 16. bzw. 20 Zeichen ausgegeben (per Befehl wie im Tutorial gezeigt). Danach wird eine halbe Sekunde/o.ä. gewartet, bis die Schleife erneut ausgeführt wird.
      Einen Cursor kannst du genauso bauen: Einfach die Position X des String im Sekunden/o.ä. Takt einmal mit einem anderen Zeichen (Unterstrich z.B.) ersetzen. Warten und dann die normale Zeichenkette anzeigen und das ganze eben wiederholen.

      Antworten
    • Stefan am 9. Februar 2016 19:49

      Hallo Felix,

      auch wenn ich vielleicht nerve und vom Programmieren wenig verstehe, habe ich mir die Treiber-Datei nochmal angesehen. Am Anfang stehen meine sogar einige Funktionen, die ich auch im Video gesehen hatte….

      Allerdings denke ich, dass in der Treiberdatei dafür keine Funktionen definiert sind. Sehe ich das soweit richtig? Wenn ja, könnte man doch auch über den Treiber eine Definition entwickeln, die man in seinem Programm dann nur noch aufrufen müsste oder? Verdammt ich habe doch das falsche studiert….
      Dennoch könnte ich mir sowas vorstellen. Was meinst du dazu?

      def lcd_blinkon (self):
            self.lcd_write(LCD_BLINKON)
      Antworten
      • Felix am 9. Februar 2016 20:27

        Hallo Stefan,
        klar, das ist möglich. Das meinte ich auch damit, dass man es sehr einfach erstellen kann. Was du mit self.lcd_write(LCD_BLINKON) meinst, verstehe ich allerdings nicht (ist LCD_BLINKON ein String?).

    • Stefan am 10. Februar 2016 7:02

      Hallo Felix,

      ich weiß eben nicht ob ich richtig liege. Wenn ich mir die Treiber-Datei ansehe z. B. die Funktion LCD_CLEAR, dann ist die Funktion genauso aufgebaut. Im Prinzip ruft er auch in der Funktion (Definition) auch nur einen Befehl auf, der vorher auch einem HEX-Wert versehen wurde. Ich dachte mir deshalb, dass es mit den anderen Befehlen die oben einen HEX-Wert bekommen haben genauso laufen würde. Was meinst du dazu?

      Antworten
      • Felix am 10. Februar 2016 13:12

        Hallo Stefan,
        die Hex Werte die am Anfang der Datei definiert wurden, sind alle aus dem Datenblatt. Das sind bestimmte Bytekombinationen, die bestimmte Funktionen (wie z.B: CLEAR) auf dem Display ausführen. Da das Display aber keine Blink Funktion hat, gibt es dafür auch keinen Code, den du senden könntest.
        Allerdings ist das auch nicht nötig, da alle benötigten Funktionen (welche Bytes senden) bereits definiert sind. Du kannst also diese Funktionen verwenden und in gewisser Weise aufrufen (zum Blinken wie ich beschrieben hatte).
        LG Felix

      • linuxuser am 18. Juni 2020 11:57

        Doch, das funktioniert. Die Befehle funktionieren nur ein bisschen unterschiedlich.
        https://www.sprut.de/electronic/lcd/#befehle
        Hier steht dazu etwas. Das Display arbeitet über I2C im 4-Bit Modus (muss natürlich initialisiert werden, wie im PY-Script geschehen), jedes gesendete Byte setzt sich also so zusammen (D: Datenbit):
        D/D/D/D/Backlight Bit/Enable Bit/ReadWrite Bit/Register Bit
        Um die BLINK-Funktion zu verwenden, sendet man also einmal den „DISPLAY“-Befehl mit dem Befehls-Byte (im PY-Script lcd_write(cmd, 0); 0 als Mode steht für Befehls-Register):
        000011CB
        C: Cursor: an /aus
        B: Cursor blinkt: an /aus

    • Blackbox am 27. Februar 2016 17:58

      Hallo zusammen,

      ich habe ein wenig an den Libarys herumgebastelt. Ich kann jetzt mit oder ohne Hintergrundbeleuchtung schreiben. Weiterhin gibt es die Möglichkeit eigene Zeichen zu bauen und auf das Display zu schreiben. Würde Sie posten, aber ich habe keine Möglichkeit hier „Code“ zu posten.

      Gruß
      Blackbox

      Antworten
      • Felix am 28. Februar 2016 4:42

        Hallo Blackbox,
        du kannst deinen Code gerne auf http://pastebin.com/ posten und hier verlinken. Danke für deine Mühe!
        LG Felix

    • Stefan Wollner am 11. März 2016 13:55

      Hat zwar etwas gedauert, aber hier ist mein lcd_driver.py:

      http://pastebin.com/c6VHZx7i

      Funktion:

      lcd.lcd_display_string0(„string“, 1) -> schreibt ohne Hintergrundbeleuchtung
      lcd.lcd_display_string1(„string“, 1) -> schreibt mit Hintergrundbeleuchtung

      Antworten
  4. heiko am 29. Februar 2016 8:58

    hallo, habe den code mal instaliert auf meinem raspi mit jessie, bekomme aber beim start immer die meldung
    Traceback (most recent call last):
    File „/home/pi/i2c lcd.py“, line 1, in
    import lcddriver
    ImportError: No module named lcddriver

    woran kann das liegen ?

    danke im voraus

    Antworten
    • Felix am 29. Februar 2016 23:37

      Anscheinend liegt die Datei nicht im selben Verzeichnis wie dein Skript.

      Antworten
      • Dennis am 21. Dezember 2022 17:02

        Hallo in die Runde, ich bin recht neu auf dem Raspberry Gebiet. Habe die Waage ans laufen bekommen, in dem anderen tutorial das Display ans laufen bekommen, wie kann ich aber nun den Gewichtswert auf dem Display ausgeben? Und kann ich das programmieren das beim einschalten des Raspberrys automatisch die Waage gestartet wird und der Wert auf dem Display ausgegeben wird? Viele Grüße und danke für die Hilfe. Dennis

  5. Vincent am 13. März 2016 11:42

    Hallo,

    bei mir leuchtet zwar der Display, aber er wird nicht in der i2cdetect-Tabelle angezeigt. Ich habe auch mehrmals die Lötkontakte und die Kontakte untereinander kontrolliert.
    Woran kann das liegen, dass bei mir nichts angezeigt wird.
    Danke im vorraus

    Antworten
    • Felix am 13. März 2016 12:50

      Hallo Vincent,
      wenn über die I2C Suche nichts angezeigt wird, so wurde das Display nicht gefunden. Es leuchtet nur, weil VCC und GND richtig angeschlossen sind und es Strom bekommt.
      LG Felix

      Antworten
    • Martin am 26. März 2016 18:51

      Hallo Vincent,
      vertausch mal SDL und SCL am Pi. Hatte das gleiche Problem danach ging es.
      Grüße Martin

      Antworten
      • Olli am 1. November 2017 23:12

        Hallo Martin,
        sorry, aber ich habe laut der Tabelle oben auf der Seite keinen SDL-Anschluss?
        Das Display leuchtet, aber erkannt wird es nicht bei der Suche.
        Was kann ich tun?

      • Felix am 2. November 2017 19:09

        Hast du schon versucht den Kontrast zu verändern?

  6. Martin am 26. März 2016 18:56

    Hallo Felix,
    dein script läuft super. Allerdings kann ich mir Uhrzeit und Datum über „time.strftime“ nicht anzeigen lassen bekomme dann immer eine Fehlermeldung wie kann ich das anzeigen lassen?
    Vielen Dank im Vorraus

    Antworten
  7. rene am 3. Juni 2016 7:17

    hallo
    super anleitung, hat auf anhieb geklappt.
    hab aber noch 2 fragen.
    ich möchte 2 oder mehr variablen in einer zeile darstellen, wie mache ich das?
    lcd.lcd_display_string("%s" % var1 % var2, 1) funktioniert leider nicht.
    2 frage was bedeutet das %s in der klammer.

    vielen dank im voraus

    Antworten
    • Felix am 3. Juni 2016 16:06

      lcd.lcd_display_string("%s %s" % (var1, var2), 1)

      Antworten
  8. Martin am 4. Juni 2016 18:18

    hallo
    kann ich mit dem script auch die hintergrundbeleuchtug steuern?
    wenn ja wie mache ich das?
    über den jumper auf der i2c platiene funktioniert es nicht
    danke im voraus

    Antworten
    • Felix am 4. Juni 2016 22:41

      Nein, die Hintergrundbeleichtung kannst du mit einem Poti einstellen.

      Antworten
    • Martin am 12. Juni 2016 17:54

      Hallo Felix
      war wohl missverständlich ich meinte ob man über ein script die hintergrundbeleuchtung ein bzw aus schalten kann durch drücken eines tasters
      Danke im vorraus Martin

      Antworten
      • Felix am 12. Juni 2016 18:56

        Hi Martin,
        die Bibliothek hat doch eine Funktion zum ein bzw. ausschalten der Hintergrundbeleuchtung: lcd.lcd_backlight("ON")

    • Martin am 17. Juni 2016 15:15

      Hallo Felix,
      kann sein das ich blind bin aber finde keinen eintrag
      lcd.lcd_backlight(„ON“)
      weder in der i2c_lib noch in der lcddriver
      muss ich das vieleicht noch ergänzen?
      habs schon versucht mit lcd.lcd_backlight(„ON“)
      aber bekomme immer eine fehlermeldung das es den eintrag nicht gibt.
      danke schonmal im vorraus
      Martin

      Antworten
      • Felix am 17. Juni 2016 18:11

        In der Datei lcddriver.py ab Zeile 89 findest du die Funktion.

    • Martin am 17. Juni 2016 15:21

      nachtrag
      habs auch mit
      LCD_BACKLIGHT = 0x08
      LCD_NOBACKLIGHT = 0x00
      aber auch das hilft nicht
      Martin

      Antworten
    • Martin am 17. Juni 2016 18:51

      hi felix
      ich will ja nicht den klugscheißer raushängen lassen aber in der lcddriver.py die ich habe ist ab zeile 86 die definition für die text zeilen also der
      def lcd display string
      und der geht bis zeile 94
      hast du vielleicht eine neuere lcddriver.py?

      grüße Martin

      Antworten
      • Felix am 17. Juni 2016 18:57

        Hey Martin,
        sorry – du hast natürlich recht: Ich habe eben gesehen, dass ich die neuste Version nicht hochgeladen hatte (nun schon – danke für den Hinweis). Hier die Funktion, die du einfügen kannst:

           #turn on/off the lcd backlight
           def lcd_backlight(self, state):
              if state in ("on","On","ON"):
                 self.lcd_device.write_cmd(LCD_BACKLIGHT)
              elif state in ("off","Off","OFF"):
                 self.lcd_device.write_cmd(LCD_NOBACKLIGHT)
              else:
                 print "Unknown State!"

        LG, Felix

    • Martin am 17. Juni 2016 19:28

      hallo felix

      feedback jetzt funtzt es 😉

      LG Martin

      Antworten
  9. Micha am 11. Juni 2016 21:43

    Hallo,

    vielen Dank für das tutorial, hat wunderbar funktioniert, text etc. funst auch alles wunderbar, was ich jetzt noch gerne wüsste ist wie ich das Grad Zeichen (°) ausgeben kann. Hat da Jemand ne Idee?

    Antworten
    • Martin am 12. Juni 2016 17:51

      Hallo Micha
      das ° Zeichen bekommt du indem du +chr(233)+ vor dem Index eingibst
      Grüße Martin

      Antworten
      • bulli.uli am 22. Dezember 2017 11:17

        Hallo zusammen,
        chr(223) ist hier wohl die korrekte Angabe

        Gruß
        Uli

    • Marcus am 20. August 2016 0:25

      Hallo das Problem habe ich auch. Was für einen Index meinst du?

      Grüße Marcus

      Antworten
  10. Nils Margotti am 12. Juni 2016 13:26

    Ich erhalte beim ausführen von „i2cdetect -y 1″ als resultat:
    “ 0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: — — — — — — — — — — — — —
    10: — — — — — — — — — — — — — — — —
    20: — — — — — — — — — — — — — — — —
    30: — — — — — — — — — — — — — — — —
    40: — — — — — — — — — — — — — — — —
    50: — — — — — — — — — — — — — — — —
    60: — — — — — — — — — — — — — — — —
    70: — — — — — — — –“

    Das Display ist an und zeigt weiße und schwarze Rechtecke. Und wenn ich deinen Test-Code ausführe kriege ich einen IO-Fehler.

    Antworten
    • Felix am 12. Juni 2016 14:08

      Das wird so nicht funktionieren, da dein Display nicht per I2C erkannt wurde. Überprüf nochmal die Verkabelung.

      Antworten
    • Nils Margotti am 17. Juni 2016 18:41

      Ich musste SDA und SCL tauschen.

      Antworten
  11. Dave am 14. August 2016 13:58

    Moin,
    Wenn ich „sudo i2cdetect -y 1“ eingebe, wird zwar die Tabelle angezeigt, jedoch leider keine einzige Adresse.
    Kann mir jemand sagen was ich ggf. Falsch gemacht haben könnte?

    Antworten
    • Dave am 14. August 2016 14:21

      ehm… jo… ist nun wieder obsolet… habe gestern bei n paar bier SDA und SCL am Raspi vertauscht… *glorreich*

      Antworten
  12. Tobias am 30. August 2016 10:05

    Hallo,

    habe mein HD44780 nun auch mal angeschlossen und wird auch erfolgreich mit Adresse 27 mit sudo i2cdetect -y 1 erkannt. Textausgabe funktioniert einwandfrei 🙂 Habe die Komponenten im Einsatz die oben beschrieben sind.
    Nun mein Problem: Meine Displaybeleuchtung funktioniert nicht und ich kann mir nicht erklären warum. Am Poti habe ich auch schon rum gespielt – man sieht, dass die angezeigten Zeichen / Rechtecke sich dementsprechend ändern, jedoch tut sich an der Beleuchtung überhaupt nichts.
    Bin über jeden Rat dankbar;

    Viele Grüße
    Tobias

    Antworten
    • Tobias am 30. August 2016 10:18

      Habe es gerade gefunden: Der Jumper hat auf dem Display Adapter gefehlt….

      Antworten
  13. tito am 8. September 2016 17:52

    hallo,
    eigentlich sehr schöne Tutorials, leider nur Python und kein C/C++, daher für mich dummerweise nicht verwertbar….

    Antworten
    • Felix am 8. September 2016 18:04

      Such mal hier nach „wiringPi“, es gibt schon einige C++ Tutorials 🙂 Da aber Python für die meisten Einsteiger einfacher ist (und es generell eine einfach zu verstehende Sprache ist), habe ich hauptsächlich Python genutzt.

      Antworten
    • TITO am 9. September 2016 8:52

      Python ist absolut nicht einfacher, C ist tausend mal klarer und strukturierter, tausend mal mächtiger und weitaus schneller (mit pthread thread priorities sogar nahezu echtzeitfähig!) , und WiringPi deckt mit seinen Tutorials nur ein winzig kleines Feld in dem riesigen Gebiet der Raspi-Programmierung ab. Daher wäre auch hier C-programmierbeispiele sehr begrüßenswert. Als IDE bietet Geany hierfür alles, was man zum einfachen Programmieren braucht.

      Antworten
  14. Martin am 23. September 2016 11:03

    Hallo,

    habe seit heute das Display. Funktioniert auch soweit, jetzt hab ich folgendes Problem. Per Cronjob wird jede Minute ein Python Script gestartet das einige Relais ansteuern und weitere Hardware zu schalten.
    Das Display soll pro Zeile „Relais ein“ oder „Relais aus“ anzeigen.
    Das klappt auch, allerdings wird das Display immer geleert und dann die entsprechende Zeile z.b. 2 oder 4 angezeigt, die anderen sind geleert, ich habe in meinem Script allerdings keinen Clear befehl. Kann es sein das jedesmal wenn mein Script aufgerufen wird und die Lib geladen wird, das Display geleert wird ?

    Antworten
    • Felix am 23. September 2016 12:23

      Kannst du den Zustand aller Relais nicht speichern und alle auf einmal ausgeben?

      Antworten
    • Stefan am 12. Dezember 2020 13:59

      Hallo zusammen, gibt es hierfür eine Lösung? Ich habe exakt das gleiche Problem. Danke

      Antworten
  15. Martin am 24. September 2016 10:56

    Hey Felix,

    ja im Grunde schon. Nur wurmt es mich, das der Inhalt des Displays gelöscht wird wenn ich an anderer Stelle eine andere Zeile schreibe…. Es scheint so, als wenn der Treiber das gesamte Display löscht um eine Zeile zu schreiben obwohl dein Clear befehl gesetzt wurde. Das muß ka irgendwie gehen.

    Antworten
  16. Martin am 5. Oktober 2016 11:59

    Nach Start des Raspi startet ein PythonScript das dauernd was am Display anzeigen soll. Zur Zeit habe ich das Problem das das Display nach dem Booten einfach nur Müll darstellt. Es kommt nix sinnvolles, nur wirre Zeichen. Auch nach einem Reboot oder wenn der Raspi vom Strom getrennt war.

    Habt ihr da eine Idee?
    Scheinbar wird auch das im Script hinterlegte Clear des Displays nicht ausgeführt.

    Antworten
  17. Hannes am 9. Oktober 2016 1:58

    Hallo
    Vielen Dank für das tolle Tutorial! Hat alles wunderbar funktioniert.
    Was muss ich bei „data“ im strobe Befehl eingeben?

    Antworten
  18. Marcus Holzberg am 18. Oktober 2016 17:39

    Servus, wer das Display nur beschreiben und nicht den Status auslesen will (was der lcddriver.py ja gar nicht unterstützt), kann sich den TTL Wandler sparen.

    Antworten
  19. TeitesMars am 19. Oktober 2016 0:12

    Hallo,
    mit meinem aus China stammenden Modul (HD44780 Display 20×04
    I2C Display Adapter), das so aussieht wie das auf den Bildern hier. Konnte ich leider nicht so wie hier beschrieben in Betrieb nehem.
    sudo i2cdetect -y 1 gab mir keine Adresse zurück. Backlight war an und die LED leuchtete.
    Nach dem ich Logik Level Konverter raus genommen habe und der Betrib nur mit 3,3 V erfolgte. Konnte ich das Modul über die 0x3F Adresse ansprechen.
    Da der Kontrast nicht so Prall war wollte ich auf 5V zurück und nahm einen anderen Konverter. Und nun ist Backlight und Power LED aus bei 5 und 3,3 V. Die Adresse 0x3F wird weiter hin nur bei 3,3 V angezeigt und lasse ich deine String ausgabe durch laufen zeigt kein LCD an.
    Habe ich das Modul zerschossen oder noch schlimmer die GIPOs des Pis? Oder kann ich noch was retten?

    Antworten
    • Felix am 19. Oktober 2016 0:28

      Die GPIOs kannst du mit einem einfachen LED Test testen. Das Display sollte eigentlich 5V vertragen.

      Antworten
    • gzep am 8. August 2017 20:26

      Habe ein 16×2 Display und das gleiche Problem wie Du gehabt. Habe den Logik-Konverter entfernt und das Display direkt mit 5v angeschlossen. Mein Raspi „lebt“ noch und die Anzeige funktioniert jetzt endlich.

      Antworten
  20. Reiner am 5. November 2016 16:28

    Hallo,
    erstmal vielen Dank für dieses super Tutorial. Funktioniert perfekt. Du schreibst aber oben es kann ein 4×20 oder auch 2×16 Zeichen Display sein. Mit einem 4×20 Display funktioniert es bei mir, jedoch nicht mit einem 2×16 Zeichen Display. Hast du das selber mal ausprobiert? Auf dem kleinen Display kommen bei einzeiliger Ausgabe die richtigen Zeichen, bei zweizeiliger Ausgabe nur komischeZeichen raus.

    Antworten
  21. Reiner am 5. November 2016 16:39

    Ok Danke hat sich erledigt beim „Rumdrücken“ auf dem Display hat sich gerade herausgestellt das wohl das Display nicht richtig auf der Platine sitzt…. 🙂

    Antworten
  22. Pierino am 23. November 2016 23:29

    Hallo Felix,
    tolles Tutorial.
    Ich baue mir gerade ein Wlan Radio und versuche schon seit mehreren Tagen die Radio angaben auf dem Display auszugeben doch ich verstehe das Skript leider nicht.
    Wie lauten die Befehle damit ich den Sender und das gerade gespielte Lied auf dem Display angezeigt bekomme. Und wie aktualisiert er sich automatisch, wenn ein neues Lied gespielt wird?
    Ich habe ein sainsmart lcd2004.

    Danke schon mal im voraus.
    Gruß Pierino

    Antworten
    • Felix am 23. November 2016 23:34
      lcd.lcd_display_string("Text", Zeile)

      Einfach bei jeder Aktualisierung den Befehl wieder aufrufen.

      Antworten
  23. Pierino am 23. November 2016 23:48

    Ich dachte das läuft über den „mpd current“ Befehl?!
    Doch lcd.lcd_display_string(mpd current, 1) funktioniert nicht und lcd.lcd_display_string(os.system(„mpd current“), 1) auch nicht 🙁

    Antworten
    • Felix am 24. November 2016 0:24

      Was soll der Befehl machen? Wenn du damit einen String zurück bekommst, kannst du es natürlich damit auch anzeigen lassen.

      Antworten
  24. Pierino am 23. November 2016 23:56

    Der Befehl heißt natürlich mpc current und nicht mpd…

    Antworten
  25. Pierino am 24. November 2016 0:35

    Der Befehl gibt den aktuellen Sender und das gespielte Lied aus, z.B.:
    SAW – 70er: ELECTRIC LIGHT ORCHESTRA – LIVIN THING

    Ich habe auch so probiert…
    lcd.lcd_display_string(„%s“ %os.system(„mpc current“), 1)
    jedoch bekomme ich nur eine null auf dem Display angezeigt wäred er auf Putty mir die Radiosender-Daten ausgibt.

    Antworten
    • Felix am 24. November 2016 0:39

      Achso, ja das wird nicht funktionieren. Du musst einen eindeutigen String haben. Wenn ich dich richtig verstehe, ist das eine Art Stream. Du müsstest z.B. jede halbe Sekunde den eindeutigen String abfragen und diesen anzeigen lassen.

      Antworten
  26. Pierino am 24. November 2016 0:48

    …und wie mache ich das? Kannst du mir ein Beispiel Code geben?
    Habe leider keine Ahnung vom Programmieren, habe versucht die Scripts zu verstehen, doch bis auf die einfache Textausgabe habe ich weiter nichts verstanden.

    Antworten
    • Felix am 24. November 2016 1:05

      Müsste mir dazu dein Programm näher anschauen, aber gehe nun ins Bett (muss morgen früh raus).
      Als Tipp: Google doch mal sowas wie „python os.system static outut string“, das sollte nicht all zu schwer sein 🙂
      Gute Nacht

      Antworten
  27. Pierino am 24. November 2016 22:50

    Habe das Problem lösen können. Es ist wie du sagtest man muss einer Variabel einen eindeutigen String zuteilen und diesen dann auslesen. Bei mir sieht es jetzt so aus:
    var = os.popen(‚mpc current‘).read()
    lcd.lcd_display_string(var, 1)

    Doch nun hab ich ein neues Problem. Kann ich den Text auch formatieren also den Sender in Zeile 1, Den Interpret in Zeile 2 und das Lied in Zeile 3? Jetzt ist es so, dass er den Text in Zeile 1 anfängt, in Zeile 3 fortsetzt und dann in Zeile 2 weiter schreibt.

    Antworten
    • Felix am 25. November 2016 13:39

      Du kannst einen String z.B. in ein Array per split aufteilen. Wenn du bspw. den String „Komponent X – Titelname Y“ hast, dann könntest du den Bindestrich als Trennzeichen nehmen und würdest ein Array mit zwei Einträgen bekommen. Danach einfach per arrayname[indexNr] (indexNr=0,1) aufrufen und den Zeilen zuweisen.

      Antworten
  28. Pierino am 26. November 2016 0:19

    Super, vielen Dank!
    Das waren genau die richtigen Stichworte. Was nutzt ein Google, wenn man nicht die richtigen Fragen stellt. Ich bin meinem Ziel ein großes Stück näher gekommen.
    Danke für die Hilfe.

    Antworten
  29. skotti am 6. Dezember 2016 21:05

    Vielen Dank für die Anleitung,
    habe mir diese einmal durchgelesen und schon dabei war mir aufgefallen, dass du in der Tabelle Schreibst, dass SDL (Pin 3) unten an TX1 angeschlossen wird (also Chan 2 des Wandlers), die Fritzing Grafik zeigt dann aber SCL an TX0 von Chan2.

    Als ich die Schaltung dann nachgebaut habe wurde dies auch noch einmal bestätigt.
    Ich schließe mich also meinen Vorrednern an und weise darauf hin, dass SDL und SCL zu tauschen sind, dann taucht auch 0x27 im i2cdetect auf 🙂

    Antworten
    • Felix am 6. Dezember 2016 23:09

      Danke für den Hinweis, ich habe nun in der Grafik SDA und SCL geatuscht 🙂

      Antworten
  30. Ralf am 6. Januar 2017 17:29

    Hallo Felix,
    danke für das Tutorial, ich habe mein Display am laufen und kann über ein kleines Python-Script Text ausgeben und die Hintergrundbeleuchtung steuern.
    Nun möchte ich das Display über ein Python3 Script einbinden. Leider kommt mein Python3 Script nicht mit dem import aus den python2.. zurecht. Was kann ich ändern?
    Möchte mit 3.. arbeiten!
    Gruß Ralf

    Antworten
    • Reinhard am 1. Mai 2017 11:52

      Hallo Ralf,
      Bin heute erst auf diese gute Anleitung für Python 2 gestoßen. Da ich mit Python 3.4.2 arbeite verursachte das Beispiel-Script auch bei mir einen Fehler.

      Ich nutze übrigens Raspbian Jessie Pixel in der aktuellen Version.
      python3-smbus
      python3-dev
      usw.
      waren schon vorinstalliert.
      Die benötigten Schnittstellen (SPI, I2C) lassen sich inzwischen komfortabel über:

      Start > Einstellungen > Raspberry -Pi-Konfiguration >
      Reiter: „Schnittstellen“ aktivieren.
      Danach den Raspi neu starten.
      Nun muss man nur noch eine kleine Änderung in lcddriver.py vornehmen.
      Die Print-Anweisung in Zeile 95 verursacht die Fehlermeldung!
      Lösung:
      print „Unknow State!“
      durch
      print(„Unknow State!“)
      ersetzen.
      Nach dieser kleinen Änderung läuft es auch unter Python 3.

      Falls du zwischenzeitlich schon eine Lösung gefunden hast, erspart die kleine Info vielleicht anderen
      Usern das weitere Googeln

      Gruß
      Reinhard

      Antworten
      • Felix am 1. Mai 2017 11:59

        Hallo Rheinhard,
        ich habe die Änderung ins Archiv aufgenommen, sodass nun kein Anpassen mehr nötig sein sollte.

  31. Patrick am 13. Januar 2017 0:56

    Hallo,

    ich hätte da mal ein Anliegen weil die Programmierkenntnisse meinen Horizont (noch) übersteigen:

    Ich benutze das Beispielskript aus dem Beitrag. Nun möchte ich dass danach 5 Sekunden gewartet wird und dann in der ersten Zeile das Datum, in der zweiten die Uhrzeit, in der dritten die IP-Adresse (eth0) und in der vierten die CPU-Temperatur ausgegeben wird. Habe mich schon Stunden dran versucht aber werde noch nicht schlau aus dieser Programmiersprache.Wäre da jemand so nett und könnte helfen?

    Danke!

    Antworten
    • Tom am 17. Januar 2017 21:48

      Ich bin auch auf der Suche nach einer solchen Lösung 🙂

      Antworten
    • Felix am 17. Januar 2017 22:14

      Hi Patrick,
      sorry für die verspätete Antwort, hier ein Beispiel:

      # -*- coding: utf-8 -*-
      import lcddriver
      import os, datetime
      
      lcd = lcddriver.lcd()
      lcd.lcd_clear()
      
      sleep(5)
      datum = datetime.datetime.now().strftime("%d.%m.%Y")
      uhrzeit = datetime.datetime.now().strftime("%H:%M:%S")
      ip = os.system("/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'")
      cpu = str( float(os.popen('cat /sys/class/thermal/thermal_zone0/temp').read()) / 1000.0 ) + "°"
      
      lcd.lcd_display_string(datum, 1)
      lcd.lcd_display_string(uhrzeit, 2)
      lcd.lcd_display_string(ip, 3)
      lcd.lcd_display_string(cpu, 4)
      Antworten
      • Stoffl am 26. Dezember 2017 10:17

        Hallo, wie bewege ich den script dazu, dass dieser in einer schleife läuft? – Cronjob ?

        danke über ein Hilfanstoß

        Stoffl

      • Stoffl am 26. Dezember 2017 10:52

        habe was gefunden. Warum wird mir
        while 1:
        ^
        IndentationError: expected an indented block
        zurückgewiesen?

        #!/usr/bin/python
        # -*- coding: utf-8 -*-
        import I2C_LCD_driver
        import os, datetime
        from time import sleep, time
        
        if __name__ == '__main__':
        
        while 1:
        
        name = "Wetterstation"
        version = "V1.1       Ready"
        lcd = I2C_LCD_driver.lcd()
        datum = datetime.datetime.now().strftime("%d.%m.%Y")
        uhrzeit = datetime.datetime.now().strftime("%H:%M:%S")
        lcd.lcd_clear()
        lcd.lcd_display_string(uhrzeit, 1)
        lcd.lcd_display_string(datum, 2)
        
        sleep(5)
        lcd.lcd_clear()
        lcd.lcd_display_string(name, 1)
        lcd.lcd_display_string(version, 2)
        sleep(2)
        lcd.lcd_clear()
        
      • Felix am 26. Dezember 2017 11:34

        Dir fehlen Einrückungen nach der While Schleife, da es bei Python keine Klammern gibt. Schaue dir am besten dieses Tutorial dazu an: Programmieren lernen am Raspberry Pi – Teil 1: Einführung

  32. Lucian am 26. Januar 2017 17:38

    Hallo Felix ich habe leider das Problem das ich keine Adresse per „sudo i2cdetect -y 1“ bekomme ich habe bereits die SDA und SCL Pins getauscht funktionier aber leider gar nix ….. habe dein Tutorial mit dem 16×2 ohne I2C gemacht und das hat Wunderbar funktioniert.

    Hast du ne idee woran es liegen kann? bin Rat los.

    Antworten
    • Felix am 26. Januar 2017 17:39

      Könnte es sein, dass du dich „verlötet“ hast? Eventuell sind die Pins nicht richtig miteinander verbunden.
      LG, Felix

      Antworten
    • Lucian am 26. Januar 2017 17:43

      Nein es ist ein vorgelötetes Display in den Maßen 20×4 wie oben beschrieben und I2C Konverter hinten dran. Leuchten tut es schon mal 😀 was mir schonmal zeigt das es stom bekommt aber die Verbindung mit SDA und SCL klappt leider nicht 🙁 zummindest bekomme ich keine Adresse….

      Antworten
  33. Jürgen am 30. Januar 2017 22:58

    Hallo Leute
    wenn nix angezeigt wird, liegt es normal daran,
    dass auf dem ersten Bild „SCL = gelber Draht“
    und auf dem dritten Bild „SCL = brauner Draht“
    also vorsicht.

    Antworten
  34. Christian am 4. Februar 2017 15:36

    sudo i2cdetect -y 1
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
    10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
    20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
    30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
    40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
    50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
    60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
    70: 70 71 72 73 74 75 76 77

    Das kommt bei mir wenn ich das Teil richtig anschließe. Woran kann das liegen?
    Achja wenn ich SDA SCL vertausche kommen nur die oben bereits angesprochenen Striche.
    Ich bin Rat los?

    Antworten
    • Fabi2332 am 25. Januar 2018 18:23

      Hab das gleiche Problem. Was hat geholfen? Oder hat jemand eine Idee?

      Antworten
    • Christian am 18. Februar 2018 9:08

      Hi bei mir kommt manchmal das gleiche und manchmal nur 3f aber Display zeigt nichts an hat einer eine Idee woran das liegen kann?

      Antworten
    • snoopyrw am 17. September 2018 23:18

      den Effekt habe ich auch, dagegen hilft „gpio -g mode 2 alt0“

      Antworten
  35. DiverHans am 28. Februar 2017 21:58

    Hi,

    Danke, prima Anleitung und tolle Python Lib!! Das Display kann man auch ohne Pegelwandler an den Raspi anschliessen. Läuft bei mir problemlos. Der Master bestimmt auf dem I2C Bus den Spannungspegel, und das ist der Raspi. Die I2C Clients sind in der OpenCollector Devices. Die logische 1 vom Raspi mit 3.3V Bus wird vom Display zuverlässig als 1 erkannt (obwohl die Spec 3.5 fordert). Ich sage trotzdem mal: auf eigene Gefahr.

    Diver

    Antworten
    • Felix am 28. Februar 2017 22:01

      Es gibt die Displays (und andere Module) anscheinend in verschiedenen Ausführungen. Habe das schon bei Relais gesehen, da liesen sich auch manche mit 3.3V ansteuern und manche wiederum nicht.

      Antworten
    • Frank am 27. April 2017 9:11

      Ich habe ebenfalls ein solches Display, definitiv in 5 Volt Ausführung, denn mit 3,3 Volt ist der Kontrast nahe null. Da ich was erkennen können möchte, habe ich das Display an einen 5 Volt Pin vom Pi angeschlossen und – da ich mir selber nicht sicher war, ob ich gerade meinen Pi grille – gemessen, welche Stromstärke auf den I²C Leitungen anliegt. Es sind 3,3 Volt und dank @DiverHans habe ich nun auch die Erklärung, warum das so ist. 🙂

      Antworten
  36. Andreas am 11. März 2017 13:20

    Vielen Dank für die tolle Anleitung.

    Bevor mich ein Kumpel gebeten hat sein Display lauffähig zu machen, habe ich mich noch nie mit Python beschäftigt. Ich bin somit totaler Neuling.

    Das Display ist angeschlossen und funktioniert.

    Ich habe mir nun ein Script zusammengestückelt. Welches auch teils funktioniert. Um es perfekt zu haben, müssten aber noch Anpassungen gemacht werden. Eventuell kann mir hier jemand helfen.

    Hier erst mal das Script:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import lcddriver
    import os
    
    from time import time
    from time import sleep
    from datetime import datetime
    
     
    lcd = lcddriver.lcd()
    
    var = os.popen('mpc current').read()
    dateString = datetime.now().strftime('%b %d %y')
    timeString = datetime.now().strftime('%H:%M')
    
    while True:
        longtext = ' ' * 16 + var
        for i in range(0,len(longtext)): 
            lcd.lcd_display_string(longtext[i:(i+16)],1) 
            lcd.lcd_display_string("%s %s" % (dateString, timeString), 2)
    sleep(1)

    Derzeit rast die Info zum Sender in der ersten Zeile ohne das man es wirklich lesen kann.
    In der zweiten Zeile wird das Datum und die Uhrzeit angezeigt so wie es sein soll.

    Mein Ziel ist, dass die Programminfo zum Sender gut lesbar in der ersten Zeile immer wieder durchläuft und bei einem Senderwechsel, aktualisiert wird.

    Eventuell hat jemand so etwas bereits realisiert. Ich habe immer wieder Probleme mit den Absätzen, dass der Python weiß was im Code zusammen gehört. Das habe ich irgendwie noch nicht verstanden.

    Zu dem habe ich in der Variable vom Sender teils komische Zeichen, obwohl bei der Ausgabe im Terminal bei „mpc current“ alles korrekt dargestellt wird. Auf dem Display kommt z.B. der Name des Senders und direkt danach irgend ein Zeichen das ich nicht beschreiben kann (ohne Zusammenhang).

    Vielen Dank für eure Hilfe

    Antworten
    • Felix am 11. März 2017 14:08

      Ich glaube, du solltest das sleep(1) auf die selbe Ebene stellen, dann wird nach dem Beschreiben eine Sekunde gewartet. So wird sofort nach dem Beschreiben wieder beschrieben.

      Antworten
      • Steffen am 1. Juli 2017 21:15

        Moin Moin aus dem Norden.
        Habt ihr das mit dem langsameren Lauftext hin bekommen?

        MFG Steffen

    • Andreas am 11. März 2017 19:52

      Oh vielen Dank schon mal für deine schnelle Antwort.

      Damit sieht es schon mal besser aus und die Sender lassen sich umschalten. Gibt es noch eine Möglichkeit die Laufschrift langsamer laufen zu lassen?

      Dann habe ich noch keine Idee mit was für komischen Zeichen die Zeile mit der Senderinfo aufgefüllt werden.

      Wenn du da noch eine Idee hast?

      Vielen vielen Dank

      Antworten
      • Felix am 11. März 2017 20:27

        Was meinst du mit Senderinfo? Umso größer die Wartezeit ist, umso langsamer ist das Scrollen.

  37. Francesco Schmitt am 11. März 2017 19:33

    Hallo, ich habe diese Schaltung jetzt aufgebaut, ich habe einen anderen Logic Level Converter benutzt (SparkFun 120009). Ich habe ihn folgendermaßen angeschlossen:
    HV1 – SCL Display
    HV2 – SDA Display
    LV1 – SCL Raspberry Pi
    LV2 – SDA Raspeberry Pi
    HV – 5V Raspberry Pi – VCC Display
    LV – 3V3 Raspberry Pi
    Die beiden GND-Pins des Converters habe ich verbunden und sowohl GND des Displays als auch GND des Raspberry Pi’s daran angeschlossen.
    Jetzt passiert folgendes: wenn ich das gesamte Gerät anschließe, sieht es so aus, als ob der Raspberry Schwierigkeiten mit der Stromversorgung hätte: die Status-LEDs flackern, und der Pi schaltet sich aus (wenn ich es an den ausgeschalteten Pi anschließe, fährt er gar nicht erst hoch). Zusätzliche Info: Ich benutze einen Raspberry Pi 1. Generation Model B (Rev 2) mit aktuellem Raspbian Jessie).
    Meine Frage: habe ich mir die Beschaltung des Converters richti zusammengewürfelt? Wenn
    ja, muss ich dem Display vielleicht irgendwie eine externe Stromversorgung besorgen? Wenn ja, wie? Wenn nicht, gibt es in meiner Schaltung noch irgendeinen Fehler? Ich habe schon versucht, das Verbindungskabel zwischen den beiden GND und das Kabel RPi 5V – VCC Display – HV Converter zu entfernen, es hat nichts geholfen (ich hattte gedacht, dass diese Probleme vielleicht daran liegen könnten).
    Ich werde vorerst das Projekt auf sich beruhen lasse, bis ich genaueres weiß, da ich meinen Raspberry Pi nur ungern grillen würde. 🙂
    Vielen Dank schonmal im Voraus

    Antworten
    • Felix am 11. März 2017 20:26

      Hallo Francesco,
      hast du mal mit einem Multimeter die ausgehende Spannung des Logic Level Converter gemessen? Ich habe kein Sparkfun Modul da, aber die üblichen TTL’s kosten ja sehr wenig, weshalb du es ggf. noch einmal damit probieren könntest?
      LG, Felix

      Antworten
    • Francesco Schmitt am 12. März 2017 0:22

      Also, erstmal vielen Dank für die schnelle Antwort. Ich habe die Spannung noch nicht nachgemessen, bei mir wird das aber schwierig, weil ich wie gesagt das Display nicht wirklich anschließen kann, da mir ja dann sofort der Pi abschmiert… Außerdem, was meinst du mit TTL’s? Und hast du evtl Vorschläge zu „den üblichen“? LG, Francesco

      Antworten
      • Felix am 12. März 2017 0:24

        Miss die Spannung am Konverter, solange das Display nicht angeschlossen ist. Den Link zu „den üblichen“ findest du oben im Artikel unter Zubehör -> I2C Logik Level Konverter.

    • Francesco Schmitt am 12. März 2017 9:59

      Also, ich weiß nicht genau was passiert ist, allerdings bin ich zuerst auf sehr seltsame Werte gekommen (die Spannung hat irgendwie bei 15-20V geschwankt). Als ich dann aber nochmal nachgemessen habe, bin ich zu meiner Verwunderung auf 5V gekommen. Ich habe deshalb einfach mal ausprobiert, das Display wieder anzuschließen, und siehe da, es funktioniert einwandfrei. Danke trotzdem für deine Hilfe. LG, Francesco

      Antworten
  38. Daniel Merkli am 13. März 2017 16:24

    Hallo zusammen,
    Auch wenn ich jetzt allenfalls ausgelacht werde trotzdem noch einmal die Frage : Brauche ich den Wandler 3.3V zu 5V wirklich ? Habe lange gegoogelt und viele Projekte angeschaut, die Hälfte baut einen ein, die andere nicht. Selbst Sunfounder nimmt keinen für ihre Beispielprojekte für RPi Einsteiger…..
    Wäre dankbar wenn jemand eine schlüssige „elektronische“ Erklärung geben könnte.
    Vielen Dank im voraus.
    Gruss Daniel

    Antworten
    • Felix am 13. März 2017 16:31

      Hallo Daniel,
      ausgelacht wird hier keiner 🙂
      Das Problem, was bei vielen elektronischen Bauteilen besteht, ist, dass diese nicht immer absolut baugleich sind (ähnliches ist bei Relais und Ultraschallsensoren der Fall).
      Wenn sich das Display auch mit 3.3V Signalen steuern lässt, ist alles in Ordnung und der Wandler ist nicht benötigt. Da aber 5V Signale in jedem Fall funktionieren, machst du nichts falsch, wenn du einen solchen verwendest.
      LG, Felix

      Antworten
  39. Alex am 4. Juni 2017 21:55

    Hallo, eine Frage…ich habe ein Display angeschlossen, doch finde ich es NICHT unter i2cdetect -y 1 sondern i2cdetect -y 2:
    root@bananapi ~/hd44780 # i2cdetect -y 2
    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: — — — — — — — —
    root@bananapi ~/hd44780 #

    Wie kann ich das nun schreiben, dass er mir das Display da anspricht?
    Ist ein vorgelöteter Baustein, und es sind keine Jumper vorhanden, um Adresse zu ändern.

    Antworten
    • Felix am 4. Juni 2017 22:18

      Was für ein Pi Model hast du denn?

      Antworten
      • Alex am 6. Juni 2017 22:25

        „Leider“ immernoch einen Bananapi, sowie einen Bananapi M2+, bei beiden das gleiche Spiel. Ich blicke leider bei Programmierung gar nicht wirklich durch^^

  40. Valentin am 4. Juli 2017 18:25

    Hallo zusammen,
    ist es möglich, sich den Status von bestimmten gpio pins anzeigen zu lassen?
    ich habe vor mit dem raspberry pi ein relais anzusteuern und möchte mir deshalb den Status der gpios in eine Zeile anzeigen lassen.
    Leider verstehe ich so ziemlich gar nichts von python.
    Ich hoffe ihr könnt mir helfen.

    Antworten
    • Valentin am 6. Juli 2017 14:30

      gibt es dafür nicht irgendwie eine Möglichkeit, ich habe auch im Internet nichts gefunden, allerdings weiß ich auch nicht so wirklich wonach ich da googlen muss :C

      Antworten
      • Felix am 7. Juli 2017 0:23

        Willst du den Input Status auslesen oder ob der Pin aus Input/Output deklariert wurde?
        Raspberry Pi GPIO Erklärung für Beginner + Programmierung (Teil 2)

      • Valentin am 10. Juli 2017 14:36

        Nein, ich möchte wissen ob der output low oder high ist.

  41. ronstar am 10. Juli 2017 18:34

    Hallo zusammen,
    erstmal großes Lob für diese Seite!
    Ich bekomme einfach das Display nicht richtig zum laufen.
    i2cdetect -y 1 liefert mir eine Adresse von 3F diese habe ich auch in lcddriver.py angepasst. Die Hintergrundbeleuchtung lässt sich danach auch mittels backlight (on, off) schalten. 5V mit Konverter und 3,3V habe ich auch getestet. Es ergibt immer das gleiche Ergebnis.
    Es scheint als ob die Adressen für die Zeichenausgabe sich irgendwie unterscheiden.
    Das Display (ohne i2c) funktioniert, ich habe das Tutorial mit der direkten GPIO Anbindung erfolgreich durchgeführt.
    Habt ihr noch eine Idee?

    Antworten
    • Felix am 10. Juli 2017 20:04

      Sind alle Pins richtig verlötet und an den richtigen Stellen? Normalerweise haben die Module immer die gleichen Adressen, wie im Tutorial. Ggf. kannst du einen anderen Controller verwenden.

      Antworten
  42. Steffen am 15. Juli 2017 18:52

    Hi Felix,
    Könntest du mal hier drüber schauen ob das so IO ist oder ob man was besser machen kann.

    # -*- coding: utf-8 -*-
    
    import lcddriver
    import os
    from time import *
    import subprocess
    
    lcd = lcddriver.lcd()
    lcd.lcd_clear()
    lcd.lcd_backlight('ON')
    
    laut = os.popen("sudo mpc volume").read()
    
    def scroll_up():
          f=os.popen("sudo mpc current")
          station = ""
          for i in f.readlines():
           station += i
           str_pad = " " * 20
           station = str_pad + station
           for i in range (0, len(station)):
            lcd_text = station[i:(i+20)]
            lcd.lcd_display_string(lcd_text,2) #Siehe hier und unten.
            sleep(0.3) #Geschwindigkeit des Textes 
            lcd.lcd_display_string(str_pad,3)
    
    lcd.lcd_display_string("Lautst"+chr(225)+"rke @", 1)
    lcd.lcd_display_string("%s" % (laut), 2)
    
    sleep(2.5)
    lcd.lcd_clear()
    
    lcd.lcd_display_string(''+str(scroll_up()), 4) # Zeilenangabe egal. Siehe oben.
    
    lcd.lcd_clear()
    lcd.lcd_backlight('OFF')
    Antworten
  43. Kai am 25. Juli 2017 15:27

    Hallo,

    ich möchte dieses LCD-Modul mit Scratch benutzen. Leider ist das nicht ganz einfach.
    In Scratch 1 muss man Mesh aktivieren (https://wiki.scratch.mit.edu/wiki/Mesh), was aber nur in der 1.4 beta funktioniert, die nicht mehr verteilt wird. In Scratch 2 über Flash geht das vermutlich gar nicht mehr.
    Hast Du eine Idee?

    Viele Grüße

    Kai

    Antworten
  44. Valentin am 9. August 2017 18:03

    Guten Tag,
    kannst du mir erklären warum mein Skript nicht läuft?
    Ich verstehe es nicht.

    import lcddriver
    import wiringpi

    lcd = lcddriver.lcd()
    lcd.lcd_clear()

    var1 = gpio -g read 4

    lcd.lcd_display_string(var1, 1)

    Nach der Zeile: var1 = gpio -g read 4

    kommt bei mir immer SyntaxError: invalid syntax

    aber wenn ich den Command normal in die Konsole eingebe (also gpio -g read 4)
    gibt er mir immer 0 oder 1 aus, je nachdem auf was der gpio halt grad steht.

    Antworten
    • Felix am 9. August 2017 20:29

      Was soll denn die Zeile var1 = gpio -g read 4 tun? Python Syntax ist das jedenfalls nicht…

      Antworten
      • Valentin am 9. August 2017 21:07

        gpio -g read 4
        ist ein wiring pi command, und der gibt halt aus ob der Zustand des gpios null (also low) oder 1 (also high) ist.
        ich hab mir das halt so vorgestellt, das dann die variable den wert 0 oder 1, je nach Zustand des gpios annimt

      • Felix am 9. August 2017 23:08

        Ja gut, aber es ist ein Shell Befehl. Dann musst du ihn auch entsprechend (mit os.system bspw.) ausführen. Wieso nutzt du nicht einfach die Python GPIO Bibliothek?
        Raspberry Pi GPIO Erklärung für Beginner + Programmierung (Teil 2)

      • Valentin am 10. August 2017 17:39

        Würde ich ja sehr gerne machen, aber ich weiß nicht wie dort der Command dafür heißt, bzw wie das funktioniert

      • Felix am 10. August 2017 17:47

        Deshalb habe ich dir das Tutorial verlinkt 😉

  45. Thorsten am 10. August 2017 23:00

    Hi!

    Was muss ich am Treiber ändern, damit dieser auch mit einem 16×4 Display läuft.
    Ich habe nämlich das Problem, dass die Zeilen 3 und 4 links immer 4 Zeichen eingerückt werden.

    Antworten
    • Felix am 11. August 2017 0:01

      Vergleich mal die Adressen aus dem Datenblatt mit denen der Bibliothek.

      Antworten
      • Thorsten am 11. August 2017 23:39

        Ah, okay… meine Lösung ist die folgende Änderung am Code.

        An den Anfang:

        # Define the columns (16 or 20)
        LCD_COLUMNS = 16
        
        # This is the address of the first line
        FIRST_LINE_MEM_ADDR = 0x8
        
        [...]
        
        # put string function
           def lcd_display_string(self, string, line):
              if line == 1:
                 self.lcd_write(FIRST_LINE_MEM_ADDR )
              if line == 2:
                 self.lcd_write(FIRST_LINE_MEM_ADDR + 64)
              if line == 3:
                 self.lcd_write(FIRST_LINE_MEM_ADDR + LCD_COLUMNS)
              if line == 4:
                 self.lcd_write(FIRST_LINE_MEM_ADDR + 64 + LCD_COLUMNS)
  46. Alex am 31. Oktober 2017 2:39

    Hallöle, bei mir wird (egal wie ich die Jumper setze) das I2C Modul nicht under detect -Y 1 sondern unter -Y 2 erkannt. Was kann ich da machen? PS. SDA/SDL hab ich jeweils schon umgekehrt getestet

    Antworten
    • Alex am 31. Oktober 2017 2:43

      PS. anbei der Screenshot, damit man weiss, was ich meine
      http://www.bilder-upload.eu/show.php?file=62a729-1509414208.png

      Bzw. falls die Seite mir das Bild mal wieder löscht:

      http://fs5.directupload.net/images/171031/4dc9xl4m.png

      Antworten
  47. Jannes am 9. Dezember 2017 12:53

    Ist es möglich nur eine Zeile zu löschen oder muss ich immer das komplette Display leeren ?

    Antworten
    • Felix am 9. Dezember 2017 14:55

      Du kannst eine Zeile des Displays mit „Leerzeichen“ überschreiben.

      Antworten
  48. Jürgen am 12. Dezember 2017 0:17

    Moin Felix,
    vielen Dank für die gelungene Beschreibung.

    Ich habe das Display 16×2 bereits mit dem Arduino unter c++ benutzt und dort gibt es die setCursor-Methode (siehe Code-Auszug). Man kann damit unter Angabe von Spalte und Zeile den Cursor setzen und ab dort Zeichen oder Texte schreiben.

    Hast Du auch schon einmal versucht das in Python zu realisieren?

    c++:————->

    void LiquidCrystal_I2C::setCursor(uint8_t col, uint8_t row){
    	int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };
    	if ( row > _numlines ) {
    		row = _numlines-1;    // we count rows starting w/0
    	}
    	command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
    }

    <————–

    Antworten
  49. Wiemeyer,heinz am 14. Dezember 2017 15:05

    Hallo Rasp-Fans, möchte mein 2 zeiliges Display über I2C ansteuern, es wird auch erkannt, es wird die Zahl 27 angezeigt, aber beim Laden des Codes über wget…erhalte ich folgende Fehlermeldung:
    Fehlermeldung
    Verbindungsaufbau zu tutorials-raspberrypi.de (zu tutorials-raspberrypi.de) I89.163.139.94I:443…verbunden.
    http-Anforderung gesendet, warte auf Antwort…404 Not Found.
    Auflösen des Hostnamen >>hd44780_i2c.zip<>hd44780_i2c.zip<< nicht auflösen

    Wo liegt der Fehler, bin Anfänger. Wer kann mir einen Tip geben.
    Heinz

    Antworten
  50. Wiemeyer,heinz am 14. Dezember 2017 16:20

    Habe den Fehler gefunden!

    Antworten
  51. Wiemeyer,heinz am 16. Dezember 2017 14:23

    Hallo Felix,
    dein script läuft super. Bin leider Python-Anfänger und möchte eine Zeile mit 2 Textsegmenten und 2 Variablen anzeigen:
    text1=“u1=“
    text2=“u2=“
    var1 z.B. 4.78
    var2 z.B. 7.81
    zeile=1
    lcd.lcd_display_string(„text1″,var1,“text2“,var2, zeile)
    Wie sieht die programmzeile aus?
    Danke!

    Antworten
    • Felix am 16. Dezember 2017 16:25
      lcd.lcd_display_string("text1" + str(var1) + "text2" + str(var2), zeile)
      Antworten
  52. Wiemeyer,heinz am 19. Dezember 2017 10:29

    Danke Felix, super!

    Antworten
  53. Wiemeyer,heinz am 13. Februar 2018 11:37

    Hallo Felix, meine Temperaturmessung läuft, nun möchte ich den Messwert auf mein Display anzeigen. Die Anzeige läuft, aber ich mache wohl einen Umwandlungsfehler.

    def aktuelleTemperatur1():   
        # 1-wire Slave Datei lesen
        file = open('/sys/bus/w1/devices/10-0008032e37f1/w1_slave')
        fileinhalt = file.read()
        file.close() 
        # Temperaturwerte auslesen und konvertieren
        stringvalue = fileinhalt.split("n")[1].split(" ")[9]
        temperature = float(stringvalue[2:]) / 1000 
        # Temperatur ausgeben
        Rueckgabewert1 = '%6.2f' % temperature  
        return(rueckgabewert1)
    
    messdaten1 = aktuelleTemperatur1()
    
    lcd.lcd_display_string("T1 " + str(messdaten1), 2)

    Wo liegt der Fehler? Für Deine Hilfe schon mal ein Dankeschön vorab.

    Antworten
    • Felix am 15. Februar 2018 0:51

      Was gibt es denn zurück?

      Antworten
      • Wiemeyer,heinz am 15. Februar 2018 11:49

        Danke Felix! Der print-Befehl zeigt an: 22.81
        Die Fehlermeldung lautet: UnboundLocalError:Local variable „messdaten1“ referenced before assigment.

      • Felix am 15. Februar 2018 12:38

        Du greifst auf eine Variable (messdaten1) zu, die noch nicht definiert wurde.

  54. Christian am 22. Februar 2018 19:53

    Hallo,
    ich habe folgendes Display 20×4
    http://www.farnell.com/datasheets/2566411.pdf?_ga=2.186788456.1129287909.1519284546-1756637393.1518878926
    Anfangs wollte es nicht laufen was es jetzt aber tut, leider wird alles durcheinander angezeigt.

    Lines = getGas()
    print(Lines[0] +’n’+ Lines[1]+ ’n’+ Lines[2]+ ’n’+ Lines[3])
    lcd = lcddriver.lcd()
    lcd.lcd_clear()

    lcd.lcd_display_string(Lines[0],1)
    lcd.lcd_display_string(Lines[1],2)
    lcd.lcd_display_string(Lines[2],3)
    lcd.lcd_display_string(Lines[3],4)
    time.sleep(5)

    Die Daten die ich Anzeigen möchte sind schon auf 19 Zeichen begrenzt. Daran kann es wohl nicht liegen, lcd.clear() hat scheinbar keine funktion das Display bleibt unverändert.

    Hat einer eine Idee woran das liegen kann?
    Vielen Dank vorab
    gruss

    Antworten
    • Felix am 22. Februar 2018 20:18

      Hast du evtl. die Pins vertauscht?

      Antworten
  55. Michi am 30. März 2018 23:17

    Bei meinem Display funktioniert alles einwandfrei, bis auf das, dass manche Zeichenfehler auftreten, so steht im Display „ese“, wenn ich „es“ schreiben will.

    Bitte um Hilfe

    Antworten
    • Felix am 1. April 2018 12:36

      Hast du das Display vorher „geleert“ (alte Zeichen werden nicht gelöscht)?

      Antworten
  56. Janusc am 8. Mai 2018 16:56

    Ich habe auf meinem 20×4 Display nur 2 weiße Balken drauf. Die Schrift, wie sie vorgegeben ist, erscheint nicht. Eine Fehlermeldung bekomme ich aber auch nicht. Display wird ebenfalls an der 27 angezeigt.

    Antworten
    • Janusch am 24. Mai 2018 14:43

      Keiner eine Antwort drauf? *verweifel*

      Antworten
      • Janusch am 25. Mai 2018 11:08

        Hat sich erledigt. Ein neues Display hats getan. Scheinbar war das erste defekt

  57. Uli am 15. Mai 2018 22:23

    Funktioniert auf Anhieb – danke 🙂
    Welche Anpassungen müsste man vornehmen um mehrere Displays zu betreiben, entweder gespiegelt (gleiche Inhalte) oder völlig unabhängig?

    Antworten
  58. Uwe Jöst am 28. Mai 2018 13:11

    Was ist zu tun, wenn auf dem Raspberry PI 3 eine Hifiberry Amp 2 draufsteckt und die beiden Pins
    GPIO 2 bzw GPIO 3 nicht benutzt werden können. Wie kann ich dann den lcddriver anpassen, wenn andere Pins benutzt werden ?

    Antworten
    • svenomatt am 14. September 2018 11:14

      Hallo hab einähnliches Problem, sodas beim mir die GPIO 2 und 3 belegt sind. hast du diesbezüglich schon eine Antwort bzw. Lösung.

      Gruss Svenomatt

      Antworten
  59. Thomas Häußler am 30. Juli 2018 21:20

    Hallo, super Tutorial hat mir geholfen das Display in Betrieb zu bekommen. Nur den Pegelwandler kann oder sollte man sich sogar sparen. Warum, die I2C Schnittstelle läuft mit eine Pulluphardware.
    Das bedeutet wenn ein Teilnehmer aktiv (Lowpegel) wird, dann zieht er die Spannung gegen 0V. Pullupwiederstände sorgen für den Highpegel. Beim Raspberry haben diese Wiederstände 50kOhm. Das Display (zumindest meins) hat keine (komischerweise). Die Pegel für High und Low sind bei beiden Bauteilen (Raspi und Display) fast gleich (Raspi Low1,8V ; Display Low2V) und verstehen sich deshalb sehr gut auch ohne Pegelwandler. Dieser macht die immer wieder beschriebenen Probleme bei „i2Cdetect“, da er (je nach Ausführung) beim Lesen die Spannung zu weit runter holt.

    Antworten
  60. Christian Hanka am 16. August 2018 16:40

    Hallo, sobald ich sudo python eingebe und Enter drücke erscheint:
    Python 2.7.13 (default, Nov 24 2017, 17:33:09)
    [GCC 6.3.0 20170516] on linux2
    Typ „help“, „copyright“, „credits“ or „license“ for more information.

    Antworten
  61. Christian am 27. August 2018 16:45

    Hallo, ich habe diesen Skript für den HX711 und dem HD44780 im I-net gefunden und einen Test gestartet.
    https://pastebin.com/2SDHttgf

    Doch leider kommt dann dieser Fehler in Shell:

    Warning (from warnings module):
    File „/home/pi/hd44780/hx711.py“, line 11
    GPIO.setup(self.PD_SCK, GPIO.OUT)
    RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    Traceback (most recent call last):
    File „/home/pi/hd44780/WaageVolk1.py“, line 18, in
    hx = HX711 (5, 6)
    File „/home/pi/hd44780/hx711.py“, line 18, in __init__
    self.lastVal = long(0)
    NameError: name ‚long‘ is not defined

    Antworten
  62. Christian am 27. August 2018 16:51

    https://pastebin.com/RPFtFf9Y Das ist jetzt der richtige Skript, beim Post zuvor habe ich was vergessen.

    Antworten
  63. Igelmania am 14. September 2018 19:54

    Hallo,
    ich bekomme leider eine Fehlermeldung beim ausführen des Testskriptes. Verkabelung habe ich schon gecheckt. Habe es am RPI 3 B laufen. Woran kann das liegen?

    Traceback (most recent call last):
    File „/home/pi/hd44780/testlcd.py“, line 4, in
    lcd = lcddriver.lcd()
    File „/home/pi/hd44780/lcddriver.py“, line 61, in __init__
    self.lcd_write(0x03)
    File „/home/pi/hd44780/lcddriver.py“, line 85, in lcd_write
    self.lcd_write_four_bits(mode | (cmd & 0xF0))
    File „/home/pi/hd44780/lcddriver.py“, line 80, in lcd_write_four_bits
    self.lcd_device.write_cmd(data | LCD_BACKLIGHT)
    File „/home/pi/hd44780/i2c_lib.py“, line 11, in write_cmd
    self.bus.write_byte(self.addr, cmd)
    OSError: [Errno 121] Remote I/O error
    >>> %Run testlcd.py
    Traceback (most recent call last):
    File „/home/pi/hd44780/testlcd.py“, line 4, in
    lcd = lcddriver.lcd()
    File „/home/pi/hd44780/lcddriver.py“, line 61, in __init__
    self.lcd_write(0x03)
    File „/home/pi/hd44780/lcddriver.py“, line 85, in lcd_write
    self.lcd_write_four_bits(mode | (cmd & 0xF0))
    File „/home/pi/hd44780/lcddriver.py“, line 80, in lcd_write_four_bits
    self.lcd_device.write_cmd(data | LCD_BACKLIGHT)
    File „/home/pi/hd44780/i2c_lib.py“, line 11, in write_cmd
    self.bus.write_byte(self.addr, cmd)
    OSError: [Errno 121] Remote I/O error
    >>>

    Ausgabe i2cdetect:
    pi@raspberrypi:~ $ sudo i2cdetect -y 1
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: — — — — — — — — — — — — —
    10: — — — — — — — — — — — — — — — —
    20: — — — — — — — — — — — — — — — —
    30: — — — — — — — — — — — — — — — —
    40: — — — — — — — — — — — — — — — —
    50: — — — — — — — — — — — — — — — —
    60: — — — — — — — — — — — — — — — —
    70: — — — — — — — —

    Antworten
    • Stefan am 11. Dezember 2020 10:53

      Gibt es hierzu eine Lösung, ich habe selbiges Problem.

      Antworten
    • Stefanku am 11. Dezember 2020 12:31

      Gibtes hierzu eine Lösung? Ich habe das gleiche Problem

      Antworten
  64. jANTT am 4. Juli 2019 12:38

    Hi
    habe das display angeschlossen und bekomme über den Befehl:
    pi@raspberrypi:~ $ sudo i2cdetect -y 1
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
    10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
    20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
    30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
    40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
    50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
    60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
    70: 70 71 72 73 74 75 76 77

    direkt das angezeigt…. was mach ich falsch??

    Antworten
    • Andre am 19. August 2019 11:16

      Hast du es mittlerweile hinbekommen? Ich habe das gleiche Verhalten- an mein Raspberry Pi 3B angeschlossen (Direkt via 5V Pin zu VCC) und er findet keine Geräte mit „sudo i2cdetect -y 1″…Bei mir kommen aber nur Striche, nicht wie bei dir die Zahlen.

      Antworten
  65. Bernd Albrecht am 27. Oktober 2019 18:34

    Zur Diskussion aus 2016 (Stefan)
    siehe https://de.wikipedia.org/wiki/HD44780
    einschließlich der weblinks
    Man kann bis zu 8 Zeichen selbst definieren (Beispiel Batterie-Füllstand)

    Es wird gelegentlich auf das Datenblatt zum I2C-Controller hingewiesen; ich habe es bisher nicht finden können. Gibt es einen Link?

    Antworten
  66. Bernd Albrecht am 27. Oktober 2019 18:37

    Nachklapp: Meine 16×2 LCDs arbeiten wunderbar mit 3,3 Volt. Also keine Pegelwandler erforderlich.

    Antworten
  67. Robert aus Wien am 30. November 2019 13:56

    Ich hab mir über Amazon dieses LCD gekauft, ein Datenblatt dazu findet man auch hier: http://wiki.sunfounder.cc/index.php?title=I2C_LCD2004 (unten unter Resources).

    Im Datenblatt sieht man zwei Dinge:
    1. Dieser I2C-Controller arbeitet zwischen 2,5 und 7V, den Pegelwandler kann man sich daher in dem Fall wirklich schenken.
    2. Der Controller zieht über die Spannungsversorgung bis zu 400mA. Da der GPIO aber insgesamt nur mit maximal 50mA belastet werden darf, halte ich es für keine sehr gute Idee, wenn man die Spannungsversorgung direkt über den GPIO macht. Besser wäre hier wahrscheinlich eine externe Spannungsversorgung. Kann mir hierbei jemand beratend zur Seite stehen, wie man das am besten bewerkstelligt?

    Antworten
  68. Robert aus Wien am 30. November 2019 13:59

    Zusatz: Wobei ich den Strom, der in meinem Fall fließt, noch nicht gemessen habe, werde ich aber noch nachholen.

    Antworten
  69. Peter aus Wien am 17. Januar 2020 7:46

    Ich betreibe auf zwei RASPI 3B+ je ein HD44780-4×20 LCD mit I2C-Controller. Da ich den Standard-I2C-Bus (GIO-Pin 2 und 3 = Steckerleisten-PIN 3 und 5) auf beiden Systemen andersweitig verwende, habe ich den I2C-Bus Nr. 3 mit den GIO-PINs 23 und 24 (Steckerleisten-PIN 16 und 18) definiert. Zwischen dem RASPI und dem I2C-Controller des Displays ist ein 3.3/5V-Pegelwandler eingesetzt. Die Anzeige, die via CRON-Job im Minutentakt beschrieben wird, funktioniert einwandfrei. Nur kommt es in undefinierbaren Zeitabständen dazu, dass nichts angezeigt wird. Erst mit dem nächsten oder übernächsten Refresh der Anzeige werden wieder Daten angezeigt. Es treten auch keine falschen Zeichen auf.
    Anfänglich dachte ich, dass vielleicht die 1k8 Ohm Pullup-Widerstände, die standardmäßig den GPIO-PIN 2 und 3 hochziehen, fehlen. Ich habe die auf den von mir verwendeten GPIOs nachgerüstet. Eine Verbesserung des Verhaltens blieb aus.
    Hat jemand vielleicht ähnliche Erfahrungen gemacht und vielleicht sogar eine Lösung gefunden?
    Übrigens:
    beide Raspberry Pi 3 B+ mit Original RASPI-Netzteil
    ein RASPI läuft mit RASPIAN buster, der andere mit stretch
    Vielen Dank für Hilfestellungen im Voraus.
    Peter

    Antworten
    • Peter aus Wien am 22. Januar 2020 6:35

      Das Problem konnte ich bereits selbst lösen. Nachdem auf meinem Testsystem, ein RASPI B+ (kein 3B+ !) das Display mit dem gleichen Programm ohne Probleme lief, kam ich auf die Idee, dass es sich um ein Timingproblem handeln könnte. Ich änderte daher die sleep(0.0001) – Anweisung in der Library i2c_lib.py auf sleep(0.0002) und schon lief es auch auf den schnelleren RASPI 3B+.
      Liebe Grüße
      Peter

      Antworten
  70. Oli am 2. März 2020 21:35

    Hi zusammen,
    ich habe mir optisch den selben I2C Display Adapter mit LCD Display HD44780 bestellt, nun habe ich mir vorweg schon Tutorials angeschaut und bin etwas unschlüssig. Würde gerne auf den Logic Konverter aus Platzgründen verzichten. Die einen benutzen das Teil direkt an den 5V vom Raspi, die anderen Löten die Pullups von SCL u. SDA aus. Hat jemand Erfahrung mit dem auslöten der Pullups und kann das bestätigen?

    Antworten
  71. Oli am 3. März 2020 22:32

    Display erhalten! Mit den Pullups gemessen. Es liegen ca 4,6V an SDA und SCL an. Ohne Pullups keine nennenswerte Spannung. Funktioniert so einwandfrei.

    Antworten
  72. Maik am 30. Mai 2020 19:36

    Hallo,

    ich habe folgendes Problem das wo ich nicht weiter komme.
    Habe das Display so wie im Tutorial angeschlossen. Wird anscheinend auch erkannt.
    Nur ich kann nix ausgeben. Wenn ich am Regler für den Kontrast drehe erscheinen 2
    Durchgehende Balken in Reihe 1 und 3. das ist das einzige.
    Danke schon mal für die Hilfe.
    Ach ja, die Hintergrundbeleuchtung an und ausschalten funktioniert mit lcd.lcd_backlight(„on“) bzw „off“

    Antworten
    • Emanuel Graf am 27. August 2020 7:09

      Gleiches problem Hier! konntest du es lösen?

      Antworten
  73. Michael am 12. Dezember 2020 23:54

    Hallo Felix,
    der 5V Konverter wird doch nur benötigt, wenn man ein Breadbord verwendet, oder?
    Schließt man das Display für direkt am 5V-Augang bei den Pins an, wird das Display doch sowieso mit 5V versorgt?

    Lg Michael

    Antworten
  74. Mattis am 23. Dezember 2023 23:25

    Hallo,
    ich habe gerade angefangen auf dem pi dinge zu Code, und habe keine Ahnung wie ich Sonderzeichen z.b. ä oder ° anzeigen kann. (Ich habe ein I2C 16×2 Display und einen Raspberry Pi 4 Model B)
    Es wäre echt total freundlich wen jemand der es weiß mir helfen könnte!
    schon einmal danke im voraus

    LG Mattis

    Antworten

Hinterlasse einen Kommentar Antwort abbrechen

Überwachung von Fenstern und Türen mit dem Raspberry Pi und Reed-Relais

CO2 Konzentration mit dem Raspberry Pi und MH-Z19 Sensor messen

Mit dem Raspberry Pi und OpenHAB Funksteckdosen (433 MHz) schalten

Smart Home: Zigbee Geräte in Home Assistant per Raspberry Pi einbinden

Supercomputer: Wir bauen ein Raspberry Pi Kubernetes Cluster

Google News Feed auf LCD-Display mit dem Raspberry Pi

Blog abonnieren

Abboniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!

Tutorials for Raspberry Pi
Facebook Twitter YouTube
  • Kontakt & Impressum
  • Unterstützen
  • Datenschutz

Tippe den Suchbegriff oben ein und drücke Enter, um danach zu suchen. Drücke Esc, um abzubrechen.