ATMELのAT-Tiny26,ATmega,R8Cなどのワンチップマイコン,C言語,JAVAなどのプログラミング言語の入門のためのページです.サンプルプログラムを中心に紹介します.他にもLinixや数学ソフトなどの紹介も行います.

このブログを検索

あなたは 番目のお客様です.

2012年12月3日月曜日

AD変換の値をProcessingでPC上のウィンドウに表示する

AD変換の値をProcessingでPC上のウィンドウに表示します.
AD変換とシリアル送信にはArduinoを使う.
Arduinoは繰り返しAD変換を行い,バイトデータとしてシリアル送信する.
AD変換の入力には可変抵抗の値やセンサの出力をつなげる.
PCでは,Processingを使い,シリアル送信データで,ウィンドウにオブジェクトを表示する.
図のy座標にシリアル送信データを使う.
データの変化により,オブジェクトが上下する.

Arduinoのプログラム

void setup(){
  Serial.begin(9600);
}
void loop(){
Serial.write(analogRead(0)>>2);//10bits to 8bits
delay(20);//wait 20 ms
}

Processingのプログラム

import processing.serial.*;
Serial myPort;
int y;
void setup(){
size(300,300);//window size
myPort =new Serial(this,Serial.list()[0],9600);//set Serial
}
void draw(){
background(255,255,255);//white
fill(255,0,0);//red
rect(150,y,10,10);
}

void serialEvent(Serial p){
y=myPort.read();
}

2チャンネルの送信
void setup(){
  Serial.begin(9600);
}
void loop(){
Serial.write(255);
Serial.write(analogRead(0)>>2);//10bits to 8bits
Serial.write(analogRead(1)>>2);//10bits to 8bits
delay(20);//wait 20 ms
}

受信データを縦横の値として表示
import processing.serial.*;
Serial myPort;
int i=0,d,x,y;
void setup(){
size(500,500);//window size
myPort =new Serial(this,Serial.list()[0],9600);//set Serial
}
void draw(){
background(255,255,255);//white
fill(255,0,0);//red
rect(x*2,y*2,10,10);
}

void serialEvent(Serial p){
d=myPort.read();
if(d==255){i=1;}
else if(i==1){x=d;i++;}
else if(i==2){y=d;}
}