リニアアクチュエータの伸長と移動を制御する無限ループを実行しようとしています。延長量はユーザ入力によって0〜9の値で制御されます。つまり、9に達して入力すると、アクチュエータは最大延長まで伸び、5に達して入力すると、アクチュエータは50%延長に戻ります。PythonバージョンのArduinoのSerial.available
私はPi-2バスに接続されたMCP3008を使ってPINE A64 +を使用しています.Arduino +アクチュエータとスタンドアロンの組み込みLinuxセットアップを使って、私が使っていた設定を置き換えようとしています。
バックグラウンドで無限ループを実行しているときに、プログラムがraw_inputを一貫して監視する方法についてはわかりません。私は次のように私のArduinoのコードでこれを行うことができました:
if (Serial.available() > 0) {
userInput = Serial.read()-48;
Serial.println(userInput);
}
は、どのように私はPythonでこのような何かをやって行くのでしょうか?私はPySerialのinWaitingコマンドを使ってみましたが、それは私に同じ結果を与えません。基本的に私はプログラムが2 possibilitesのいずれかをしたい:
- 利用ANのみ にユーザの入力がある場合に使用する変数を新しい値を割り当てる、または監視が
- にループ内のif文入力がある場合は、ループを中断し、ループが使用する変数に新しい値を割り当て、ループを再入力します。
# begin loop w/ while True statement # using if statement to enter only if there is user input, otherwise pass over if Whatever: Terminal[0] = user input getVal = analogRead(0, PI2CLK, PI2MOSI, PI2MISO, PI2CS) if (positionArray[Terminal[0]] - 10) < getVal < (positionArray[Terminal[0]] + 10): PWM0A.stop() PWM0B.stop() elif getVal > positionArray[Terminal[0]]: PWM0A.start(100) PWM0B.stop() elif getVal < positionArray[Terminal[0]]: PWM0A.stop() PWM0B.start(100) # end loop
このついて行くの最良の方法は何ですか:
それは次のようになりますか?事前に感謝:)
ハードウェア/ソフトウェアの設定に関する情報をもう少し提供してください。どのようにarduino respでPythonを実行していますか?あなたはどのようにarduinoにインターフェイスしますか? – albert
@albert私はPi-2バスに接続されたMCP3008でPINE A64 +を使用しています。 Arduinoは関与していません。私はArduinoで行った設定をスタンドアロンの組み込みLinuxシステムで置き換えるだけです。 – LUX