processingとarduinoをシリアル通信させたいです
メニュー画面で3回ほど選択したら映像が流れるのですが選択画面のときはゆっくり明滅
映像が再生されるときは激しく明滅をさせたいです。現在はこのようなコードになっています
//processing
import processing.video.;
import processing.serial.;
final int SELECT=0;//本当はenumにしたいけど、Processingでenumを使うにはひと手間いるので
final int DIALY=1;
final int MOVIE=2;
int state=SELECT; //0=選択画面、1=日記記事、3=映像
int count=0;//日記ページから戻る回数
int article=0;//0は未選択状態
Serial myPort; // Create object from Serial class
int val; // Data received from the serial port
Movie Movie1;
long t0; //再生時間管理用
PImage selectPic;//選択画面背景
final int ARTICLE_NUM=9; //日記記事が3本
PImage[] img=new PImage[ARTICLE_NUM];
Serial ser;
void setup() {
size(800, 600);
frameRate(10);
background(30, 45, 90);
String portName = Serial.list()[1];
ser = new Serial(this, portName, 9600);
Movie1 = new Movie(this, "test.mov");
selectPic= loadImage("menu.png");
img[0] = loadImage("1.png");
img[1]= loadImage("2.png");
img[2] = loadImage("3.png");
img[3] = loadImage("4.png");
img[4]= loadImage("5.png");
img[5] = loadImage("6.png");
img[6] = loadImage("7.png");
img[7]= loadImage("8.png");
//img[8] = loadImage("9.png");
}
int mode = 0;
void draw() {
switch(state) {
case SELECT:
background(30, 45, 90);
image(selectPic, 0, 0, 800, 600);
ser.write("n");
if (keyPressed) {
/background(30, 45, 90);
image(selectPic, 0, 0, 640, 480);
char keys[]={key};
text(new String(keys), 567, 193);/
if (key==ENTER) {
if (article>0) {
state=DIALY;
println("move to article "+article);
}
} else {
article=key-'0';
if (article<1 || ARTICLE_NUM<article) { //範囲外の数値だったら
article=0;//クリア
}
text(article, 670, 326);
println("article number set to "+article);
}
}
break;
case DIALY:
background(90, 45, 90);
image(img[article-1], 0, 0, 800, 600);
ser.write("n");
if (keyPressed) {
if (key=='b') {//'b'が押されたら
article=0;
if (++count>=random(2, 5)) {//3回'ほど'
count=0;//countのクリアを忘れずに
Movie1.loop();
t0=millis();
state=MOVIE;
ser.write("n");
} else {
state=SELECT;
}
}
}
break;
case MOVIE:
image(Movie1, 0, 0, 800, 600);
//ここにはキー処理ルーチンはない
ser.write("f");
if (millis()-t0>132*1000) {//3秒=3000ミリ秒経った?
Movie1.stop();
println("3秒たったよ");
state=SELECT;
}
break;
}
}
void movieEvent(Movie m) {
m.read();
}
//arduino
#define FADE_TIME 2
int led_pins[] = {3, 5, 6, 9, 10, 11};
void setup() {
Serial.begin(9600);
int i;
for (i = 0; i < 11; i++) {
pinMode(led_pins[i], OUTPUT);
}
}
void loop() {
int inputchar;
int i, j;
// シリアルポートより1文字読み込む
if (Serial.available() > 0) { // シリアル通信でデータが送られてくるまで待つ。
char c = Serial.read(); // 一文字分データを取り出す。 if (c == 'n') { // nが送られてきたらLEDを点灯させる。 for (j = 0; j < 11; j++) { for (i = 0; i < 256; i++) { analogWrite(led_pins[j], i); delay(5); } } for (j = 0; j < 11; j++) { for (i = 255; i > -1; i--) { analogWrite(led_pins[j], i); delay(5); } } } else if(c == 'f') { // fが送られてきたらLEDを消灯させる。 for (j = 0; j < 11; j++) { analogWrite(led_pins[j], HIGH); delay(random(10)); } for (j = 0; j < 11; j++) { analogWrite(led_pins[j], LOW); delay(random(10)); } }
}
}
よろしくお願いします