Arduinoでシリアル通信

Mac(開発機)とArduinoの間は、USBケーブルで接続されている。USBケーブルは電源の供給だけではなく、シリアル通信という通信手段を用いた情報のやりとりが可能である。

以下のプログラムはシリアル通信を行い、LEDのON/OFFをコントロールするものである。



#define LED_PIN 13

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

void loop(){
  int inputchar;
  inputchar = Serial.read();  //シリアル通信で読み込む

  if(inputchar != -1){  //読み込んだ値が-1でなければ以下を実行
    switch(inputchar){
      case 'o':      //oを読み紺んだ場合
      Serial.print("LED ON");
      Serial.println("");    //改行
      digitalWrite(LED_PIN, HIGH);
      break;
      case 'p':      //pを読み込んだ場合
      Serial.print("LED OFF");    //改行
      digitalWrite(LED_PIN, LOW);
      break;
    }
  }
}

ビルド&アップロードをしたら、Tools > Serial Monitor をクリック。窓にoやpを入力すると、それに応じてLEDの点灯をコントロールすることができる。



IDEを用いないで、InoとpicocomによりSerial通信をターミナル上で行う。

#作業ディレクトリ作成
$ mkdir Serial_ino
$ cd Serial_ino

#プロジェクトの生成
$ ino init

#デフォルトでsrc/に生成されるプロトタイプのスケッチを消去
$ rm src/sketch.ino

#新たにスケッチを作成
$ vim src/Serial.ino

#ビルド
$ ino build

#アップロード
$ ino upload

#Serial Monitorとしてpicocomというアプリケーションを使用する。Macportsからインストール。
$ sudo port selfupdate
$ sudo port install picocom

#シリアル通信を実行
$ ino serial


'o'や'p'を入力すると、リアルタイムに通信が行われ、LEDの点滅に反映されるのが楽しい。

【参考文献】
高橋隆雄『たのしい電子工作 Arduinoで電子工作をはじめよう』秀和システム 2013
Massimo Banzi (著), 船田 巧 (翻訳)『Arduinoをはじめよう 第2版』2012