极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9002|回复: 10

Processing之旅-----【给鱼插上翅膀,Processing基础扩展库6】

[复制链接]
发表于 2013-7-19 11:26:02 | 显示全部楼层 |阅读模式
本课我们继续学习Processing的自带库--video(视频库)
总体来说,无论是做游戏,还是做交互,视频播放都是十分重要的一个组成部分。
故而此库也是比较重要的例子。
下面我们以一个自动的广告机为例,此机是windows7 32位上运行Processing32位通过串口通信连接Arduino板
Arduino上有超声波测距传感器。超声波测距传感激发散角为45度,要求在1-1.5m范围内检测有观众存在则播放视频2,否则当视频2播放完毕后,播放视频1.

  1. import java.util.Timer;
  2. import processing.video.*;
  3. import processing.serial.*;

  4. Movie movie1;
  5. Movie movie2;
  6. Serial myPort=new  Serial(this, "COM10", 9600);
  7. int intXiaoXi;
  8. boolean bYouRen;
  9. boolean bPlayWho;
  10. float  movie1Length;
  11. float  movie2Length;

  12. void setup() {
  13.   size(displayWidth, displayHeight);
  14.   background(0);
  15.   movie1 = new Movie(this, "move1.mp4");
  16.   movie2 = new Movie(this,"move2.mp4");
  17.   movie1Length=movie1.duration();
  18.   movie2Length=movie2.duration();
  19.   // movie.loop();
  20.   // movie1.play();
  21.   bPlayWho=false;
  22.   PlayMovie(movie1);
  23. }
  24. void movieEvent(Movie m) {
  25.   m.read();
  26. }
  27. void draw()
  28. {
  29.   
  30.   if (bPlayWho)
  31.   {
  32.     image(movie2, 0, 0, width, height);
  33.     if (movie2.time()>=movie2.duration())
  34.      {
  35.        movie2.stop();
  36.        JianCeChuanGanQi();
  37.       
  38.      }
  39.   }
  40.   else
  41.   {
  42.     image(movie1, 0, 0, width, height);
  43.     JianCeChuanGanQi();
  44.     if(movie1.time()>=movie1.duration())
  45.     {
  46.       movie1.stop();
  47.       movie1.play();
  48.     }
  49.   }
  50.    

  51.    
  52. }
  53. void JianCeChuanGanQi()
  54. {

  55.   if (bYouRen)
  56.   {
  57.     movie1.stop();
  58.     PlayMovie(movie2);
  59.     bPlayWho=true;
  60.   }
  61.   else
  62.   {
  63.      movie2.stop();
  64.      PlayMovie(movie1);
  65.      bPlayWho=false;
  66.   }
  67. }
  68. void PlayMovie(Movie who)
  69. {
  70.   who.play();
  71. }
  72. boolean sketchFullScreen() {
  73.   return true;
  74. }
  75. void serialEvent(Serial p) {
  76.   intXiaoXi = myPort.readChar();
  77.   if(intXiaoXi==48)
  78.   {
  79.     bYouRen=false;//无人
  80.   }
  81.   else
  82.   {
  83.     bYouRen=true;//感应区有人
  84.   }

  85. }
复制代码

下面是Arduino的代码

  1. #include <NewPing.h>

  2. #define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
  3. #define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
  4. #define MAX_DISTANCE 150 //传感器检测范围,单位厘米,本传感器最大不要超过350

  5. NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
  6. int MaxCm;
  7. int reCm;
  8. void setup() {
  9.   Serial.begin(9600);
  10.   reCm=0;
  11.   MaxCm=0;
  12. }

  13. void loop() {
  14.         jianceMain();
  15.   
  16. }
  17. void jianceMain()
  18. {
  19.         for (int i=0;i<10;i++)
  20.         {                     
  21.         unsigned int uS = sonar.ping();
  22.         reCm=uS/US_ROUNDTRIP_CM;
  23.             if (reCm>0)
  24.             {
  25.                     MaxCm=reCm;       
  26.             }
  27.             delay(50);
  28.         }
  29.         if (MaxCm>0)
  30.         {
  31.                 Serial.print("1");       
  32.         }
  33.         else
  34.         {
  35.                 Serial.print("0");       
  36.         }
  37.         reCm=0;
  38.         MaxCm=0;
  39. }
复制代码

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

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

使用道具 举报

发表于 2013-7-19 14:03:42 | 显示全部楼层
感兴趣啊~~~~!!
回复 支持 反对

使用道具 举报

发表于 2014-6-9 20:52:54 | 显示全部楼层
为什么NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); 这段代码出错啊~表示看不懂
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-20 09:36:15 | 显示全部楼层
SafetySuit 发表于 2014-6-9 20:52
为什么NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); 这段代码出错啊~表示看不懂

你没有库
回复 支持 反对

使用道具 举报

发表于 2015-1-31 18:33:21 | 显示全部楼层
为什么我在软件下能正常使用,输出成执行文件就不可以了(。EXE),WINDOW 7 64位
回复 支持 反对

使用道具 举报

发表于 2015-1-31 18:33:41 | 显示全部楼层
搞了我快2个星期了
回复 支持 反对

使用道具 举报

发表于 2016-6-22 17:17:29 | 显示全部楼层
谢谢楼主,学习。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2019-8-25 16:15 , Processed in 0.049130 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表