読者です 読者をやめる 読者になる 読者になる

Raspberry Π

Raspberry Piでいろんなことをやってみようというブログです。

mincraft

7セグメントLEDを使って数字を表示する

ラズパイマガジンという雑誌を購入して見てみると、7セグメントLEDというやつで面白そうなことができそうでした。
とうことで、7セグメントLEDに数字を表示する機能を作成します。

f:id:taka230035:20161001221154j:plain:w300



買ったもの・使ったもの

今回の機能で使用する部品はラズパイマガジン2016年6月用の部品セットで揃えられます。
部品セットは以下でレビューしております。

rasp0035.hatenablog.com


部品セットより以下のものを使用しました。

・ラズパイマガジン6月号 製作キットのうち
 −7セグメントLED
 −7セグメントドライバ
f:id:taka230035:20161001220740j:plain:w200

 −ブレッドボード
f:id:taka230035:20161001220801j:plain:w200

 −ジャンパー線
 −1/4Wカーボン抵抗
 −電池ボックスと単3乾電池2本
f:id:taka230035:20161001220820j:plain:w200


上記を使用。
Raspberry Piでよく見るブレッドボードを本格的に使っていきます!!




まずは配線

早速、ブレッドボードの配線を行いますが、さすがに雑誌の画像をそのまま載せるのは著作権とかあるので。
ラズパイマガジンが売れて、もっと良質な内容を掲載して欲しいので、ここは雑誌を購入して、参照していただきたいです。

一応自分が作成したブレッドボードの画像を載せておきますが、分かりにくいですね。
f:id:taka230035:20161001221120j:plain:w200

7セグメントドライバは
Raspberry Piからの4つのGPIOだけで7つのセグメントに分かれたLEDを光らせることができるするものです。

それと、LEDにはもちろん電気を流す必要がありますが、Raspberry Piからの供給は難しいようで、
7セグメントドライバによって、別電源(今回は乾電池)から電気を用いることが出来るようになります。




スクリプト

次にスクリプトです。
ただ、以下のスクリプトを制作してもすぐに実行できず、
その後にラズパイにモジュール・ライブラリのインストールが必要になります。

ラズパイマガジンへの苦情なのですが、今回使用するモジュール・ライブラリのインストールが雑誌どおりのようには行かず、自分の環境ではかなり苦戦しました。

ライブラリのインストール検証を行うためにも先にスクリプトを作成しようと思います。

スクリプト自体は簡単で以下となります。
※#の部分はエラーとなるので、消して使用してください。

import wiringpi as pi, time #①

d0_pin = 18 #②
d1_pin = 23
d2_pin = 24
d3_pin = 25

pi.wiringPiSetupGpio() #③
pi.pinMode( d0_pin, 1)
pi.pinMode( d1_pin, 1)
pi.pinMode( d2_pin, 1)
pi.pinMode( d3_pin, 1)

pi.digitalWrite( d0_pin, 1 ) #④
pi.digitalWrite( d1_pin, 0 )
pi.digitalWrite( d2_pin, 0 )
pi.digitalWrite( d3_pin, 1 )

雑誌には import wiringPiと書かれているのですが、エラーとなります。wiringpiとすべて小文字で書きました。




スクリプト解説

独学による解説

①ブレッドボードをスクリプトで使用するには
wiringpiというライブラリが必要で、最初はそれのインポート。

Raspberry PiのGPIOボードに接続する番号、ここは固定

③ブレッドボードの初期化と、ポートの有効化。  こちらもおまじない的な。

④デジタル信号の設定で、  ここの設定でLEDの対応部分を光らせたりできます。
 具体的に書くと  d0,d1,d2,d3 ⇒LEDの数字 の順で
  0, 0, 0, 0 ⇒0
  1, 0, 0, 0 ⇒1
  0, 1, 0, 0 ⇒2
  1, 1, 0, 0 ⇒3
  0, 0, 1, 0 ⇒4
  1, 0, 1, 0 ⇒5
  0, 1, 1, 0 ⇒6
  1, 1, 1, 0 ⇒7
  0, 0, 0, 1 ⇒8
  1, 0, 0, 1 ⇒9
と表示されます。




ライブラリインストール

いよいよ、ライブラリのインストールです。
wiringpiコマンドを使うための手順となるのですが、正確な手順は不明となってしまいました。

実際にはもっといろいろいじくり回してますが、有効と思われるコマンドを以下に実行した順に記載していきます。

$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi/
$ git pull origin
$ sudo make
$ sudo make install
$ sudo apt-get install wiringpi
$ sudo apt-get install libi2c-dev
$ sudo apt-get install python-dev python-setuptools swig
$ git clone --recursive https://github.com/WiringPi/WiringPi-Python.git
$ sudo python setup.py install
$ sudo python3 setup.py install //※
$ sudo swig2.0 -python wiringpi.i or swig3.0 -thread -python wiringpi.i
$ sudo ./build.sh
$ sudo python3 setup.py install //※


今回手こずった要因として、
pythonはバージョン違いが著しいということで、pythonコマンドとpython3コマンドがあるということ。
上記の手順でどちらでも実行可能な状態に。

さらにwiringPiにもC用のライブラリとpython用のライブラリがあり、
自分が持ったイメージはまずC用のライブラリをインストールしたあと、python用のライブラリをインストールする必要があるとおもったのですが、python用のライブラリのインストールのみで良いかもしれないです。

さらにさらにwiringPiにも2バージョンあるようで、wiringpiとwiringpi2コマンドがあるよう。
今回はwiringpiコマンドを使用しました。

上記入力例に
$ sudo python3 setup.py install
が2箇所書いていますが、一回目はエラーでうまくいきませんでした。

$ sudo ./build.sh
を実施後にもう一度実行したらうまくいきました。

取り敢えずでスクリプトのエラーは無くなりましたが、手順確定のための検証が必要と思います。
ちなみにマガジンの方は
$ sudo apt-get install wiringpi
の1行で片付けていたが、それだけでは自分の環境ではできませんでした。



動作

ライブラリをインストールし、スクリプトをエラーなく実行した結果が以下となります。

f:id:taka230035:20161001221154j:plain:w200

LEDの値がうまく表示されない場合はブレッドボードの接続がうまくいっていないことがあげられます。
配線は問題ないか。
各部品ボードに奥までしっかりと差し込んでいること。
を確認する。
特に後者は注意です。


また課題としては、配線が邪魔でLEDが見辛いということです。ただ解決策は思いつかず。

以上。