Scientific Journey

私の冒険記録。たまに回り道。

【PsychoPy】Arduinoとシリアル通信をさせる。

Adruino(Galileoとのシリアル通信)をBuilder modeでする。

作成したもの
  1. PsychoPy側から、文字列(一行)を送信
  2. Arduino側で受け取ったら、その値をPC側に送信
  3. PsychoPyのプログラムにて、表示
用意するもの

Arduino(Galileo)
・PCとArduinoをつなぐためのケーブル

コード

Arduino
#define num 30//一度に送れる文字数

void setup() {
  Serial.begin(9600);//シリアル通信開始
}

void loop() {
  char incomingByte = 0;  // 受信データ用
  char sended_value[num] = {0};
  int i = 0;

  //シリアル通信
  while(1){
    if(Serial.available() > 0){
      incomingByte = Serial.read(); // 受信データを読み込む
      if(incomingByte > 47 && incomingByte < 59 ){ //アスキーコード10進数(47~59がきたら読み込み)
        sended_value[i] = incomingByte;//配列に入れる
        Serial.print(sended_value[i]);
        i++;
      }
      if(incomingByte == '.'){Serial.print(".");}
      if(incomingByte == ';'){Serial.println(";");break;}//;が来たらwhile文終了。
    }
    else{break;}
  }
}

※ 注意
Arduino Programはパソコン側から「0,1,2,3,4,5,6,7,8,9」「",",";"」しか受信をせず
。「;」を受信するとそこまでが1行とみなされる。
一回に受信できるコードは一行まで。

PsychoPy側コンポーネント設定

キーコンポーネント設定

f:id:an-modoki:20160928073723p:plain

コードコンポーネント設定

Begin Experiment
f:id:an-modoki:20160928073913p:plain

Begin Routine
f:id:an-modoki:20160928073937p:plain

End Experiment
f:id:an-modoki:20160928074024p:plain

結果

f:id:an-modoki:20160928074636p:plain