Arduino GY-30デジタル光強度センサの問題解決策
1394 ワード
GY-30デジタル光強度センサ通過I²C通信プロトコルがArduinoにアクセスする過程におけるいくつかの問題と解決策:
ネット上では2つのバージョンが流行しています.バージョン1:https://blog.csdn.net/zjnsky/article/details/51732943バージョン2:https://blog.csdn.net/ubibots/article/details/51613360
私はバージョン1のコードを使って、間違っていないことを発見して、シリアルポートの印刷はずっと光の照射強度が0であることを表示して、とてもおかしくて、同じく長い間研究して、Wireのこのライブラリのファイルに行って関数の実現を見て、それから発見します
この行のコードに問題が発生しました.このrequestFromのネット上の説明は次のとおりです.
Wire.requestFrom()の説明:
プライマリ・デバイスは、read()またはavailable()でプライマリ・デバイスによって受け入れられるデバイスから1バイトを要求する.Wire.requrstFrom(addtess,quantity) Wire.requrstFrom(addtess,quantity,stop)
パラメータ:addtess:7ビットのデバイスアドレスquantity:要求された数stop:ブール形,‘1’は要求終了後に停止コマンドを送信し,バスを解放する.0’は、要求を送信し続けて接続を維持する.
リターン:マシンから受信したバイト数のバイト形.
しかし、requestFromを前後に付ける必要はありません.
この2つの文は,それぞれ1回のデータ転送を開始し,1回の転送を終了する.すなわちrequestFromの行コードを以下に変更することで、デバイスからプライマリデバイスへデータを送信するここでgy 30(デバイスからarduinoボード(プライマリデバイス)への光強度の収集量を完了することができる
ネット上では2つのバージョンが流行しています.バージョン1:https://blog.csdn.net/zjnsky/article/details/51732943バージョン2:https://blog.csdn.net/ubibots/article/details/51613360
私はバージョン1のコードを使って、間違っていないことを発見して、シリアルポートの印刷はずっと光の照射強度が0であることを表示して、とてもおかしくて、同じく長い間研究して、Wireのこのライブラリのファイルに行って関数の実現を見て、それから発見します
Wire.requestFrom(ADDR, 2); // 2byte every time
この行のコードに問題が発生しました.このrequestFromのネット上の説明は次のとおりです.
Wire.requestFrom()の説明:
プライマリ・デバイスは、read()またはavailable()でプライマリ・デバイスによって受け入れられるデバイスから1バイトを要求する.Wire.requrstFrom(addtess,quantity) Wire.requrstFrom(addtess,quantity,stop)
パラメータ:addtess:7ビットのデバイスアドレスquantity:要求された数stop:ブール形,‘1’は要求終了後に停止コマンドを送信し,バスを解放する.0’は、要求を送信し続けて接続を維持する.
リターン:マシンから受信したバイト数のバイト形.
しかし、requestFromを前後に付ける必要はありません.
Wire.beginTransmission(ADDR);
Wire.endTransmission();
この2つの文は,それぞれ1回のデータ転送を開始し,1回の転送を終了する.すなわちrequestFromの行コードを以下に変更することで、デバイスからプライマリデバイスへデータを送信するここでgy 30(デバイスからarduinoボード(プライマリデバイス)への光強度の収集量を完了することができる
Wire.beginTransmission(ADDR);
Wire.requestFrom(ADDR, 2);
Wire.endTransmission();