最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Arduino中级教程 项目十一 夜光宝盒

Arduino 少儿编程 2620浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

夜光宝盒,听着名字是不是很好玩,实际也是这么好玩儿!我们要做的这个盒子,在白 天是闭合的,一旦进入了深夜,就开始慢慢张开,灯光也会慢慢变亮,好似一颗“夜明珠”, 一旦到了白天,有慢慢合上了!哈哈…先来大致说下原理吧!通过一个模拟环境光传感器, 来检测环境光线强弱,随着亮度的不同,输出值不同。到了晚上的设定值,就转动舵机角度, LED 同时慢慢变亮。

 

所需材料

1× 模拟环境光线传感器

Arduino中级教程 项目十一 夜光宝

1× TowerPro SG50 舵机


1× 数字食人鱼红色LED 发光模块

Arduino中级教程 项目十一 夜光宝

硬件连接

TowerPro SG50 -> 数字口 9

模拟环境光线传感器 -> 模拟口0

数字食人鱼红色 LED 发光模块 -> 数字口3

 

输入代码

样例代码 11-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); //写入亮度值

}

}

把舵机固定在盒子的连接处,灯塞在盒子里面,传感器当然是要露在外面的,需要检测 环境光。安装完成后,把盒子置于暗处,看下盒子会不会自动打开。

代码部分,注释已经非常清楚了,涉及函数在前几章也都了解过了,所以就不多做说明了。

您必须 登录 才能发表评论!