极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 121826|回复: 53

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

  [复制链接]
发表于 2012-7-4 15:18:25 | 显示全部楼层 |阅读模式
大家应该都看过周星驰的《国产007》,里面有一只坑爹的太阳能手电筒,有光才能亮,没光绝对不亮!我们今天只做的达文西之灯的创意就是源自于此,只做一个有光才能亮的LED灯(好吧,我承认这玩意坑爹)。

实验材料

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










然后我们来搭建实验电路



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

我们来搭建实际电路




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

  1. /*
  2. 作者:极客工坊-迷你强
  3. 时间:2012年7月4日
  4. IDE版本号:1.0.1
  5. 发布地址:[url]www.geek-workshop.com[/url]
  6. 作用:Arduino的光敏实验,有光就会点亮led

  7. */

  8. int a =300;     //此处需是环境基础亮度变量,请查看自己的亮度数值,
  9.                 //填写到此处数值要略大于所测得的数据但小于灯光下的数据
  10. void setup ()
  11. {
  12.   Serial.begin(9600);
  13.   pinMode(13,OUTPUT);
  14. }
  15. void loop()
  16. {
  17.   int n = analogRead(A0);            //读取模拟口A0数值
  18.   Serial.println(n);
  19.   if (n>= a )                   //对光线强度进行判断,如果比我们的预设值大 就点亮LED否则就关闭
  20.   {
  21.     digitalWrite(13,HIGH);
  22.   }
  23.   else
  24.   {
  25.     digitalWrite(13,LOW);
  26.   }
  27. }
复制代码

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

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





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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-5-1 00:27:56 | 显示全部楼层
我的也是,用强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 );
}
回复 支持 1 反对 0

使用道具 举报

发表于 2012-7-4 22:13:04 | 显示全部楼层
把程序稍微改一下,变成有光就变暗,没光就点亮,好像就是一个简单的光控路灯了~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-5 07:58:00 | 显示全部楼层
Muller_r 发表于 2012-7-4 22:13
把程序稍微改一下,变成有光就变暗,没光就点亮,好像就是一个简单的光控路灯了~~

终于有人改程序了,感动ing...
回复 支持 反对

使用道具 举报

发表于 2012-7-5 15:37:47 | 显示全部楼层
Muller_r 发表于 2012-7-4 22:13
把程序稍微改一下,变成有光就变暗,没光就点亮,好像就是一个简单的光控路灯了~~

哈哈,这个也太......可以算是相对简单的光控电路了,记得我大一的时候玩声光感应开关时候,还是瞒好玩的!
回复 支持 反对

使用道具 举报

发表于 2012-7-5 17:46:25 | 显示全部楼层
这些都是基础,意义在于熟悉光敏元件的使用,倒不在于实用性,支持!
回复 支持 反对

使用道具 举报

发表于 2012-7-6 17:50:50 | 显示全部楼层
沧海笑1122 发表于 2012-7-5 17:46
这些都是基础,意义在于熟悉光敏元件的使用,倒不在于实用性,支持!

是的,对于初学者来说是件很好的事情,支持强子出品的教程!
回复 支持 反对

使用道具 举报

发表于 2012-7-24 16:05:51 | 显示全部楼层
顶一个,

不过我是不是看错了,光敏电阻是串联一个电阻还是并联一个电阻?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-24 17:50:41 | 显示全部楼层
ladywent 发表于 2012-7-24 16:05
顶一个,

不过我是不是看错了,光敏电阻是串联一个电阻还是并联一个电阻?

这个不是光敏电阻,是光敏三极管,并联电阻是为了分压
回复 支持 反对

使用道具 举报

发表于 2012-7-25 16:45:00 | 显示全部楼层
水果系列教程,呵呵
回复 支持 反对

使用道具 举报

发表于 2012-7-26 20:21:11 | 显示全部楼层
小问题一个:这货明明只有两条腿为什么还叫三极管...

PS:可以用三极管弄个非门,顺便向初学者介绍下这类概念
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-27 08:16:08 | 显示全部楼层
Uduse 发表于 2012-7-26 20:21
小问题一个:这货明明只有两条腿为什么还叫三极管...

PS:可以用三极管弄个非门,顺便向初学者介绍下这 ...

第三级没有引出来。那一级是光控级

模电小白捂脸跑过..............
回复 支持 反对

使用道具 举报

发表于 2012-8-4 11:14:23 | 显示全部楼层
呵呵,这个是我做的,谨以此片,支持一下论坛!
回复 支持 反对

使用道具 举报

发表于 2012-8-4 21:20:00 | 显示全部楼层
乐_乐(顺) 发表于 2012-8-4 11:14
呵呵,这个是我做的,谨以此片,支持一下论坛!

不错不错
回复 支持 反对

使用道具 举报

发表于 2012-8-5 13:09:44 | 显示全部楼层
用一个npn的三极管不久搞定了/。////其实不用arduino的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-5 21:54:55 | 显示全部楼层
Peace 发表于 2012-8-5 13:09
用一个npn的三极管不久搞定了/。////其实不用arduino的

数字电路是模拟电路的一个子集、、、、模电当然能搞定。。。。问题咱开的坑是arduino入门。。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 05:14 , Processed in 0.055993 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表