実現したいこと
Arduino DueでdigitalWrite()とSerial1.write()の切り替えをしたいです。
しかしdigitalWrite()からSerial1.write()を実行すると正しくシリアル通信をすることができません。
シリアルデータを送信すると1回目の送信には成功しますが、2回目以降は0が送信されてしまいます。
ちなみにArduino Megaでは切り替えをすることができていて、通信することができます。
原因と下記の理想の受信データにする方法を教えていただきたいです。
※この対象Dueの通信相手は別DueのSerial1のtx/rxで、その別DueはSerial1で受信したデータをそのまま16進数でUSBケーブルで接続したPCのシリアルモニタに送っています。
該当のソースコード
Arduino
1void setup() { 2 const byte txData[6] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }; 3 4 //Serial1.write (1回目) 5 Serial1.begin(9600); 6 Serial1.write(txData, 6); 7 Serial1.end(); 8 delay(1000); 9 10 //digitalWrite 11 pinMode(18, OUTPUT); 12 digitalWrite(18, LOW); 13 delay(50); 14 digitalWrite(18, HIGH); 15 delay(100); 16 17 //Serial1.write (2回目以降) 18 for(byte i = 0; i < 5; i++) 19 { 20 Serial1.begin(9600); 21 Serial1.write(txData, 3); 22 Serial1.flush(); 23 Serial1.end(); 24 delay(1000); 25 } 26} 27 28void loop() { 29 30}
シリアルモニタ(理想の受信データ)
AA BB CC DD EE FF AA BB CC AA BB CC AA BB CC AA BB CC AA BB CC
シリアルモニタ(実際の受信データ)
AA BB CC DD EE FF 00
接続図
補足情報
【Arduino Due】
https://store-usa.arduino.cc/collections/boards/products/arduino-due
https://content.arduino.cc/assets/A000056-full-pinout.pdf
マルチポスト
https://teratail.com/questions/h3km9w6nkmhjgm
https://qiita.com/alyn/questions/78d9963e81f53ab13f75
https://ja.stackoverflow.com/questions/91802/digitalwrite%e3%81%a8serial1-write%e3%81%ae%e5%88%87%e3%82%8a%e6%9b%bf%e3%81%88%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6
回答2件
あなたの回答
tips
プレビュー