
友情提示:搭配Gravity:新版Arduino中级套件食用更佳!
👆点击查看👆
夜光宝盒,听着名字是不是很好玩,实际也是这么好玩儿!我们要做的这个盒子,在白天是闭合的,一旦进入了深夜,就开始慢慢张开,灯光也会慢慢变亮,好似一颗“夜明珠”,一旦到了白天,有慢慢合上了!哈哈⋯先来大致说下原理吧!通过一个模拟环境光传感器,来检测环境光线强弱,随着亮度的不同,输出值不同。到了晚上的设定值,就转动舵机角度,LED同时慢慢变亮。
所需材料
-
1× 模拟环境光线传感器 -
1× TowerPro SG50舵机 -
1× 数字食人鱼红色LED发光模块
硬件连接
-
TowerPro SG50 连接数字引脚 9 -
模拟环境光线传感器 连接模拟引脚 0 -
数字食人鱼红色LED发光模块 连接数字引脚 3
输入代码
样例代码10-1:
#include<Servo.h>
Servo myservo;
int LED = 3; //设置LED灯为数字引脚3
int 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); //写入亮度值
}
}
把舵机固定在盒子的连接处,灯塞在盒子里面,传感器当然是要露在外面的,需要检测环境光。安装完成后,把盒子置于暗处,看下盒子会不会自动打开。
代码部分,注释已经非常清楚了,涉及函数在前几章也都了解过了,所以就不多做说明了。
- END -小伙伴们在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,你可以选择登陆我们的DFRobot创客社区!mc.dfrobot.com.cn 发帖提问!
也可以加我们的Arduino官方群:369301430,大家一起交流学习。
硬件军火库
点击了解详情👆
大家有什么想法,或是对文章的指正,都欢迎在下方留言!
学有余力的小伙伴,可以点击阅读原文,到DF创客社区继续学习!
往期回顾
▼ Arduino基础系列教程
点击阅读👆


