| 
 夜光宝盒,听着名字是不是很好玩,实际也是这么好玩儿!我们要做的这个盒子,在白天是闭合的,一旦进入了深夜,就开始慢慢张开,灯光也会慢慢变亮,好似一颗“夜明珠”,一旦到了白天,又慢慢合上了!哈哈…先来大致说下原理吧!通过一个模拟环境光传感器,来检测环境光线强弱,随着亮度的不同,输出值不同。到了晚上的设定值,就转动舵机角度,LED同时慢慢变亮。   所需材料  
  1×  TowerPro SG50舵机  
  硬件连接   
 - TowerProSG50舵机 → 数字口9
 - 模拟环境光线传感器 → 模拟口0
 - 数字食人鱼红色LED发光模块 → 数字口3
 
 
  
  
    输入代码    
			
			
			- #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);  //写入亮度值
 -      }
 - }
 
  复制代码
   
把舵机固定在盒子的连接处,灯塞在盒子里面,传感器当然是要露在外面的,需要检测环境光。安装完成后,把盒子置于暗处,看下盒子会不会自动打开。  
 |