前回の続き.i2cで遊ぶのにシェルスクリプトは嫌なので,rubyかpythonを使いたいが,pythonしかはいっていないのでpythonでi2cを使えるようにした.
実は,i2c-toolsでpy-smbusのモジュールもビルドしていて,インストールもしていたけどライブラリの依存関係でうまく動かなかったので入れなおし.
makeでビルドすると,なぜかlibi2c.soとリンクしてくれず, pythonでimport smbusとすると,i2c_smbus_accessへの参照エラーで動かない.しょうがないので,smbus.soを作るときにlibi2c.soとリンクするようにあとから指定してインストール.
% cd i2c-tools-master
% cd py-smbus
% rm -fr build
% python setup.py build
% i586-poky-linux-uclibc-gcc -m32 -march=i586 -shared -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed build/temp.linux-i586-2.7/smbusmodule.o ../lib/libi2c.so -o build/lib.linux-i586-2.7/smbus.so
# python setup.py install
これでインポートできるようになった.
こんなスクリプトを実行すると温度が出力される.
# cat test_adt7410.py import smbus i2c = smbus.SMBus(0) addr = 0x48 th = i2c.read_byte_data(addr, 0) tl = i2c.read_byte_data(addr, 1) temp_d = th *256 + tl temp = temp_d / (8.0 * 16.0) print(temp) # python test_adt7410.py 26.9375