Ardino・Processingのシリアル通信を行う。

シリアルポートを選択

Ardino側からツール → シリアルポート → ポートを選択(ハードウェアによってそれぞれ違います。)
koo

Ardino側のプログラム

ここから下記、プログラムをArdino側に書き込む

int val;

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

void loop() {
  if(Serial.available() > 0) {
    val = Serial.read();
    if(val == 1) {
      digitalWrite(13, HIGH);
    }
    else {
      digitalWrite(13, LOW);
    }
  }
}

Processing側のプログラム

ここから下記、プログラムをProcessing側に書き込む

// シリアルライブラリを取り入れる
import processing.serial.*;

// myPort(任意名)というインスタンスを用意
Serial myPort;

int on = 0;

void setup(){
  // 画面サイズ
  size(128, 128);

  // シリアルポートの設定
  myPort = new Serial(this,"/dev/cu.usbmodem1421",9600);
  myPort.write(0);
}

void draw() {
  if(on == 1) {
    // 背景色を白に設定
    background(255);
  }
  else {
    // 背景色を黒に設定
    background(0);
  }
}

void mouseClicked() {
  if(on == 0) {
    on = 1;
  } else {
    on = 0;
  }
  myPort.write(on);
}

実行結果

Processingの画面がボタンになります。
Processingの画面が黒なら消灯。白なら点灯というようにLEDが反応します。

これでProcessingからArdinoを操作することが可能です。

ちょっとしたトラブル

ここまでしましたがちょっとした疑問
今回は使用していないがなぜか import processing.serial.*; を使用した際に
ポート番号がちゃんと取れてない気がする。Serial.list()[n];をしようしたのに番号が取れない。
これは問題なのでここの箇所を整理する必要があるので次回はもう一度確認をしてみたいと思います。


スポンサーリンク


Originally posted 2016-01-01 15:17:53.