pyfirmata で Arduino アナログ ピン (A0-A5) をデジタル ピン (D14-D19) として使用しようとしています。これをテストするために、D14(またはA0)で簡単な点滅テストを行っています:
#!/usr/bin/python
# Blink test with analog as digital pins
# Import required libraries
from pyfirmata import Arduino, util
from pyfirmata import INPUT, OUTPUT, PWM
from time import sleep
# Associate port and board with pyFirmata
port = '/dev/cu.usbmodem1451'
board = Arduino(port)
# Pause to sync
sleep(1)
led = board.get_pin('d:14:o')
time = 1
while True:
led.write(1)
print ("On")
sleep(time)
led.write(0)
print ("Off")
sleep(time)
アナログ ピンをデジタル ピンとして機能させるために、pyfirmata の board.py ファイルを調べました ( https://github.com/tino/pyFirmata/blob/master/pyfirmata/boards.pyの github リポジトリに示されているように) 。行番号3を次から変更しました
digital': tuple(x for x in range(14)),
に
digital': tuple(x for x in range(20)),
Python スクリプトを実行してもエラーは発生しませんが、LED は点滅しません (心配する必要はありません。LED が正しい方向にあることは確かです)。
デジタルピン14をpyfirmataを使用して出力ピンとして効果的にインスタンス化する方法を知っている人はいますか(行のようにled = board.get_pin('d:14:o')
)
ところで (これが何かに影響するとは思いませんが)、私は Yosemite で Mac OSX を実行しています。ありがとうございました!