欢迎来到天天文库
浏览记录
ID:33642819
大小:71.00 KB
页数:6页
时间:2019-02-27
《processing互动之红外热释与感应路灯》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Processing互动之红外热释与感应路灯 2011-12-2517:03 基于热释电效应的人体热释运动传感器,能检测到人体或动物身上发出的红外线,配合菲涅尔透镜能是传感器探测范围更远更广。与Arduino专用传感器扩展板结合使用,可以非常容易地实现与人体或动物相关的互动效果。 当红外热释电运动传感器的附近有人在移动,这个小装置就会即刻触发,输出高电平,就算人离开了,高电平也依旧持续一段时间才会改变会低电平,而这个持续的时间长短可以由传感器模块上的那个黄色可变电阻调整,时间长短约为0.3至18秒。然后如果检测到没人再移动,这个传感器又会回到“休眠”状态,传感器维持低电平。这个传感器购
2、买地址: http://item.taobao.com/item.htm?spm=1101*r1F.3-1mJ7Y.h-1MYgS*&id=227289073& 实验现象是:手在传感器附近移动,传感器被触发,Processing画布上的灯点亮,人偶从画布左端开始移动,到画布右端消失,然后,画布黑屏,直到传感器又被移动物体触发,再重复上述过程。 点击视频网址,看全屏精彩视频:http://player.youku.com/player.php/sid/XMzM1NjU4ODU2/v.swf 下面给出Arduino和Processing的程序, 我用蓝色字体标注了两者串口通讯的程序段。Ardui
3、no程序:intledPin=13; //LED连接到数字端口13intsensor=2; //传感器连接到数字端口2//红外热释电运动传感器发出高电平,则被触发//发出低电平,则其处于休眠状态intval=0;//存储传感器输出的数字量 voidsetup(){ pinMode(ledPin,OUTPUT); //setsthedigitalpinasoutput pinMode(sensor,INPUT); //setsthedigitalpinasinput digitalWrite(ledPin,HIGH); //初始化熄灭灯 Serial.begin(9600);//设置
4、串行通信的波特率} voidloop(){ val=digitalRead(sensor); //readtheinputpin //如果红外热释电运动传感器被触发,将保持高电平一段时间 if(HIGH==val) { Serial.print(1,BYTE);//向Processing发出传感器被触发标志 digitalWrite(ledPin,LOW); //LED亮 delay(50);//延时,以使串行通讯不至于太忙 } else {digitalWrite(ledPin,HIGH); //LED灭 Serial.print(0,BYTE);//向Processing发出传感
5、器休眠标志 delay(50); }} Processing程序:(与动画相关的指令用红色字体标注)/*Processing接受到Arduino控制器的红外热释传感器发出的触发信号后,画布上的路灯点亮,当人走过画布后,画布黑屏*/importprocessing.serial.*;//导入serial通信库Serialduankou;//创建对象duankou//变量存储Arduino传来数据,用来标志传感器是否被触发intdata;intframe=0;//动画变量intflag=0;//路灯是否亮标志//声明一个PImage类型PImagephoto1;//人偶图片定义PImagepho
6、to2;//路灯图片定义//串行通讯子程序voidcommunication(){ if(duankou.available()>0) { //把Arduino传来的字节存入变量data //一个字节数值范围是0~255. data=duankou.read(); //把Arduino传来的字节显示在控制台中 println(data); //如果data=1,则说明红外热释被触发 if(data==1) { flag=1;//路灯亮标志 } }}//初始化程序voidsetup(){ size(700,400);//画布尺寸定义 //调用图片到变量photo ph
7、oto1=loadImage("Puppet.JPG"); photo2=loadImage("light_bulb.png"); //设定通讯端口为COM3,波特率为9600 duankou=newSerial(this,"COM3",9600);}//主程序voiddraw(){ if(flag==1&&frame<=680)//如果路灯亮 { background(255);
此文档下载收益归作者所有