Hi,
am Raspberry 1 Modell B betreibe ich ein Hd44780 kontrolliertes Display mit 40x4 Zeichen. Dieses hat 2 Controller, da der HD44780 nur einen 80 Zeichen langen Textpuffer besitzt. Da die meisten Anleitungen im Internet auf einen veralteten Hd44780.so Treiber verweisen, der nur einen Controller ansteuern kann, habe ich mal einen Neuen kompiliert.
Die Änderung kam hier
Zitat von mmdolze committed on 22 Feb 2013
- Add 40x4 support (for displays with two controllers)
Achtung: Auch der Rasp1 wird als ConnectionType=raspberrypi angesprochen (vormals rpi). Der zweite Enable Eingang liegt hier auf GPIO22.
Hier die LCDd.conf mit Treiber-Pfad in /storage/downloads/
# LCDd.conf -- configuration file for the LCDproc server daemon LCDd
#
# This file contains the configuration for the LCDd server.
#
# The format is ini-file-like. It is divided into sections that start at
# markers that look like [section]. Comments are all line-based comments,
# and are lines that start with '#' or ';'.
#
# The server has a 'central' section named [server]. For the menu there is
# a section called [menu]. Further each driver has a section which
# defines how the driver acts.
#
# The drivers are activated by specifiying them in a driver= line in the
# server section, like:
#
# Driver=curses
#
# This tells LCDd to use the curses driver.
# The first driver that is loaded and is capable of output defines the
# size of the display. The default driver to use is curses.
# If the driver is specified using the -d <driver> command line option,
# the Driver= options in the config file are ignored.
#
# The drivers read their own options from the respective sections.
## Server section with all kinds of settings for the LCDd server ##
[server]
# Where can we find the driver modules ?
# IMPORTANT: Make sure to change this setting to reflect your
# specific setup! Otherwise LCDd won't be able to find
# the driver modules and will thus not be able to
# function properly.
# NOTE: Always place a slash as last character !
DriverPath=/storage/downloads/
#/usr/lib/lcdproc/
# Tells the server to load the given drivers. Multiple lines can be given.
# The name of the driver is case sensitive and determines the section
# where to look for further configuration options of the specific driver
# as well as the name of the dynamic driver module to load at runtime.
# The latter one can be changed by giving af File= directive in the
# driver specific section.
#
# The following drivers are supported:
# bayrad, CFontz, CFontz633, CFontzPacket, curses, CwLnx, ea65,
# EyeboxOne, g15, glcdlib, glk, hd44780, icp_a106, imon, imonlcd,
# IOWarrior, irman, joy, lb216, lcdm001, lcterm, lirc, lis, MD8800,
# mdm166a, ms6931, mtc_s16209x, MtxOrb, mx5000, NoritakeVFD, picolcd,
# pyramid, sed1330, sed1520, serialPOS, serialVFD, shuttleVFD, sli,
# stv5730, svga, t6963, text, tyan, ula200, xosd
Driver=hd44780
# Tells the driver to bind to the given interface
Bind=127.0.0.1
# Listen on this specified port; defaults to 13666.
Port=13666
# Sets the reporting level; defaults to 2 (warnings and errors only).
ReportLevel=3
# Should we report to syslog instead of stderr ? [default: no; legal: yes, no]
#ReportToSyslog=yes
# User to run as. LCDd will drop its root priviledges, if any,
# and run as this user instead.
User=nobody
# The server will stay in the foreground if set to true.
Foreground=no
# Hello message: each entry represents a display line; default: builtin
Hello=" Welcome to"
Hello=" OpenELEC"
# GoodBye message: each entry represents a display line; default: builtin
GoodBye="Thanks for using"
GoodBye=" OpenELEC"
# Sets the default time in seconds to displays a screen.
WaitTime=5
# If yes, the the serverscreen will be rotated as a usual info screen. If no,
# it will be a background screen, only visible when no other screens are
# active. The special value 'blank' is similar to no, but only a blank screen
# is displayed. [default: on; legal: on, off, blank]
ServerScreen=blank
# Set master backlight setting. If set to 'open' a client may control the
# backlight for its own screens (only). [default: open; legal: off, open, on]
Backlight=open
# Set master heartbeat setting. If set to 'open' a client may control the
# heartbeat for its own screens (only). [default: open; legal: off, open, on]
Heartbeat=open
# set title scrolling speed [default: 10; legal: 0-10]
TitleSpeed=4
# The "...Key=" lines define what the server does with keypresses that
# don't go to any client.
# These are the defaults:
ToggleRotateKey=Enter
PrevScreenKey=Left
NextScreenKey=Right
#ScrollUpKey=Up
#ScrollDownKey=Down
# If you have only 4 keys, you can choose to use this:
#ToggleRotateKey=Enter
#PrevScreenKey=Up
#NextScreenKey=Down
# If you have only 3 keys, you can choose to use this:
#ToggleRotateKey=Enter
#PrevScreenKey=Up
## The menu section. The menu is an internal LCDproc client. ##
[menu]
# You can configure what keys the menu should use. Note that the MenuKey
# will be reserved exclusively, the others work in shared mode.
# The following works excellent with 4 keys or more.
MenuKey=Escape
EnterKey=Enter
UpKey=Up
DownKey=Down
# If you have 6 keys you may define these as well
#LeftKey=Left
#RightKey=Right
# If you have only 3 keys, you could use something like this:
#MenuKey=Escape
#EnterKey=Enter
#DownKey=Down
### Driver sections are below this line, in alphabetical order ###
## Hitachi HD44780 driver ##
[hd44780]
# Select what type of connection. See documentation for types.
ConnectionType=raspberrypi
D4=25
D5=24
D6=23
D7=18
EN=8
EN2=22
RS=7
BL=17
# Port where the LPT is [ususal: 0x278, 0x378 and 0x3BC]
Port=0x378
# Device of the serial interface [default: /dev/lcd]
Device=/dev/ttyS0
# Bitrate of the serial port (0 for interface default)
Speed=0
# If you have a keypad connected.
# You may also need to configure the keypad layout further on in this file.
Keypad=no
# Set the initial contrast (bwctusb and lcd2usb) [default: 500; legal: 0 - 1000]
Contrast=0
# Set brightness of the backlight (lcd2usb only) [default: 0; legal 0 - 1000]
#Brightness=1000
#OffBrightness=0
# If you have a switchable backlight.
Backlight=no
# If you have the additional output port ("bargraph") and you want to
# be able to control it with the lcdproc OUTPUT command
OutputPort=no
# Specifies if the last line is pixel addressable or it controls an
# underline effect. [default: true (= pixel addressable); legal: yes, no]
#Lastline=true
# Specifies the size of the LCD.
# In case of multiple combined displays, this should be the total size.
Size=40x4
# For multiple combined displays: how many lines does each display have.
# Vspan=2,2 means both displays have 2 lines.
vspan=2,2
# If you have an HD66712, a KS0073 or an other 'almost HD44780-compatible',
# set this flag to get into extended mode (4-line linear).
#ExtendedMode=yes
# In extended mode, on some controllers like the ST7036 (in 3 line mode)
# the next line in DDRAM won't start 0x20 higher. [default: 0x20]
#LineAddress=0x10
# Character map to to map ISO-8859-1 to the LCD's character set
# [default: hd44780_default; legal: hd44780_default, hd44780_euro,
# ea_ks0073, sed1278f_0b, hd44780_koi8_r ]
CharMap=hd44780_euro
# If your display is slow and cannot keep up with the flow of data from
# LCDd, garbage can appear on the LCDd. Set this delay factor to 2 or 4
# to increase the delays. Default: 1.
DelayMult=1
# Some displays (e.g. vdr-wakeup) need a message from the driver to that it
# is still alive. When set to a value bigger then null the character in the
# upper left corner is updated every <KeepAliveDisplay> seconds. Default: 0.
#KeepAliveDisplay=0
# If you experience occasional garbage on your display you can use this
# option as workaround. If set to a value bigger than null it forces a
# full screen refresh <RefreshDiplay> seconds. Default: 0.
#RefreshDisplay=5
# You can reduce the inserted delays by setting this to false.
# On fast PCs it is possible your LCD does not respond correctly.
# Default: true.
DelayBus=true
# If you have a keypad you can assign keystrings to the keys.
# See documentation for used terms and how to wire it.
# For example to give directly connected key 4 the string "Enter", use:
# KeyDirect_4=Enter
# For matrix keys use the X and Y coordinates of the key:
# KeyMatrix_1_3=Enter
KeyMatrix_4_1=Enter
KeyMatrix_4_2=Up
KeyMatrix_4_3=Down
KeyMatrix_4_4=Escape
# EOF
Alles anzeigen
Getestet am Raspberry 1b und OpenELEC 6.0.0. Der Raspberry 2b sollte ebenfalls funktionieren (ungetestet).
Gruß
EDIT: OSMC und Raspbian Jessie funktionieren auch.
EDIT2: D4=25 fehlte ursprünglich.
******* UPDATE (Juni 2017): ****************************************
Ab Kernel 4.9 wird der Patch benötigt. Der neue Treiber und die benötigte Libary libugpio.so.1 sind in Kernel4.9_hd4478.so.zip enthalten.
(Getestet mit OSMC-May-2017-Update und Raspbian-Lite mit 4.9er Kernel.)
******* UPDATE (November 2011): ***********************************
Seit Bullseye braucht der Treiber nicht mehr installiert werden. Der mitgelieferte Treiber funktioniert.
(Since Bullseye there is no need to install this driver any longer. The installed driver runs perfectly.)