【Arduino】ArduinoのSoftwareSerialを試してみた

はじめに

こんにちは、がんがんです。
Arduinoには2つのSerial通信が存在します。
1つは0ピン、1ピンを使うばいいのSerial通信。もう1つはSoftwareSerialというライブラリを用いる場合です。
今回はこちらのSoftwareSerialを使用した時の備忘録です。

参考記事

shizenkarasuzon.hatenablog.com

Arduinoの日本語ドキュメントも貼っておきます。
www.musashinodenpa.com

躓いた時に参考にした記事

qiita.com

実験

今回行っていく実験は2つのArduino間で通信を行うというものです。
ライブラリはSoftwareSerialを使用しました。

コード

送信側

/*
 *  SoftwareSerial_TX.ino
 *    送信側
 */ 
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);

int LED = 13;
int cnt = 0;

void setup(){
  Serial.begin(9600);
  mySerial.begin(9600);

  pinMode(LED, OUTPUT);
}

void loop(){
  cnt++;
  Serial.print("counter = ");
  Serial.println(cnt);

  mySerial.listen();
  mySerial.write(cnt);

  if(cnt % 2){
    digitalWrite(LED, LOW);
  }else{
    digitalWrite(LED, HIGH);
  }
  delay(1000);
}

受信側

/*
 *  SoftwareSerial_RX.ino
 *    受信側
 */
int LED = 13;

void setup() {
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
}

void loop() {
  while(Serial.available()){
    byte inChar = (byte)Serial.read();
    if(inChar % 2){
      digitalWrite(LED, HIGH);
    }else{
      digitalWrite(LED, LOW);
    }
    delay(10);
  }
}

実験結果

配置

PCと送信側Arduino、送信側Arduinoと受信側Arduinoをそれぞれ接続します。
f:id:gangannikki:20190121014039j:plain

シリアル画面

f:id:gangannikki:20190121013812j:plain

まとめ

今回はSoftwareSerialについて実験してみました。
PySerialを実験した際に1度扱ってみたかったので、実験出来てよかった。