Java 経由で Pi の GPIO にアクセスしたい。はい、Pi4J があることは知っていますが、433mhz 信号を送信する RCSwitch-Pi (github 上) というライブラリを使用する必要があります (実際にはそれ以上のことができると思いますが、それが必要です)
問題は、単純な C++ からライブラリ自体を使用すると、電源プラグを制御でき、信号が転送されることです。しかし、Java から JNI 経由で使用すると、GPIO ピンがトリガーされることはありません。確認のために LED を接続しましたが、電流が発生しません。関数を呼び出すスクリプトのポイントまでずっと行きます
digitalWrite(this->nTransmitterPin, HIGH);
delayMicroseconds( this->nPulseLength);
}
しかしそれだけです。実際には「digitalWrite」は実行しませんが、Java から呼び出されていない場合は実行します。
はい、SUDO権限で実行したので、それは問題ではありません:-/
また、これは一種の好奇心によるものです。
コードでは「delayMicroseconds」とあり、変数「nPulseLength」は 300 に設定されています。これは、次の振幅が呼び出される前に、各振幅が 300 ミリ秒に設定されることを意味します。したがって、次のように簡単にできます。
_ _
| |_| |_
1010か何かのために。とにかく、433mhz パルスでは、各波の長さが 60cm である必要があります。つまり、次のようになります。
2.30947 ナノ秒 * 光速 = 69.2361688 センチメートル
これは、GPIO スイッチが 2.30 ナノ秒以内に 0 から 1 に切り替わり、0 に戻る必要があることを意味します。これは、1 つの状態スイッチで 300 ミリ秒を大幅に下回る時間ですよね??
ただ疑問に思っている...