uchan-nos / libpilcd

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

pilcd

Raspberry Pi 向けの SC1602 液晶表示器(LCD)のライブラリです。 pigpio を利用し、C 言語で実装してあります。

LCD を表示した様子

使い方

まず <pigpio.h><pilcd.h> をインクルードします。

#include <pigpio.h>
#include <pilcd.h>

次に pigpio と pilcd を初期化します。

int main() {
  if (gpioInitialise() < 0) {
    return -1;
  }

  struct LCD lcd = {
    2, 3, 4, // RS, R/W, E
    14, 15, 17, 18 // DB4 - DB7
  };
  lcdInitialize(&lcd);

初期化が完了したら各種の関数を使えます。LCD に文字を表示するには lcdPrintf() が便利です。

lcdPrintf(&lcd, "hello, world!");

表示位置を調整するには lcdCursorAt() を使います。2 行目の先頭からメッセージを表示するには次のように書きます。

lcdCursorAt(&lcd, LCD_DDRAM_LINE2);
lcdPrintf(&lcd, "this is 2nd line");

2 行目の先頭から n 文字空けて表示するには LCD_DDRAM_LINE2 + n とします。

現在の CPU 温度を表示する例

Raspberry Pi OS では、CPU 温度を sysfs から取得できます。 CPU 温度を取得し、LCD に表示する例を示します。

FILE* thermal_file = fopen("/sys/class/thermal/thermal_zone0/temp", "r");
int temp = 0;
fscanf(thermal_file, "%d", &temp);
lcdPrintf(&lcd, "CPU temp = %d.%d", temp / 1000, (temp / 100) % 10);

ライブラリが対応する LCD

このライブラリは 4 ビットパラレル接続の SC1602 または SC2004 に対応しています。 I2C 接続には今のところ対応していません。(将来的に対応する可能性はあります)

動作確認が取れているのは SC1602 3.3V仕様 (SC1602BS*B-XA-LB-G) です。 HD44780 互換コントローラを搭載した製品であれば動作することが期待されます。

Raspberry Pi と LCD の接続

基本的に Raspberry Pi の GPIO はいずれも同等の機能を持っているのですが、GPIO2 および GPIO3 だけは電気的な特性が異なります。 LCD の DB4 - DB7 のいずれかを GPIO2/3 に接続してしまうと誤動作の原因となりますので、避けてください。

詳しくは Raspberry PiのGPIO2と3のプルアップ抵抗に注意 - uchan note に書きました。

その他の制約はありません。LCD の RS, R/W, E, DB4 - DB7 ピンを、Raspberry Pi の空いてる GPIO に接続します。 Raspberry Pi の GPIO のピン配置は GPIO - Raspberry Pi Documentation を参照してください。

コントラスト制御

LCD の Vo ピンの制御は pilcd の範囲外ですから、自由に制御してください。 GND に接続しておけば最もコントラストが高い状態になります。

LCD の Vo ピンを GPIO に接続し、PWM を用いてコントラストを調整する例を示します。

gpioPWM(27, 80); // Vo: GPIO27

gpioPWM() の第 2 引数がコントラストに対応します。0 が最もコントラストが高く、255 が最も低くなります。 uchan による実験では 80 程度を設定することで背景色がちょうど見えなくなり、いい感じでした。

その他の機能

examples/demo/main.c にサンプルとなる実装があります。 main.c に記述されたピン番号(PIN_hoge)を手元の環境に合わせて変更してからビルドすると実験可能です。 ビルドは make 一発です。

make
sudo ./demo

examples の紹介

examples ディレクトリには pilcd を利用した例を収録しています。

demo

pilcd ライブラリの各機能を試すためのデモアプリです。

デモ動画: pilcdライブラリのデモ

notify-startup

Raspberry Pi OS の起動時に LCD に起動時刻を表示します。 自動起動には Systemd の仕組みを使います。

make
sudo make install

make install によって /etc/systemd/system/lcd-showmsg.service に Systemd 用のユニットファイルが配置され、自動起動が有効化されます。 Raspberry Pi を再起動すると LCD に "System started 12/20 11:08:27" などとメッセージが出ます。

About

License:MIT License


Languages

Language:C 100.0%