Arduino入门教程--第十一课--Arduino达文西之灯(光敏实验)
大家应该都看过周星驰的《国产007》,里面有一只坑爹的太阳能手电筒,有光才能亮,没光绝对不亮!我们今天只做的达文西之灯的创意就是源自于此,只做一个有光才能亮的LED灯(好吧,我承认这玩意坑爹)。实验材料
ocrobot mango(Arduino兼容版)一块
面包板一块
面包板专用跳线一盒
光敏三极管 一枚
10K欧姆电阻一枚
任意颜色LED一枚
220欧姆电阻一枚
数据线一根
然后我们来搭建实验电路
此次实验的电路略显复杂,我们简单讲解一下,LED部分大家都比较清楚,从13号引脚到地线,中间串接220欧姆的保护电阻,然后就是光敏三极管的部分,光明三极管有凸起的一边为发射极,此端接A0检测口,同时并联一个10K欧姆的分压电阻到地线以扩展光敏三极管的灵敏度(此处电阻越小灵敏度越高)。另一极使用5V输入。
我们来搭建实际电路
搭建好电路我们就开始下载程序了
/*
作者:极客工坊-迷你强
时间:2012年7月4日
IDE版本号:1.0.1
发布地址:www.geek-workshop.com
作用:Arduino的光敏实验,有光就会点亮led
*/
int a =300; //此处需是环境基础亮度变量,请查看自己的亮度数值,
//填写到此处数值要略大于所测得的数据但小于灯光下的数据
void setup ()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop()
{
int n = analogRead(A0); //读取模拟口A0数值
Serial.println(n);
if (n>= a ) //对光线强度进行判断,如果比我们的预设值大 就点亮LED否则就关闭
{
digitalWrite(13,HIGH);
}
else
{
digitalWrite(13,LOW);
}
}
本次实验的源代码有个变量需要进行校准,大家应该还记得上次实验的串口管理器的数据输出,本次实验依旧要用到,大家下载好程序后,需要打开串口管理器看一下目前的环境光的数值,然后打开电灯再记录一下数值(数据刷新很快,不需要精确值,只要比他大一些就可以,但是别大于开灯后的数值)。 然后根据您的环境光的数值,来修改我们的基准值。修改后再次下载好程序,就可以体验到传说中有光才能亮的达文西之灯。。
(再次提醒本次实验的参数需要根据您当时的环境光线进行调整的,切记切记~~~!!)
以下是我们的演示视频
http://player.youku.com/player.php/sid/XNDIzNjU3NDU2/v.swf
当然,本次实验这玩意着实没有太大用处,除了好玩,大家可以试着改造程序,搭配些其他的应用,光敏感应还是很有用的。
我的也是,用强LED光照射也只有25最多。
改了一下电路,加了温度检测模块。 如果环境光线< 10, 那么测温开启,当温度大于25度时小灯亮;如果光线> 10则小灯不亮。 这是用来模拟现在的光感电灯:白天的时候(光线强),灯关闭;夜晚的时候(光线弱),红外线感应到人体灯就亮。因为手头无红外线感应器(摩尔),所以用温度探头替代。手摸在上面,当环境暗的时候灯就会发光:$
analog 2- 光敏三极光
analog 3 - 温度传感器
代码
void setup()
{
Serial.begin( 9600 );//设置串口通讯率
pinMode( 13, OUTPUT ); //设置数字13口为led输出
}
void loop()
{
int a = analogRead( A2 ); // 模拟A2口接感光三极管,读取光线数据。
int b = analogRead( A3 ); // 读取温度电压
float temp = 5.0 * ( b / 1023.0) * 100; //将温度电压转化为温度
/* 输出至计算机*/
Serial.print( a );
Serial.print( " ; temperature=");
Serial.print( temp );
Serial.println ( " C" );
//当光线低于10, 并且温度高于25度时led灯亮
if ( a < 10 && temp >= 25.0 )
digitalWrite( 13, HIGH);
else
digitalWrite( 13, LOW );
delay ( 2000 );
}
把程序稍微改一下,变成有光就变暗,没光就点亮,好像就是一个简单的光控路灯了~~ Muller_r 发表于 2012-7-4 22:13 static/image/common/back.gif
把程序稍微改一下,变成有光就变暗,没光就点亮,好像就是一个简单的光控路灯了~~
终于有人改程序了,感动ing... Muller_r 发表于 2012-7-4 22:13 static/image/common/back.gif
把程序稍微改一下,变成有光就变暗,没光就点亮,好像就是一个简单的光控路灯了~~
哈哈,这个也太......可以算是相对简单的光控电路了,记得我大一的时候玩声光感应开关时候,还是瞒好玩的! 这些都是基础,意义在于熟悉光敏元件的使用,倒不在于实用性,支持! 沧海笑1122 发表于 2012-7-5 17:46 static/image/common/back.gif
这些都是基础,意义在于熟悉光敏元件的使用,倒不在于实用性,支持!
是的,对于初学者来说是件很好的事情,支持强子出品的教程! 顶一个,
不过我是不是看错了,光敏电阻是串联一个电阻还是并联一个电阻?
ladywent 发表于 2012-7-24 16:05 static/image/common/back.gif
顶一个,
不过我是不是看错了,光敏电阻是串联一个电阻还是并联一个电阻?
这个不是光敏电阻,是光敏三极管,并联电阻是为了分压 :D 水果系列教程,呵呵 小问题一个:这货明明只有两条腿为什么还叫三极管...:L
PS:可以用三极管弄个非门,顺便向初学者介绍下这类概念 Uduse 发表于 2012-7-26 20:21 static/image/common/back.gif
小问题一个:这货明明只有两条腿为什么还叫三极管...
PS:可以用三极管弄个非门,顺便向初学者介绍下这 ...
第三级没有引出来。那一级是光控级
模电小白捂脸跑过.............. 呵呵,这个是我做的,谨以此片,支持一下论坛!
http://v.youku.com/v_show/id_XNDM1MzA3NzQ0.html 乐_乐(顺) 发表于 2012-8-4 11:14 static/image/common/back.gif
呵呵,这个是我做的,谨以此片,支持一下论坛!
:lol不错不错 用一个npn的三极管不久搞定了/。////其实不用arduino的 Peace 发表于 2012-8-5 13:09 static/image/common/back.gif
用一个npn的三极管不久搞定了/。////其实不用arduino的
数字电路是模拟电路的一个子集、、、、模电当然能搞定。。。。问题咱开的坑是arduino入门。。。。。