前提・実現したいこと
ESP32からシリアル通信で2つの値を送り、ArduinoUNOで2つの値に受け取りたいと思っています。
webの情報を参考に実施したのですが、UNOで受け取れた値が双方とも0です。
(正確に言うと、ヘッダー付きの計3つを送っているのですが、UNO側ではヘッダーにすべての値が入ってしまい、
残り2つの値にはゼロが入ってしまいます。)
発生している問題・エラーメッセージ
ArduinoUNOにて Serial.println(header); と記載した場合のシリアルモニタ出力は 255 100 200 Serial.println(lat_dis_c); と記載した場合のシリアルモニタ出力は 0 Serial.println(lon_dis_c); と記載した場合のシリアルモニタ出力は 0
該当のソースコード
arduino
1 2(ESP32:送信側) 3 4HardwareSerial mySerial1(1); 5void setup() { 6 Serial.begin(115200); 7 mySerial1.begin(9600, SERIAL_8N1, 32, 33);// ピンを変更 (RX=32, TX=33) 8} 9 10void loop() { 11 int data = 100; 12 int data2 = 200; 13 mySerial1.write(255); 14 mySerial1.write(data); 15 mySerial1.write(data2); 16} 17 18(ArduinoUNO:受信側) 19 20#include <SoftwareSerial.h> 21#define RX_PIN 3 22#define TX_PIN 4 23 24SoftwareSerial mySerial(RX_PIN,TX_PIN); 25 26void setup() { 27 Serial.begin(115200); 28 mySerial.begin(9600); 29} 30 31void loop() { 32 int lat_dis_c; 33 int lon_dis_c; 34 35 if (mySerial.available()>0){ 36 uint8_t header = (uint8_t)mySerial.read(); 37 if (header == 0xFF) // check if incoming byte is header 38 { 39 uint8_t lat_dis_c = mySerial.read(); 40 uint8_t lon_dis_c = mySerial.read(); 41 } 42 43// Serial.println(header); 44 //ここだけをコメント復帰させるとシリアルモニタは 45 // 255 46 // 100 47 // 200 で出力 48 49// Serial.println(lat_dis_c); 50 //ここだけをコメント復帰させるとシリアルモニタは 51 // 0 で出力 52 53// Serial.println(lon_dis_c); 54 //ここだけをコメント復帰させるとシリアルモニタは 55 // 0 で出力 56 } 57} 58 59 60
試したこと
header が配列のようになっているので、要素(header[1]のような記述)を取り出そうと試みたりしたが、
文法エラーと怒られうまくいかない。
補足情報(FW/ツールのバージョンなど)
ArduinoUNO
ESP32-DevModule
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/05 21:36