私は Arduino mega2560 と EZO EC (Electrical Conductivity) を使用しており、Serial.print() 関数を使用してコマンドを送信しようとしています。Arduino IDE 1.6.7 を使用しています。
オンラインで見つけた、正常に動作するように見えるコードがいくつかあります。しかし、私のコードが機能しない理由を知りたいです。EC センサーが、送信しているデータを取得していないようです。データが送信されていないようです。
私はそれが正常に動作し、期待どおりに動作するコードでセットアップをテストしたので、それが私の接続ではないことを知っています.
オンラインで見つけたコードは次のとおりです。
String inputstring = "";
String sensorstring = "";
boolean input_string_complete = false;
boolean sensor_string_complete = false;
void setup() {
Serial.begin(9600);
Serial3.begin(9600);
inputstring.reserve(10);
sensorstring.reserve(30);
}
void serialEvent() {
inputstring = Serial.readStringUntil(13);
input_string_complete = true;
}
void serialEvent3() {
sensorstring = Serial3.readStringUntil(13);
sensor_string_complete = true;
}
void loop() {
float wt = 28.9;
String tempCal = "T,";
tempCal += wt;
if (input_string_complete == true) {
Serial3.print(inputstring);
Serial3.print("\r");
inputstring = "";
input_string_complete = false;
}
if (sensor_string_complete == true) {
if (isdigit(sensorstring[0]) == false) {
Serial.println(sensorstring);
}
else
print_EC_data();
}
sensorstring = "";
sensor_string_complete = false;
}
}
void print_EC_data(void) {
char sensorstring_array[30];
char *EC;
char *TDS;
char *SAL;
char *GRAV;
float f_ec;
sensorstring.toCharArray(sensorstring_array, 30);
EC = strtok(sensorstring_array, ",");
TDS = strtok(NULL, ",");
SAL = strtok(NULL, ",");
GRAV = strtok(NULL, ",");
Serial.print("EC:");
Serial.println(EC);
Serial.print("TDS:");
Serial.println(TDS);
Serial.print("SAL:");
Serial.println(SAL);
Serial.print("GRAV:");
Serial.println(GRAV);
Serial.println();
//f_ec= atof(EC);
}
これが私のコードです:
void setup() {
Serial.begin(9600);
Serial3.print(9600);
}
void loop() {
Serial3.print("R/r");
Serial.print("R/r");
delay(2000);
}
Serial3.print はセンサーに送信されません。しかし、他のコードも Serial3.print() 関数を使用して文字列を送信し、正常に動作します。何が間違っているのかわかりません。
センサーから入ってくるものを取り込む手順を書く必要があることは理解しています。しかし、そもそもセンサーに何も送信されていないようです!
どんな助けでも大歓迎です。ありがとうございました