Edison教程系列07 夜光宝盒

2014-11-051.2万
AI 快速预览详细 收起
夜光宝盒是一个通过模拟环境光传感器和舵机控制的创意项目。所需材料包括模拟环境光传感器、TowerPro SG50舵机、数字食人鱼红色LED发光模块、IO传感器扩展板V7.1和英特尔® Edison for Arduino开发板。硬件连接方面,将舵机接到数字口9,模拟环境光传感器接到模拟口0,LED接到数字口3。通过编写代码,实现当环境光线变暗时,舵机转动角度,LED逐渐变亮,反之则逐渐关闭。这个项目适合STEM教育,可以激发孩子对编程和电子的兴趣。
夜光宝盒,听着名字是不是很好玩,实际也是这么好玩儿!我们要做的这个盒子,在白天是闭合的,一旦进入了深夜,就开始慢慢张开,灯光也会慢慢变亮,好似一颗“夜明珠”,一旦到了白天,又慢慢合上了!哈哈…先来大致说下原理吧!通过一个模拟环境光传感器,来检测环境光线强弱,随着亮度的不同,输出值不同。到了晚上的设定值,就转动舵机角度,LED同时慢慢变亮。
所需材料

1×  TowerPro SG50舵机

硬件连接

  • TowerProSG50舵机 → 数字口9
  • 模拟环境光线传感器 模拟口0
  • 数字食人鱼红色LED发光模块 数字口3

Edison教程系列07 夜光宝盒图1

输入代码
   
  1. #include <Servo.h>   
  2. Servo myservo;
  3. int LED = 3;                      //设置LED灯为数字引脚3
  4. int val = 0;                      //val存储环境光传感器的值
  5. int pos = 0;
  6. int light =0;
  7. void setup(){
  8.      pinMode(LED,OUTPUT);         //LED为输出模式
  9.      Serial.begin(9600);          //串口波特率设置为9600
  10.      myservo.attach(9);           //舵机接到数字口9
  11.      myservo.write(0);            //初始角度为0
  12. }
  13. void loop(){
  14.      val = analogRead(0);         // 读取传感器的值
  15.      Serial.println(val);         // 串口查看电压值的变化
  16.      if(val<40){                   // 一旦小于设定的值,增加角度
  17.           pos = pos +2;
  18.           if(pos >= 90){        //转到了90°后,就保持90°
  19.               pos = 90;            
  20.           }
  21.           myservo.write(pos);      //写入舵机的角度
  22.           delay(100);
  23.           light = map(pos,0,90,0,255);  //随角度增大,LED亮度增大
  24.           analogWrite(LED,light);   //写入亮度值
  25.      }else{                 
  26.           pos = pos -2;    //减2°
  27.           if(pos <= 0){
  28.              pos = 0;       //减到0°为止
  29.           }
  30.           myservo.write(pos);      //写入舵机的角度
  31.           delay(100);   
  32.           light = map(pos,0,90,0,255);//随角度减小,LED亮度减小
  33.           analogWrite(LED,light);  //写入亮度值
  34.      }
  35. }
复制代码

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

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -