

### 実現したいこと

Arduino DueでdigitalWrite()とSerial1.write()の切り替えをしたいです。  
しかしdigitalWrite()からSerial1.write()を実行すると正しくシリアル通信をすることができません。  
シリアルデータを送信すると1回目の送信には成功しますが、2回目以降は0が送信されてしまいます。  
ちなみにArduino Megaでは切り替えをすることができていて、通信することができます。  
原因と下記の理想の受信データにする方法を教えていただきたいです。  
※この対象Dueの通信相手は別DueのSerial1のtx/rxで、その別DueはSerial1で受信したデータをそのまま16進数でUSBケーブルで接続したPCのシリアルモニタに送っています。

### 該当のソースコード

[code]

    void setup() {
        const byte txData[6] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };
    
        //Serial1.write (1回目)
        Serial1.begin(9600);
        Serial1.write(txData, 6);
        Serial1.end();
        delay(1000);
    
        //digitalWrite
        pinMode(18, OUTPUT);
        digitalWrite(18, LOW);
        delay(50);
        digitalWrite(18, HIGH);
        delay(100);
    
        //Serial1.write (2回目以降)
        for(byte i = 0; i < 5; i++)
        {
            Serial1.begin(9600);
            Serial1.write(txData, 3);
            Serial1.flush();
            Serial1.end();
            delay(1000);
        }
    }
    
    void loop() {
        
    }
    
[/code]

### シリアルモニタ(理想の受信データ)

[code]

    AA BB CC DD EE FF
    AA BB CC
    AA BB CC
    AA BB CC
    AA BB CC
    AA BB CC
    
    
[/code]

### シリアルモニタ(実際の受信データ)

[code]

    AA BB CC DD EE FF
    00
    
    
[/code]

### 接続図

[![画像の説明をここに入力](https://i.stack.imgur.com/ljd5b.png)](https://i.stack.imgur.com/ljd5b.png)

### 補足情報

【Arduino Due】  
<https://store-usa.arduino.cc/collections/boards/products/arduino-due>  
<https://content.arduino.cc/assets/A000056-full-pinout.pdf>

【データシート】  
<https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-11057-32-bit-
Cortex-M3-Microcontroller-SAM3X-SAM3A_Datasheet.pdf>

### マルチポスト

<https://teratail.com/questions/h3km9w6nkmhjgm>  
<https://qiita.com/alyn/questions/78d9963e81f53ab13f75>  
[digitalWrite()とSerial1.write()の切り替えについて](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)


CC BY-SA 4.0
2022-10-25T02:26:21.533
91802
2022-10-25T16:29:18.083
2022-10-25T05:24:22.850
55013
55013
question
arduino
digitalWrite()とSerial1.write()の切り替えについて


以下の通りに書き換えれば同じ動作をさせることができそうです。  
根本的な解決ではありませんが、これで解決にします。

**変更前:**

[code]

    digitalWrite(18, LOW); delay(50);
    
[/code]

**変更後:**

[code]

    uint8_t Zero[1] = { 0 }; Serial1.begin(160); Serial1.write(Zero, 1);
    
[/code]


CC BY-SA 4.0
2022-10-25T07:39:07.877
91808
2022-10-25T16:29:18.083
2022-10-25T16:29:18.083
3060
55013
91802
answer