- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Processing互动之红外热释与感应路灯
Processing互动之红外热释与感应路灯 ?2011-12-25 17:03
?
??基于热释电效应的人体热释运动传感器,能检测到人体或动物身上发出的红外线,配合菲涅尔透镜能是传感器探测范围更远更广。与Arduino专用传感器扩展板结合使用,可以非常容易地实现与人体或动物相关的互动效果。
? ?当红外热释电运动传感器的附近有人在移动,这个小装置就会即刻触发,输出高电平,就算人离开了,高电平也依旧持续一段时间才会改变会低电平,而这个持续的时间长短可以由传感器模块上的那个黄色可变电阻调整,时间长短约为0.3至18秒。然后如果检测到没人再移动,这个传感器又会回到“休眠”状态,传感器维持低电平。
这个传感器购买地址:?/item.htm?spm=1101*r1F.3-1mJ7Y.h-1MYgS*id=227289073
? ? 实验现象是:手在传感器附近移动,传感器被触发,Processing画布上的灯点亮,人偶从画布左端开始移动,到画布右端消失,然后,画布黑屏,直到传感器又被移动物体触发,再重复上述过程。
?
点击视频网址,看全屏精彩视频:/player.php/sid/XMzM1NjU4ODU2/v.swf
?
下面给出Arduino和Processing的程序,?我用蓝色字体标注了两者串口通讯的程序段。
Arduino程序:
int ledPin = 13; ? // LED 连接到数字端口13
int sensor = 2; ? ?//传感器连接到数字端口2
//红外热释电运动传感器发出高电平,则被触发
//发出低电平,则其处于休眠状态
int val = 0; //存储传感器输出的数字量
?
void setup()
{
? pinMode(ledPin, OUTPUT); ? ? ?// sets the digital pin as output
? pinMode(sensor, INPUT); ? ? ? // sets the digital pin as input
? digitalWrite(ledPin,HIGH); ? ?//初始化熄灭灯
? Serial.begin(9600);//设置串行通信的波特率
}
?
void loop()
{
? val = digitalRead(sensor); ? // read the input pin
? //如果红外热释电运动传感器被触发,将保持高电平一段时间
? if(HIGH == val)
? {
? ? Serial.print(1,BYTE);//向Processing发出传感器被触发标志
? ? digitalWrite(ledPin,LOW); ? // LED亮
? ? delay(50);//延时,以使串行通讯不至于太忙
? }
? else?
? {digitalWrite(ledPin,HIGH); ? ?// LED灭
? Serial.print(0,BYTE);//向Processing发出传感器休眠标志
? delay(50);
? }
}
?
?Processing程序:(与动画相关的指令用红色字体标注)
/*Processing接受到Arduino控制器的红外热释传感器发出的
触发信号后,画布上的路灯点亮,当人走过画布后,画布黑屏*/
import processing.serial.*;//导入serial通信库
Serial duankou;//创建对象duankou
//变量存储Arduino传来数据,用来标志传感器是否被触发
int data;
int frame=0;//动画变量
int flag=0;//路灯是否亮标志
//声明一个PImage类型
PImage photo1;//人偶图片定义
PImage photo2;//路灯图片定义
//串行通讯子程序
void communication()
{
? if(duankou.available()0)
? {
? ? //把Arduino传来的字节存入变量data
? ? //一个字节数值范围是0~255.
? ? data=duankou.read();
? ? //把Arduino传来的字节显示在控制台中
? ? println(data); ?
? ? //如果data=1,则说明红外热释被触发
? ? if(data==1)
? ? {
? ? ? flag=1;//路灯亮标志
? ? } ? ?
? }
}
//初始化程序
void setup()
{
? size(700,400);//画布尺寸定义
? //调用图片到变量photo
? photo1=loadImage(Puppet.JPG);
? photo2=loadImage(light
文档评论(0)