LED、SW、7seg を既存のマイコンに増設できる拡張基板みたいなものです。
しかし、操作には特殊なプロトコルが必要です。
Arduino も Raspberry Pi もTM1638を簡単に操作するライブラリが出ているので使ってみました。
Raspberry Pi版は日本語でまとまった資料が無いので、この記事でまとめておきます。
●やったこと
TM1638 + python で以下の操作をできるようになった。- 7segに数値表示
- LEDの点灯(緑/赤)
私のTM1638は$6くらいのちょっとお高いもので、緑表示もできます。
安いものは赤のみです。 - SW入力の検出
●やってないこと
TM1638の2個以上連結●回路接続
TM1638 : rasPi zero
VCC : 3.3V
GND : GND
DataIO : GPIO19
clock : GPIO13
STB0 : GPIO6
STB1 : GPIO26
黄色がTM1638のピンです
回路引用元
https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/README.md
ライセンスは CC BY-SA 3.0 です。
●使うパッケージ
rpi-TM1638https://github.com/thilaire/rpi-TM1638
pythonで操作するためのもののようです。
HP内容通りにインストールすれば簡単に動くはず...
...と思ったのですが。動かず。
だいぶ苦労しました。
●成功したインストール方法
全てターミナルでやりましたまず、ホームディレクトリに移動します。
rpi-TM1638のパッケージをGithubから持ってきます。
5分くらい時間かかりました。
$ git clone https://github.com/thilaire/rpi-TM1638.git
ホームにrpi-TM1638ディレクトリが生成されているので移動します
$ cd rpi-TM1638/setup.pyを実行します。
sudoしておく必要があります。sudoしないとエラーが出ます。
1分くらい時間かかりました。
$ sudo python setup.py installこれでインストール完了。
サンプルコードを動かせる環境が整いました。
●失敗したインストール方法
rpi-TM1638の説明ではpip install が使えると書いてあるのでやってみましたがダメでした。$ pip install rpi-TM1638このようなエラーが出る
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting rpi-TM1638
Could not find a version that satisfies the requirement rpi-TM1638 (from versions: )
No matching distribution found for rpi-TM1638
pip upgrade したけど結果変わらず。
$ sudo pip install --upgrade pipあきらめて、git clone ... で入手して成功しました。
●テスト実行
$ python test_TM.pyこれでエラーは出ますが動きました。
7segに数値表示されます。
LED1が点灯します。
24行目でエラーが出ました。
24行目をコメントアウトして、正常作動しました。
●サンプルコード
test_TM.py を改造しました。Ctrl-c で終了してください
# coding=utf-8
from time import sleep
from rpi_TM1638 import TMBoards
# GPIO設定
DIO = 19
CLK = 13
STB = 06, 26
# 宣言
TM = TMBoards(DIO, CLK, STB, 0)
TM.clearDisplay()
TM.leds[0] = True # LED0を点灯
TM.sendData(3, 2, 0) #LED2赤点灯
TM.segments[1] = '0' # 左から2桁目に0を表示
TM.segments[3] = '25676' #左から4桁目から25676を表示
#SWの押下状況を取得
while True:
a=TM.getData(0)
print("val> " + str(a))
sleep(0.5)
●各操作 LED点灯
TM.leds[0] = True #LED1(index:0)を点灯(緑)赤点灯はlow level api でないと行えなかった。
TM.leds[1] = True #LED2(index:1)を点灯(緑)
TM.sendData(3, 2, 0) #LED2(index*2+1=3) を赤(2)に。緑(1)消灯(0)
●各操作 7seg表示
TM.segments[3] = '256.76'4桁目([3]+1=4)から'256.76'を表示
●各操作 スイッチの取得
.switchesはエラーが出る。以下に示す .getdataで取得できるが、4個のリストで帰ってくるので少し面倒
while True:返値)
a=TM.getData(0)
print("val> " + str(a))
sleep(0.5)
SW1 pushed : val> [1, 0, 0, 0]
SW2 pushed : val> [0, 1, 0, 0]
SW5 pushed : val> [16, 0, 0, 0]
SW1 and SW6 pushed : val> [1, 16, 0, 0]
●所感
パッケージ内容が色々ひどい(笑)- HPの説明通りには動かない。
- gitの説明が雑
- def updateSwitches()
が # TODO: to be continued で終わってる - パッケージのソースに.switchesが見当たらないんですが・・・
0 件のコメント:
コメントを投稿