|
本课我们继续学习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=new Serial(this, "COM10", 9600);
- int intXiaoXi;
- boolean bYouRen;
- boolean bPlayWho;
- float movie1Length;
- float movie2Length;
- 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_PIN 12 // 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;
- }
复制代码
因为是视频播放而且是全屏的视频播放,加上是商业项目,就只给一个截图了。
希望大家有所收获。
那么这节课,下课。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|