大家应该都看过周星驰的《国产007》,里面有一只坑爹的太阳能手电筒,有光才能亮,没光绝对不亮!我们今天只做的达文西之灯的创意就是源自于此,只做一个有光才能亮的LED灯(好吧,我承认这玩意坑爹)。
实验材料
ocrobot mango(Arduino兼容版) | 一块 |
面包板 | 一块 |
面包板专用跳线 | 一盒 |
光敏三极管 | 一枚 |
10K欧姆电阻 | 一枚 |
任意颜色LED | 一枚 |
220欧姆电阻 | 一枚 |
数据线 | 一根 |
然后我们来搭建实验电路
此次实验的电路略显复杂,我们简单讲解一下,LED部分大家都比较清楚,从13号引脚到地线,中间串接220欧姆的保护电 阻,然后就是光敏三极管的部分,光明三极管有凸起的一边为发射极,此端接A0检测口,同时并联一个10K欧姆的分压电阻到地线以扩展光敏三极管的灵敏度 (此处电阻越小灵敏度越高)。另一极使用5V输入。
我们来搭建实际电路
搭建好电路我们就开始下载程序了
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://www.geek-workshop.com/forum.php?mod=viewthread&tid=1340