Arduino教程中级 项目十一 夜光宝盒
项目十一 夜光宝盒
本系列教程为DF创客社区版权所有,配套硬件套件:新版Arduino中级套件上一课:项目十 芝麻开门
夜光宝盒,听着名字是不是很好玩,实际也是这么好玩儿!我们要做的这个盒子,在白天是闭合的,一旦进入了深夜,就开始慢慢张开,灯光也会慢慢变亮,好似一颗“夜明珠”,一旦到了白天,有慢慢合上了!哈哈…先来大致说下原理吧!通过一个模拟环境光传感器,来检测环境光线强弱,随着亮度的不同,输出值不同。到了晚上的设定值,就转动舵机角度,LED同时慢慢变亮。
所需材料
l1×模拟环境光线传感器
image001.jpg (17.9 KB, 下载次数: 1)
下载附件
保存到相册
2016-1-27 16:59 上传
l 1×TowerPro SG50舵机
image003.jpg (13.57 KB, 下载次数: 1)
下载附件
保存到相册
2016-1-27 16:59 上传
l 1×数字食人鱼红色LED发光模块
image005.jpg (18.85 KB, 下载次数: 1)
下载附件
保存到相册
2016-1-27 16:59 上传
硬件连接
TowerProSG50 →数字口9模拟环境光线传感器 → 模拟口0数字食人鱼红色LED发光模块 → 数字口3
image007.jpg (97.76 KB, 下载次数: 1)
下载附件
保存到相册
2016-1-27 16:59 上传
输入代码
样例代码11-1: #include<Servo.h> Servo myservo;int LED = 3; //设置LED灯为数字引脚3int val = 0; //val存储环境光传感器的值int pos = 0;int light =0; void setup(){ pinMode(LED,OUTPUT); //LED为输出模式 Serial.begin(9600); //串口波特率设置为9600 myservo.attach(9); //舵机接到数字口9 myservo.write(0); //初始角度为0} void loop(){ val = analogRead(0); // 读取传感器的值 Serial.println(val); // 串口查看电压值的变化 if(val<40){ // 一旦小于设定的值,增加角度 pos = pos +2; if(pos >= 90){ //转到了90°后,就保持90° pos = 90; } myservo.write(pos); //写入舵机的角度 delay(100); light = map(pos,0,90,0,255);//随角度增大,LED亮度增大 analogWrite(LED,light); //写入亮度值 }else{ pos = pos -2; //减2° if(pos <= 0){ pos = 0; //减到0°为止 } myservo.write(pos); //写入舵机的角度 delay(100); light = map(pos,0,90,0,255);//随角度减小,LED亮度减小 analogWrite(LED,light);//写入亮度值 }} 把舵机固定在盒子的连接处,灯塞在盒子里面,传感器当然是要露在外面的,需要检测环境光。安装完成后,把盒子置于暗处,看下盒子会不会自动打开。代码部分,注释已经非常清楚了,涉及函数在前几章也都了解过了,所以就多做说明了。
※ 在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,欢迎登陆我们的DFRobot创客社区!www.dfrobot.com.cn下一课:项目十二 遥控灯