「あるセンサ」と 「arduino(Aとします)」 をI2C通信させています
この「A」と「別のarduino(Bとします)」をシリアル通信させてAが取得しているセンサの値をBと共有し,
さらに「B」と「PC」をUSBケーブルを通じてシリアル通信させ,PCのシリアルモニタ上で見られるようにしたいと思っています.
SoftwareSerialを用いて以下のようにプログラムを組んでみたのですが,PC側のシリアルモニタでは,最初0が表示されたあとdelayごとにずっと-1が表示され続けてしまいます.
どこかプログラムにおかしい部分はありますでしょうか.
以下は「A」のコードです
#include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // RX, TX void setup(){ Serial.begin(115200); mySerial.begin(115200); } double P = 0; void loop(){ Serial.println(P); //PCのシリアルモニタにPの値を表示 mySerial.listen(); P = mySerial.read(); //PにmySerial.readでBから持ってきたセンサの値を格納 delay(1000); }
以下は「B」のコードです
#include <Wire.h> #include <AllSensors_DLHR.h> //センサとのI2C通信に必要 AllSensors_DLHR_L10G_8 gagePressure(&Wire); //センサとのI2C通信に必要 #include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // RX, TX void setup(){ mySerial.begin(115200); // ソフトウェアシリアルの初期化 Wire.begin(); gagePressure.setPressureUnit(AllSensors_DLHR::PressureUnit::PASCAL); //センサとのI2C通信に必要 } double P; //センサの値格納用 void loop(){ gagePressure.startMeasurement(); //センサとのI2C通信に必要 gagePressure.readData(true); //センサとのI2C通信に必要 P = gagePressure.pressure; //Pにセンサの値を格納(Pには間違いなくdouble型のセンサの値が格納できています) mySerial.listen(); mySerial.write(P); delay(1000); }
Bのコード内にI2C通信のライブラリ関係が入っていますが,最終的にdouble型のPの中にセンサの値は格納されていることは確認しています.(シリアル通信でPの値がAから最終的にPCまで渡されないことで悩んでいます)
配線は
センサとAがI2C通信の配線で接続
AとBは2ピンと3ピン同士を接続(USBケーブルで給電)
BとPCがUSBケーブルで接続
です
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/10/01 08:12