1
4

More than 3 years have passed since last update.

有機ELキャラクタディスプレイ SO1602 操作用Pythonライブラリを AdaFruit 仕様で実装(Raspberry Pi 向け)

Last updated at Posted at 2019-11-09

概要

秋月電子などから販売されている、SO1602有機ELキャラクタディスプレイ(16文字×2列)はキャラクタ表示に便利だし、Arduino や RaspberryPi などで動作させるための実装は、C言語やPythonそれなりにある。それでも、BME280などのI2C経由で操作するセンサーと組み合わせるときには、Adafruit が提供している、CircuitPython のお作法に則って記述するのが見た目統一されている気がする。
なので、SO1602向けに必要なライブラリをCircuitPython風というかAdafruit風に書いて公開してみた。

SO1602の製品情報

秋月電子さんのHPなどに、SO1602を用いたディプレイモジュールの製品やデータシートなどが記載されている。
http://akizukidenshi.com/catalog/goods/search.aspx?search=x&keyword=%97L%8B%40%82d%82k%83L%83%83%83%89%83N%83%5E%83f%83B%83X%83v%83%8C%83C%83%82%83W%83%85%81%5B%83%8B%81%40%82P%82U%81%7E%82Q%8Ds&image=%8C%9F%8D%F5

利用方法

ライブラリをクローン

まずは、SO1602 のライブラリをクローンする(名前をAdafruit っぽくしてるが、見た目揃えただけでAdafruit社とは無関係)

% git clone -b v0.1 https://github.com/gdaisukesuzuki/Adafruit_CircuitPython_SO1602
% cd Adafruit_CircuitPython_SO1602

インストール

% python3 setup.py build
% python3 setup.py install

自分の個人的趣味だが、自分はこんな風にビルド&実装してる。

% python3 setup.py bdist_wheel
% sudo pip3 install dist/adafruit_circuitpython_so1602-0.1-py3-none-any.whl -U -V 

動作確認

python3 の動作確認はこんな感じ。カタカナも表示可能。

import time

import board
import busio

import adafruit_so1602

# Create library object using our Bus I2C port
i2c = busio.I2C(board.SCL, board.SDA)
SO1602 = adafruit_so1602.Adafruit_SO1602_I2C(i2c)

SO1602.writeLine(str="SO1602ナンダヨ!",line=0,align="left")
SO1602.writeLine(str="ΩΩΩ<ナ、ナンダッテー!?",line=1,align="left")

簡単ですが、メソッドの紹介を

初期化含め動作は CircuitPython っぽくしている。

SO1602 = adafruit_so1602.Adafruit_SO1602_I2C(i2c)

初期化の際に、以下のようにスレーブアドレスを別に設定したりカーソル表示や点滅の有無を設定することも可能。

SO1602 = adafruit_so1602.Adafruit_SO1602_I2C(i2c=i2c, address=0x3c, cursor = True, blink = False)

文字列表示させる場合、 "line"で表示行(0 or 1)、"align"で左右詰めを設定。

SO1602.writeLine(str="SO1602ナンダヨ!",line=0,align="right")

そのほかメソッドは以下のとおり

SO1602.displayOn(cursor = True/False, blink = True/False) #ディスプレイOn
SO1602.displayOff()                                       #ディスプレイOff
SO1602.displayClear()                                     #ディプレイを全消去
SO1602.returnHome()                                       #カーソルをホームに

注意すること

・ 秋月電子からは、SO1602の他にも「XX1602シリーズ」と言うべき、様々なLCDなどのキャラクタディプレイを販売している(SC1602、AQM1602、ACM1602等)。動作検証はしてないが、I2C接続ならスレーブアドレスの設定を変更すれば動くかもしれない。
・SO1602は有機ELなので消費電力が結構大きい(50mA)。そのためなのか? 他I2C接続センサと直列に繋げると、動作不安定になる。なので、そのような使い方をする場合「PCA9306」「PCA9515AD」などを、 I2C バスのリピーターのような形として間に挟むべき。

参考にしたサイト

https://github.com/YoutechA320U/RaspberryPi_Python_so1602_lib
@YoutechA320U さん(qiita にアカウントはなさそう・・・)の GitHub 。大いに参考した(つうか基本部分はほぼここのパクリ)
https://qiita.com/uhey22e/items/14d3e1d95d6ddc90fb2c
@uhey22e さんによる解説。こちらも大いに参考になった。SO1602操作の際のコマンドがほぼ網羅されている。
https://www.denshi.club/pc/raspi/raspberry-pilcd.html
電子工作推進プロジェクトさんのブログ(レジスタ操作の参考に。データシート見ればよいけどが、必要な箇所を早くつまみ食いするため)
http://akizukidenshi.com/catalog/g/gP-08277/
自分が動作検証に使用した有機ELモジュールの製品紹介(秋月電子)

GitHub

https://github.com/gdaisukesuzuki/Adafruit_CircuitPython_SO1602

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4