Ash 发表于 2014-11-5 18:27:34

Edison教程系列07 夜光宝盒

夜光宝盒,听着名字是不是很好玩,实际也是这么好玩儿!我们要做的这个盒子,在白天是闭合的,一旦进入了深夜,就开始慢慢张开,灯光也会慢慢变亮,好似一颗“夜明珠”,一旦到了白天,又慢慢合上了!哈哈…先来大致说下原理吧!通过一个模拟环境光传感器,来检测环境光线强弱,随着亮度的不同,输出值不同。到了晚上的设定值,就转动舵机角度,LED同时慢慢变亮。 所需材料
1× 模拟环境光线传感器 1×TowerPro SG50舵机 1×数字食人鱼红色LED发光模块 1×   IO 传感器扩展板 V7.1 1×   英特尔® Edison for Arduino开发板
硬件连接

[*]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);//写入亮度值
   }
}
把舵机固定在盒子的连接处,灯塞在盒子里面,传感器当然是要露在外面的,需要检测环境光。安装完成后,把盒子置于暗处,看下盒子会不会自动打开。
页: [1]
查看完整版本: Edison教程系列07 夜光宝盒