2008年6月4日水曜日

CatCam途中経過

やすこ

とりあえずp106までソースの写経が終わったので貼付け。Thresholdで、いっこ前の値といまとって来た値がどのくらい違うかでネコが来たかどうか判断します。いわゆる差分ってやつですね。

エラーはないんだけど、動作の確認はしてないからあんまり信用しないでください。
明日には秋葉原いってきますよ〜

import processing.serial.*;

int graphPosition = 0;
int linefeed = 10;
Serial myPort;
int sensorValue = 0;


int prevSensorValue;
boolean catOnMat = false;
int threshold = 320;//閾値のこと

int timeThreshold = 1;
int timeLastSent[] = {
hour(), minute() - 1
};

void setup(){
size(400,300);
println(Serial.list());

myPort = new Serial(this, Serial.list()[0],9600);

myPort.bufferUntil(linefeed);

}

void draw(){
if (sensorValue > threshold){
if (prevSensorValue <= threshold){
delay(100);//読み込みを減らすことで誤差をなくす
catOnMat = true;
sendMail();
}
}else{
if (prevSensorValue >= threshold){
catOnMat = false;
}

}
prevSensorValue = sensorValue;

}

void serialEvent(Serial myPort){

String myString = myPort.readStringUntil(linefeed);

if (myString != null){

sensorValue = int(trim(myString));


println(sensorValue);
drawGraph();
}
}

void drawGraph(){


int lineHeight = sensorValue/2;
if(catOnMat){
stroke(0,255,0);
}else{
stroke(255,0,0);
}

line(graphPosition, height, graphPosition, height - lineHeight);

if(graphPosition >= width){
graphPosition = 0;
background(0);
}else{
graphPosition++;
}

}

void sendMail(){
int[] presentTime = {hour(), minute()};
print(sensorValue + "\t");
print(presentTime[0] + ":" + presentTime[1] + "\t");
println(timeLastSent[0] + ":" + timeLastSent[1]);

if(presentTime[0] == timeLastSent[0]){
if(presentTime[1] - timeLastSent[1] >= timeThreshold){
timeLastSent[0] = hour();
timeLastSent[1] = minute();
}

}

if(presentTime[0] != timeLastSent[0]){
int minuteDifference = (60 - timeLastSent[1]) + presentTime[1];

if(minuteDifference >= timeThreshold){
println("This is where you'd send a mail.");

timeLastSent[0] = hour();
timeLastSent[1] = minute();
}
}
}

1 件のコメント:

utano さんのコメント...

お疲れちゃん!昨日の夜は死んでしまったので今日から3章始めたいと思います。