adc-pi-spiというnpmモジュールを発見。ちょうどいいので使ってみる。
https://npmjs.org/package/adc-pi-spi
coffeescriptを使っているようなのでcoffeescriptをインストールしておく。
sudo npm install -g coffee-script
サンプルコード
main.coffee
ADC = require 'adc-pi-spi' options = tolerance: 10 #default = 10 pollInterval: 200 #default = 200 channels: [0,1,2,3] #default = [0] adc=new ADC('/dev/spidev0.0', options) adc.on 'change', (channel, value)-> console.log 'channel ', channel, 'is now', value process.on 'SIGTERM', () -> adc.close() process.on 'SIGINT', () -> adc.close() process.on 'exit', () -> adc.close()
実行する。
$ npm install adc-pi-spi $ sudo coffee main.coffee
デバイスが開けないというエラーが出た。
Error: Unable to open device at [object Object].Spi.open (/home/pi/project/mcp3208/node_modules/adc-pi-spi/node_modules/spi/spi.js:64:22) at /home/pi/project/mcp3208/node_modules/adc-pi-spi/lib/index.coffee:21:4, <js>:36:18 at new Spi (/home/pi/project/mcp3208/node_modules/adc-pi-spi/node_modules/spi/spi.js:60:29) at new ADC (/home/pi/project/mcp3208/node_modules/adc-pi-spi/lib/index.coffee:20:37, <js>:35:19) at Object.<anonymous> (/home/pi/project/mcp3208/main.coffee:7:9, <js>:12:9) at Object.<anonymous> (/home/pi/project/mcp3208/main.coffee:1:1, <js>:30:4) at Module._compile (module.js:456:26)
/dev/spidev0.0っていうところが怪しそうだと思っていると、以下の記事を発見。
http://www.raspberrypi.org/phpBB3/viewtopic.php?p=132128
/etc/modprobe.d/raspi-blacklist.conf
でSPI通信が遮断されているらしい。
# blacklist spi and i2c by default (many users don't need them) blacklist spi-bcm2708 blacklist i2c-bcm2708
のSPIの部分をコメントアウトする。
# blacklist spi and i2c by default (many users don't need them) #blacklist spi-bcm2708 blacklist i2c-bcm2708
Raspberry piを再起動してもう一度実行する。
$ sudo reboot $ sudo coffee main.coffee
動いた。
sudo coffee main.coffee channel 0 is now 693 channel 1 is now 24 channel 2 is now 40 channel 3 is now 243 channel 1 is now 35 channel 2 is now 0 ...
ソースをのぞいたらspiというnpmライブラリに依存していたので
これを使った方法も試してみる。