[Haskell-cafe] [ANN] pi-lcd-0.1.0.0
Patrick Pelletier
code at funwithsoftware.org
Sat Feb 18 00:42:33 UTC 2017
https://hackage.haskell.org/package/pi-lcd
https://github.com/ppelleti/pi-lcd
I recently bought an Adafruit LCD+Keypad Kit for Raspberry Pi. The
LCD+Keypad Kit has a 16x2 character LCD, an RGB LED backlight (depending
on the model), and five buttons. It works on all models of Raspberry
Pi, and plugs into the GPIO header.
https://www.adafruit.com/categories/808
Adafruit only supplies a Python library for communicating with the
LCD+Keypad Kit. I wanted to program it in Haskell, so I wrote this
Haskell library for communicating with it.
The library automatically handles Unicode, using the LCD controller's
built-in characters where possible, and using the "custom characters"
feature, along with a 5x8 font bundled with this package, to emulate
Unicode characters which are not built-in. The user of the library can
also define their own custom characters.
Everything you need to use one of these LCDs is exposed in the
System.Hardware.PiLcd module. The submodules are only exposed because
they might be useful to reuse for other types of hardware, such as if
you are using an MCP23017 port expander or an HD44780 display controller
in some other context. But if you're using the Adafruit LCD+Keypad Kit,
all you need is System.Hardware.PiLcd.
Before using this package, you'll need to make sure that I²C is enabled
on your Raspberry Pi, under "Advanced Options" in raspi-config.
Using PiLcd is as easy as:
{-# LANGUAGE OverloadedStrings #-}
import System.Hardware.PiLcd
main = do
lcd <- openPiLcd defaultLcdAddress defaultLcdOptions
updateDisplay lcd ["Hello,", "World!"]
setBacklightColor lcd Cyan
closePiLcd lcd
There are additional examples in the "examples" directory.
This library is specifically designed to work with GHC 7.6.3 and up, and
to not use Template Haskell, so it will work with the system-supplied
version of GHC on Raspbian "Jessie." Just do "sudo apt-get install ghc
cabal-install" and you're good to go. (You should also increase the
swap space by editing /etc/dphys-swapfile.) There are other ways to
install more recent versions of GHC if you want; see the "Raspberry Pi"
page on the Haskell Wiki for details.
This is a fairly early release, and there might be breaking changes in
the future. Please contact me, by filing a GitHub issue, or by email,
if you have any feedback on the library. I'm considering adding support
for other LCDs, such as the Display-O-Tron 3000 and/or Display-O-Tron
HAT. Let me know if you'd like to see support for those displays. I'd
also be curious to hear how the library is being used!
More information about the Haskell-Cafe
mailing list