「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
Tinker Boardの基本的な使い方(その6・SPIを使う)
マイコンと周辺機器との通信方式として、SPIを使うことも多いです。
今回は、SPIで320×240ピクセルグラフィックディスプレイを操作する例を紹介します。
1.OSの更新
本記事執筆時点では、DebianのTinker OSの正式版としてバージョン1.8が公開されています。
ただ、1.8ではカーネルに不具合があり、SPI通信を正しく行うことができません。
この点は2.0.1βで修正されました。
Tinker BoardのサポートのページでOSをダウンロードしてインストールしなおします。
2.パッケージのインストール
PythonでSPI通信を行うために、「spidev」というパッケージをインストールします。
以下のコマンドを実行します。
curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python curl https://bootstrap.pypa.io/get-pip.py -o - | sudo python git clone git://github.com/doceme/py-spidev cd py-spidev sudo python setup.py install
3.SPIのピン番号/バス番号
SPI通信の際に使うピン番号は、以下のようになっています。
物理ピン番号 | ピンの役割 |
---|---|
19 | MOSI |
21 | MISO |
23 | SCK |
24 | CS0 |
25 | CS1 |
また、SPIのバス番号は2番になっています。
spidevでSPIをオープンする際には、以下のようにバス番号に2を指定します。
spi = spidev.SpiDev() spi.open(2, 0)
4.ディスプレイとの接続
今回は、SPIの例としてカラー液晶ディスプレイを使いました。
コントローラとしてILI9341を搭載した320×240ピクセルのディスプレイです。
今回は2.8インチのものが使いましたが、2.4インチや2.2インチのものもあります。
Tinker Boardとディスプレイとの接続は、以下の通りです。
ディスプレイ | Tinker Boardの 物理ピン番号 |
---|---|
SDI | 19 |
SCK | 23 |
CS | 24 |
D/C | 18 |
RESET | 16 |
VCC | 1 |
GND | 9 |
LED | 2 |
5.プログラムを動作させる
PythonでILI9341を制御するライブラリとして、Adafruitから公開されているものを使いました。
ただ、そのままではTinker Boardでは動作しないので、幾分手を加えました。
まず、以下のコマンドを実行して、Pillow(Pythonで画像を扱うライブラリ)をインストールします。
sudo apt -y install python-pil
次に、ILI9341のライブラリとサンプルプログラムを以下からダウンロードします。
Zipファイルを解凍したら、以下のコマンドでサンプルプログラムを実行することができます。
sudo python gtest.py