公式の https://www.dexterindustries.com/GrovePi/programming/using-multiple-grovepis-together/ をみて
ボードのアドレスを変更しようとするのだけど、
syntax error at /etc/avrdude.conf:356
というエラーに遭遇し、アドレスがデフォルトの04のまま変わらず、
苦しんだので解決をメモ。
結論
/etc/avrdude.conf を /etc/avrdude.conf.dpkg-distで上書きしたらアドレスの書き換えに成功しました。
sudo cp /etc/avrdude.conf /etc/avrdude.conf.old
sudo cp /etc/avrdude.conf.dpkg-dist /etc/avrdude.conf
解決後のスタック起動までの手順
- 既存のGrovePiを外して、新しいGrovePiをラズパイに設置
- cd ~ && git clone https://github.com/DexterInd/GrovePi
- cd GrovePi/Firmware
- chmod +x firmware_update.sh
- cd ../Script/multi_grovepi_installer/
- sudo chmod +x multi_installer.sh
- sudo ./multi_installer.sh
- Any other key to exitで 3 をタイプしてenter
- インストールが終わって、03がアクティブになっていることを確認
- sudo shutdown -h now
- 既存のGrovePiを新しいGrovePiの上にドッキング。手元のセンサーを両方に取り付けて電源ON
- cd GrovePi/Software/Python/
- 取り付けたセンサーに対応したスクリプトを python grovepi_[sensor].pyで実行して値がとれることを確認
手元に IR Distance Interrupter v1.2 があったので、D3にそれぞれ設置して、
センサー値が取得できること確認
サンプルソース
ir.py
import time
import grovepi
import grovepi3
# Connect the Grove Infrared Distance Interrupt Sensor to digital port D4
# SIG,NC,VCC,GND
sensor = 3
grovepi.pinMode(sensor,"INPUT")
grovepi3.pinMode(sensor,"INPUT")
while True:
try:
# Sensor returns LOW and onboard LED lights up when the
# received infrared light intensity exceeds the calibrated level
if grovepi.digitalRead(sensor) == 0:
print ("addr 04 found something")
else:
print ("addr 04 nothing")
if grovepi3.digitalRead(sensor) == 0:
print ("addr 03 found something")
else:
print ("addr 03 nothing")
time.sleep(.5)
except IOError:
print ("Error")
実行結果.txt
addr 03 nothing
addr 04 nothing
addr 03 nothing
addr 04 nothing
addr 03 nothing
addr 04 nothing
addr 03 nothing
addr 04 nothing
addr 03 found something
addr 04 nothing
addr 03 found something
addr 04 found something
addr 03 found something
addr 04 found something
addr 03 found something
addr 04 found something
addr 03 found something
addr 04 found something
addr 03 found something
addr 04 found something
addr 03 found something
無事に動きました。