yangfanconan 发表于 2013-7-19 11:26:02

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;
}

因为是视频播放而且是全屏的视频播放,加上是商业项目,就只给一个截图了。


希望大家有所收获。
那么这节课,下课。

迷你强 发表于 2013-7-19 14:03:42

感兴趣啊~~~~!!

SafetySuit 发表于 2014-6-9 20:52:54

为什么NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); 这段代码出错啊~表示看不懂

yangfanconan 发表于 2014-6-20 09:36:15

SafetySuit 发表于 2014-6-9 20:52 static/image/common/back.gif
为什么NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); 这段代码出错啊~表示看不懂

你没有库

LINK~ 发表于 2015-1-31 18:33:21

为什么我在软件下能正常使用,输出成执行文件就不可以了(。EXE),WINDOW 7 64位

LINK~ 发表于 2015-1-31 18:33:41

搞了我快2个星期了

laozjx 发表于 2016-6-22 17:17:29

谢谢楼主,学习。
页: [1]
查看完整版本: Processing之旅-----【给鱼插上翅膀,Processing基础扩展库6】