Processing之旅-----【给鱼插上翅膀,Processing基础扩展库6】
本课我们继续学习Processing的自带库--video(视频库)总体来说,无论是做游戏,还是做交互,视频播放都是十分重要的一个组成部分。
故而此库也是比较重要的例子。
下面我们以一个自动的广告机为例,此机是windows7 32位上运行Processing32位通过串口通信连接Arduino板
Arduino上有超声波测距传感器。超声波测距传感激发散角为45度,要求在1-1.5m范围内检测有观众存在则播放视频2,否则当视频2播放完毕后,播放视频1.
import java.util.Timer;
import processing.video.*;
import processing.serial.*;
Movie movie1;
Movie movie2;
Serial myPort=newSerial(this, "COM10", 9600);
int intXiaoXi;
boolean bYouRen;
boolean bPlayWho;
floatmovie1Length;
floatmovie2Length;
void setup() {
size(displayWidth, displayHeight);
background(0);
movie1 = new Movie(this, "move1.mp4");
movie2 = new Movie(this,"move2.mp4");
movie1Length=movie1.duration();
movie2Length=movie2.duration();
// movie.loop();
// movie1.play();
bPlayWho=false;
PlayMovie(movie1);
}
void movieEvent(Movie m) {
m.read();
}
void draw()
{
if (bPlayWho)
{
image(movie2, 0, 0, width, height);
if (movie2.time()>=movie2.duration())
{
movie2.stop();
JianCeChuanGanQi();
}
}
else
{
image(movie1, 0, 0, width, height);
JianCeChuanGanQi();
if(movie1.time()>=movie1.duration())
{
movie1.stop();
movie1.play();
}
}
}
void JianCeChuanGanQi()
{
if (bYouRen)
{
movie1.stop();
PlayMovie(movie2);
bPlayWho=true;
}
else
{
movie2.stop();
PlayMovie(movie1);
bPlayWho=false;
}
}
void PlayMovie(Movie who)
{
who.play();
}
boolean sketchFullScreen() {
return true;
}
void serialEvent(Serial p) {
intXiaoXi = myPort.readChar();
if(intXiaoXi==48)
{
bYouRen=false;//无人
}
else
{
bYouRen=true;//感应区有人
}
}
下面是Arduino的代码
#include <NewPing.h>
#define TRIGGER_PIN12// Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11// Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 150 //传感器检测范围,单位厘米,本传感器最大不要超过350
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int MaxCm;
int reCm;
void setup() {
Serial.begin(9600);
reCm=0;
MaxCm=0;
}
void loop() {
jianceMain();
}
void jianceMain()
{
for (int i=0;i<10;i++)
{
unsigned int uS = sonar.ping();
reCm=uS/US_ROUNDTRIP_CM;
if (reCm>0)
{
MaxCm=reCm;
}
delay(50);
}
if (MaxCm>0)
{
Serial.print("1");
}
else
{
Serial.print("0");
}
reCm=0;
MaxCm=0;
}
因为是视频播放而且是全屏的视频播放,加上是商业项目,就只给一个截图了。
希望大家有所收获。
那么这节课,下课。
感兴趣啊~~~~!! 为什么NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); 这段代码出错啊~表示看不懂 SafetySuit 发表于 2014-6-9 20:52 static/image/common/back.gif
为什么NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); 这段代码出错啊~表示看不懂
你没有库 为什么我在软件下能正常使用,输出成执行文件就不可以了(。EXE),WINDOW 7 64位 搞了我快2个星期了 谢谢楼主,学习。
页:
[1]