2017-03-27 24 views
0

pyfirmataを使用して、アナログピン0(光センサーが接続され、アナログピン0に出力されています)から値を読み取るための基本コードを書きました。何も関係なく出力をnoneにします。私はarduino IDEで同じコードを試してみて、それは正しい答えを与えています。助けてください。arduinoでpyfirmataを読み取っても出力がありません

コードがある:それは数秒後に出力を与える場合でも

from pyfirmata import Arduino, util 
import time 
board = Arduino('/dev/cu.usbmodem1411') 

it = util.Iterator(board) 
it.start() 

board.analog[0].enable_reporting() 

while True : 
      print (board.analog[0].read()) 
      time.sleep(1)  

、それは実際にはシリアルモニタ上に来るセンサー値ではありませんこれは0.29を与えます。この値は0〜1023の間で変化し、これよりもかなり大きい値です。あなたはこのような場合、条件まず、何かを(とanalogfirmataを実行してみてください)する必要が

答えて

0

while True: 
if board.analog[0].read() == None: 
    pass 
else: 
    print("board.analog[0].read()") 
1

のArduinoのアナログピンは直線的に0 1023に0と+ 5Vの間の入力電圧の変換しかし、pyFirmataでは、0と+ 5Vの間の値は、0と1.0のfloat値に直線的に変換されます( )。たとえば、アナログピンの電圧が1Vの場合、 Arduinoプログラムは204付近の値を測定しますが、pyFirmataのread()メソッドをPythonで使用している間は、 浮動小数点値は0.2となります。

+0

素敵な情報!あなたの答えは(一見すると)奇妙な値(例えば、0.29)を説明します。しかし、なぜOPが時には出力値として「None」を見ていたのか、という考えはありますか? – evadeflow

+0

そのため、ピンを入力ピンとして定義する必要があります。ピンを入力として定義すると、値を読み取ることができます。また、firmata GUIを使用してクロスチェックすることもできます。 –

関連する問題