2018年12月13日 星期四

week14 互動技術筆記@

實作期末作品

從Arduino發送byte資料讓processing接收

發送byte資料後在processing用println()函式印出
以利觀察資料值

processing:
catvx=(data[0]-64)/5.0; //-64是為了要讓值有正負,有了正負就能給予方向
catvy=(data[1]-64)/5.0; //-64的原因是因為得到的資料不為0而是64,需處理後物體才不會亂跑

byte [] data = new byte[3]; //宣告接收資料時所需的變數型態byte
void getData() {
  if (myPort.available()>0) { //如果有收到資料
    myPort.readBytes(data); //就讀取資料
  }
} //接收資料用的函式

Arduino:
void setup() {
  Serial.begin(9600); //設定訊號源為9600
  pinMode(5,INPUT); //設定pin5為按鈕用的腳位
  digitalWrite(5,HIGH); //並將它打開
}

byte data[3]; //發送資料時用的變數型態byte
void loop() {
  int valX=analogRead(A0); //讀取joystick的X值變化
  int valY=analogRead(A1); //讀取joystick的Y值變化
  data[0]=valX/8;
  data[1]=valY/8; //將讀取到的值除以8(縮小範圍值從0~127)並給予data[0] data[1]
  if(digitalRead(5)==LOW) data[2]=1; //如過按鈕按下  data[2]為1
  else data[2]=0; //否則為0
  Serial.write(data,3); //送出資料data[3]
  delay(100); //需讓processing畫面刷新的頻率與Arduino發送資料的頻率同步,可視為幀數
}

沒有留言:

張貼留言