6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ラズパイにて、有機ELディスプレイのサンプルコードを動かす

Last updated at Posted at 2020-01-13

お知らせ

  • [2020.10.10]新しいラズパイイメージではエラーが出たため、参照先を変更しました。

はじめに

ラズベリーパイにて、電子工作でよく使われる
[0.96インチ 128x64ドット有機ELディスプレイ]を動作させたいと思います。

IMG_006.jpg

紹介する内容

  • 128x64ドット有機ELディスプレイの概要
  • ラズベリーパイ3+を使い、IPアドレスの表示(サンプルコード実行)

0.96インチ 128x64ドット有機ELディスプレイ - SSD1306

0.96インチ 128x64ドット有機ELディスプレイは、SSD1306が搭載されいている安価な表示モジュールです。

SSD1306デバイスは、I2C通信(2線シリアル)とSPI通信(4線シリアル)の
2つの方式を対応していますが、販売されているものはどちらかになります。
今回は、私が秋月電子で購入したものは、I2C通信となります。

作業環境

  • ラズベリーパイ3
    • Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux
    • Python 3.6.6 (default, Jan 24 2019, 20:40:14)

機材

※型名が購入先のリンクになっています。

項目 型名 備考
ラズベリーパイ3 指定なし
有機ELディスプレイ 0.96inch 128x64ドット表示 I2C制御 秋月電子
ブレッドボード 指定なし
ジャンパーケーブル 4本

接続図

 接続図は以下となります。

001_rpi_oled.png

手順

  • I2C接続を確認する
  • 必要なモジュールをインストールする
  • サンプルコードを実行する

I2C接続を確認する

下記のコマンドでデバイスが接続されているかわかります。

$ i2cdetect -y 1

003_i2cdetect.PNG

"3c"がI2Cアドレスとなります。

"3c"が"--"と表示される場合、接続が正しくないことが考えられます。
また、購入先によって、I2Cアドレスが異なる場合があります。
異なる場合は、サンプルプログラムにて、I2Cアドレスを指定することが必要です。

必要なモジュールをインストールする

サンプルプログラムは、
Adafruit_CircuitPython_SSD1306

を使わせていただきます。

ただし、上記のみをインストールしてもいろいろと足りないと怒られるので、
以下の手順で行いました。

libjpeg-devのインストール

pillowのインストールで足りないと怒られるので、事前にインストール

$ sudo apt-get install libjpeg-dev

venvによる環境管理

この手順は必須ではありませんが、環境を分けます。

$ python3 -m venv env
$ source env/bin/activate
(env) $ 

Adafruit_SSD1306以外をインストール

(env) $ pip install pillow
(env) $ pip install RPi.GPIO
(env) $ pip install Adafruit-GPIO

Adafruit_SSD1306をインストール

(env) $ pip install adafruit-circuitpython-ssd1306
(env) $ pip install pillow
(env) $ git clone https://github.com/adafruit/Adafruit_CircuitPython_SSD1306

サンプルプログラムを実行する

サンプルプログラムを修正する

サンプルプログラムは、下記に配置されています。

./Adafruit_CircuitPython_SSD1306/examples/ssd1306_stats.py

サンプルコードは、128x32ドット用のコードになっています。
初期化を128x64ドット用に置き換えます。

disp = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c)

disp = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c)

サンプルプログラムを実行する(ssd1306_stats.py)

(env) $ python ./Adafruit_CircuitPython_SSD1306/examples/ssd1306_stats.py 

ラズベリーパイのIPアドレス、CPU使用率、メモリ使用率、ディスク使用率が表示されます。

IMG_006.jpg

それ以外のサンプルの実行結果

(env) $ python ./Adafruit_CircuitPython_SSD1306/examples/ssd1306_pillow_animate.py


007_anime.jpg

※文字がスクロールします。


(env) $ python ./Adafruit_CircuitPython_SSD1306/examples/ssd1306_bonnet_buttons.py


007_button.jpg


(env) $ python ssd1306_pillow_images.py 


007_image.jpg


参考

6
9
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
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?