Raspberry piでアナログ入力を取り扱おうという話の続きです。
Raspberry piでアナログ入力(回路図あり)
Raspberry piでアナログ入力2
前2回は、デバイスドライバを使用しませんでしたが、標準でMCP3001, MCP3002, MCP3004, MCP3008, MCP3201, MCP3202, MCP3204, MCP3208 ,MCP330用のデバイスドライバが含まれています。デバイスドライバを組み込めばファイルの読み書きと同じようにAD変換の結果を取り込むことができます。(変換結果は10bitとなります。)
設定
/boot/config.txt ファイルの最後に次の1行を追加します。
$ sudo mousepad /boot/config.txt
dtoverlay=mcp3008:spi0-0-present,spi0-0-speed=500000
spi0-0-present: 使用するポートとCEの端子を指定します。
spi0-0-speed=500000: SPIの転送速度を指定します。
使用法
pi@raspberrypi:~ $ cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw
1023
pi@raspberrypi:~ $ cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw
298
pi@raspberrypi:~ $ cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw
87
pi@raspberrypi:~ $ cat /sys/bus/iio/devices/iio\:device0/in_voltage2_raw
28
pi@raspberrypi:~ $ cat /sys/bus/iio/devices/iio\:device0/in_voltage3_raw
4
pi@raspberrypi:~ $ cat /sys/bus/iio/devices/iio\:device0/in_voltage4_raw
1
pi@raspberrypi:~ $ cat /sys/bus/iio/devices/iio\:device0/in_voltage5_raw
1023
pi@raspberrypi:~ $ cat /sys/bus/iio/devices/iio\:device0/in_voltage6_raw
0
pi@raspberrypi:~ $ cat /sys/bus/iio/devices/iio\:device0/in_voltage7_raw
35
pi@raspberrypi:~ $
ファイル"/sys/bus/iio/devices/iio:device0/in_voltage(ポート)_raw"の内容がAD変換の結果をASCIIコードにしたものになっています。
参考
Using MCP3008 ADCs with Raspberry Pis
raspberrypi/firmware
scottellis/mcp3008-poll