Arduino教程入门系列-第十一课-Arduino达文西之灯(光敏实验)

大家应该都看过周星驰的《国产007》,里面有一只坑爹的太阳能手电筒,有光才能亮,没光绝对不亮!我们今天只做的达文西之灯的创意就是源自于此,只做一个有光才能亮的LED灯(好吧,我承认这玩意坑爹)。

实验材料

ocrobot mango(Arduino兼容版) 一块
面包板 一块
面包板专用跳线 一盒
光敏三极管 一枚
10K欧姆电阻 一枚
任意颜色LED 一枚
220欧姆电阻 一枚
数据线 一根

然后我们来搭建实验电路

2012-7-8 13-04-51.png

此次实验的电路略显复杂,我们简单讲解一下,LED部分大家都比较清楚,从13号引脚到地线,中间串接220欧姆的保护电阻,然后就是光敏三极管的部分,光明三极管有凸起的一边为发射极,此端接A0检测口,同时并联一个10K欧姆的分压电阻到地线以扩展光敏三极管的灵敏度(此处电阻越小灵敏度越高)。另一极使用5V输入。

我们来搭建实际电路

IMGP9533_调整大小.jpg

搭建好电路我们就开始下载程序了

ARDUINO 代码复制打印

/*
 作者:极客工坊-迷你强
 时间:2012年7月4日
 IDE版本号:1.0.1
 发布地址:[url]www.geek-workshop.com[/url]
 作用: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);
  }
}

本次实验的源代码有个变量需要进行校准,大家应该还记得上次实验的串口管理器的数据输出,本次实验依旧要用到,大家下载好程序后,需要打开串口管理器看一下目前的环境光的数值,然后打开电灯再记录一下数值(数据刷新很快,不需要精确值,只要比他大一些就可以,但是别大于开灯后的数值)。 然后根据您的环境光的数值,来修改我们的基准值。修改后再次下载好程序,就可以体验到传说中有光才能亮的达文西之灯。。

(再次提醒本次实验的参数需要根据您当时的环境光线进行调整的,切记切记~~~!!)
以下是我们的演示视频

当然,本次实验这玩意着实没有太大用处,除了好玩,大家可以试着改造程序,搭配些其他的应用,光敏感应还是很有用的。


via - 极客工坊

标签: Arduino教程