問題タブ [firmata]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - SerialPortEventListenerの実装
私は、シリアルプロトコルを介してArduinoを制御できるFirmataプロトコルで遊んでいます。DATA_AVAILABLEイベントをリッスンしているSerialPortEventListenerを使用してセンサー値を読み取っています。しかし、更新されたセンサー値がアプリケーションによって登録されるまでに1秒かかる多くの遅延に気付きました。プロトコルは、57600のボーレートで実行されます。私の質問は、イベントリスナーが別のスレッドで実行されるのか、それともアプリケーションとリスナーは同じスレッドで実行され、私のアプリケーションは物事を遅くします。
編集:私の自己を明確にするために、私は理論的には別のスレッドでシリアル送信を読み取るか、イベントリスナーを使用する方が速いかどうかを尋ねていますか?
python - PythonPyQtタイマー会社
私はPythonにかなり慣れておらず、firmataを使って作業しています。arduinoで遊んでみようとしています。
これが私がしたいことです:
- デジタル出力としてLEDを使用してarduinoを設定します
ポテンショメータをアナログ0に設定します
PyQtタイマーを設定して、
アプリケーションのポテンショメータの位置を更新しますPyQtでしきい値を設定してLEDをオンにします(アナログ入力の解像度は1024ビットなので、
しきい値として800と言います)
私はこのfirmataライブラリを使用しています:リンク
これが私が問題を抱えているコードです:
PyQt4からsysをインポートします。firmataからQtCore、QtGuiをインポートします。
エラーメッセージが表示されます:
トレースバック(最後の最後の呼び出し):ファイル "D:\ Programming \ Eclipse \ IO Demo \ src \ control.py"、行138、myapp = MainWindow()ファイル "D:\ Programming \ Eclipse \ IO Demo \ src \ control.py "、56行目、init self.appTimer.event(self.updateAppTimer())ファイル" D:\ Programming \ Eclipse \ IO Demo \ src \ control.py "、60行目、updateAppTimer self.analogPosition = self.a.analog_read(self、0)TypeError:analog_read()は正確に2つの引数を取ります(3つ指定)
'self'を削除すると、同じエラーメッセージが表示されますが、引数が1つだけ指定されています。
私が気付いていないPythonは暗黙のうちに何をしていますか?
ブロッククォート
bluetooth - ArduinoでBluetooth経由のFirmata?
私はFirmataがArduinoUnoで正常に動作し、ケーブルUSBを介してProcessingと通信しています。
ケーブルを取り除き、Bluetoothトランスポート(BlueSMIRFモジュールを使用)を介して接続を実行したいと思います。(接続されていない)USBケーブルインターフェイスではなくBTモジュールを使用するようにFirmataに指示するために、Firmataに何をする必要があるのかわかりません。特に、Firmata自体をハックして、初期化コードを追加する必要がありますか?
- 私が使用しているBTモジュールに固有、または
- より一般的には、ケーブル接続されたUSB以外のポートを使用するようにFirmataに指示する必要がありますか?
ありがとう
D
file-io - Arduino Mega 1280 を使用した Firmata、すべての入力ピンを読み取ることができない
Arduino Mega 1280 を入手しましたが、Firmata 経由で通信したいと考えています。それは簡単に聞こえます...
だから私の問題:Arduino 1.0に含まれているArduino用のStandardFirmataファームウェアを使用すると、出力ピンを設定し、それらに信号を送信できます((ピン24のLEDを強調表示):
しかし、Mega からデジタル入力を読み取ることができません。私が知ったように、一部の人々は 13 以上のポートでの読み取りに問題を抱えていました。確認できません。入力信号はポート 23 から始まります。例:
これで、Mega に AllInputsFirmata をインストールしました。Arduino 1.0 にもプリインストールされています。これで、デジタル入力から読み取ることは問題ありません: 例:
しかし、今回は信号を送信できません。
それで、何が起こっているのですか?
(はい、FirmataTest ソフトウェアでテストしましたが、すべて問題ありません!)
c# - nRF24 上のフィルマータ
技術的な問題がいくつかあります... arduino に Firmata を使用しようとしていますが、シリアル インターフェイスではなく nrf24 を使用しています。nRF24 通信をテストしましたが、問題ありません。Firmata over Serial もテストしましたが、動作します。
ベースデバイスはシンプルな「シリアルリレー」。シリアルで利用可能なデータがある場合は、それを読み取り、nRF24 ネットワーク経由で送信します。ネットワークから利用可能なデータがある場合は、それを読み取り、シリアル経由で送信します。
ノードデバイスは少し複雑です。書き込みと読み取りのオーバーライドを追加したばかりのカスタム標準Firmataがあります。
loop
メソッドで処理されるオーバーライド ID を次のように読み取ります。
Firmataは、から直接データを読み取る方法processInputOverrride
をほとんど変更していません。この方法では、ネットワークからメソッドにデータを渡します。これはテスト済みで、正常に動作するはずです。processInput
processInput
FirmataSerial
Write メソッドは別の方法でオーバーロードされます。カスタム メソッドに設定でき、そのFirmata.cpp
カスタム メソッドを使用してデータを送信するために使用できるメソッド ポインターを追加しました。次に、各呼び出しの後にカスタム メソッド呼び出しを追加しましたFirmataSerial.write()
。
次に、オーバーライドされた書き込みメソッドを、バイトの代わりにネットワークに書き込むだけのカスタム メソッドに設定しましたSerial
。
すべてが正常に機能しているように見えますが、一部のデータが反転しているように見えるだけです。私は、sharpduino (C#) を使用して、単純なデジタル ピン トグルを実行しています。出力は次のようになります: (< は BASE から送信され、> は BASE に送信されます)
その最後の行は反転しました。そのため、受信したバイトを反転するだけでよいとは思いません。そして、それはその最初のコマンドで機能しました。しかし、何かが起こり、通信が再び停止します。
では、ここで何が問題になるのでしょうか? フィルマータとの通信はできているようですが、何かがおかしい...
- 編集 -
私はその問題を解決しました。Serial.write()
問題は、sysex コールバックで呼び出しが見られなかったことです。それが解決されたので、別の問題に遭遇しました...すべての段階が正しく通過し(推測します)、ピン状態を要求してもノードから応答がありません
応答がありません。なぜそれが起こるのでしょうか?ノードはすべてのメッセージを正しく受信し、ピン状態を処理するためのコードが存在します。
arduino - 処理中に Arduino が見つかりませんか?
Processingで Arduino ライブラリを使用しています。しかし、スケッチの例はどれも機能していません。Arduino.list[0]
と を使用してシリアルポートを変更しようとしましたArduino.list[1]
。それ以上の数値を選択するとエラーがスローされるため、シリアル デバイスが 2 つしか表示されないと想定します。
私のArduinoは接続され、動作しています。Arduinoアプリケーションで問題なく使用できます。
他に考えられる問題は何ですか?
トラブルシューティングに使用したArduino and Processingのページにサンプル スケッチがあります。
controls - Firmata サーボ制御
xml フィードを読み取ってサーボを制御し、値に応じて数度回転する必要がある最後の部分でプロジェクトに行き詰まっています。私は速度、方向などのさまざまな風速属性を示すyahooの天気xmlフィードを使用しています. LED に関してはすべて問題なく動作しますが、サーボに関してはどうすればよいかよくわかりません。Arduino のスイープの例では問題なく動作しますが、私は Firmata を使用しており、そのコードは少し異なると思います。最初に標準Firmataを使用してLEDを制御しましたが、サーボではうまくいきませんでした. 異なる COM ポートには何も割り当てられていません。残念ながら、サーボをプログラムしようとすると、サーボの角度や停止するタイミングを制御できずに、速くなったり遅くなったりするだけです。arduinoでは彼らの例で動作しますが、Firmataでは適応できないようですので、Firmataでの処理でも同様です。私はすでに2日間これに行き詰まっています.月曜日までに終わらせなければならないので、何か助けていただければ幸いです.
コードは次のとおりです。
これらすべての prinLn(1-5) は明らかに、何か問題があるかどうかを確認するための単なるコード チェッカーですが、そうではないと思います。角度や速度以外の特定の制御を制御できないだけですが、ほとんどの場合、USBを抜くまで回転が止まりません:)
適切に動かすには、arduinoの例のこの部分をどこかに挿入する必要があると思います:
しかし、試したのでよくわかりませんが、適切にプログラムしていない可能性があります。
ありがとう!
node.js - URM37 (rangefinder) を Arduino に接続し、nodeJS を介してデータを読み取る方法
この距離計を購入しましたhttp://www.dfrobot.com/wiki/index.php/URM37_V3.2_Ultrasonic_Sensor_(SKU:SEN0001)
そして今、nodeJSで動作させるのに苦労しています。私のセットアップは、「firmata」ライブラリを使用したArduino UNOとnodeJです。
試したこと: 1. Rangefinder をネイティブの Arduino IDE でテストしたところ、動作しました。2. 次に、Arduino IDE から EEPROM にデータを書き込みました (以下のコード例):
マニュアルと同じコードを作成して動作させようとしましたが、nodeJS で失敗しました。
});
みんな私を助けてください!
c++ - 未定義の参照 libfirmataplus のコンパイルで問題が発生しました
ubuntu にインストールされている libfirmataplus をダウンロードしましたが、コンパイルできません。
残念ながら、エラーはライブラリ .so の私のコード ut からではありません。
コンパイルしようとするコードは次のとおりです:(例から取得)