
사용 센서 : Freescale MMA7260 – 제품 UST-SNR-ACCEL (구입처)
아두이노에 업로드용
int gSel1 = 6; // 6번핀 G SELECT1
int gSel2 = 7; // 7번핀 G SELECT2
int sleep = 3; // 3번핀 /SLEEP
int x = 0; // A0 X축
int y = 1; // A1 Y축
int z = 2; // A2 Z축
void setup(){
pinMode(gSel1, OUTPUT);
pinMode(gSel2, OUTPUT);
pinMode(sleep, OUTPUT);
Serial.begin(9600);
// g-Range & Sensitivity
digitalWrite(gSel1, LOW); // LL 1.5g 800 HL 2g 600 LH 4g 300 HH 6g 200
digitalWrite(gSel2, LOW);
digitalWrite(sleep, HIGH); // SLEEP 해제 HIGH
}
void loop(){
Serial.print(analogRead(x));
Serial.print(",");
Serial.print(analogRead(y));
Serial.print(",");
Serial.println(analogRead(z));
delay(10);
}
프로세싱용
import processing.serial.*; // import the Processing serial library
int linefeed = 10; // Linefeed in ASCII
Serial myPort; // The serial port
int graphPosition;
int[] lineXYZ = new int[3];
void setup() {
size(630,480);
background(0);
println(Serial.list());
myPort = new Serial(this, Serial.list()[1], 9600); // [1]은 리스트를 보고 자기가 쓰는 아두이노용 COM포트로 변경
myPort.bufferUntil(linefeed);
}
void draw() {
// 빨간색: X, 녹색: Y, 파란색: Z
stroke(255,0,0);
point(graphPosition,lineXYZ[0]);
stroke(0,255,0);
point(graphPosition,lineXYZ[1]);
stroke(0,0,255);
point(graphPosition,lineXYZ[2]);
if (graphPosition >= width) {
graphPosition = 0;
background(0);
}
else{
graphPosition ++;
}
}
void serialEvent(Serial myPort) {
// read the serial buffer:
String myString = myPort.readStringUntil(linefeed);
// if you got any bytes other than the linefeed:
if (myString != null) {
myString = trim(myString);
int sensors[] = int(split(myString, ','));
for (int sensorNum = 0; sensorNum < sensors.length; sensorNum++) {
print("Senor" + sensorNum + " : " + sensors[0] + "t");
//센서 값(0~1023)을 대략 3으로 나누고(세로 해상도가 480) 근사값 정수만 취해서 각각의 그래프용 좌표에 대입
lineXYZ[sensorNum] = ceil(sensors[sensorNum]/3);
}
println();
}
}
000







댓글 남기기