物联网解决方案
返回列表 发新帖

[小e体验板] 小E体验板制作氛围灯之光敏控制LED亮度

[复制链接]
  • TA的每日心情
    奋斗
    2018-9-13 09:41
  • 签到天数: 38 天

    [LV.5]常住居民I

    11

    主题

    60

    帖子

    1905

    积分

    意见领袖

    Rank: 6Rank: 6

    积分
    1905
    发表在  2018-4-21 20:51:42  | 显示全部楼层 | 阅读模式

    公开设备实时看 这是什么->

    16:27
    176****9992
    通过微信控制多彩灯光
    16:27
    176****9992
    通过微信控制多彩灯光
    16:27
    176****9992
    通过微信控制多彩灯光
    16:27
    176****9992
    通过微信控制多彩灯光
    16:24
    匿名用户
    通过微信查询温湿度
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:15
    176****9992
    通过微信控制多彩灯光
    16:14
    176****9992
    通过微信控制多彩灯光
    16:14
    176****9992
    通过微信控制多彩灯光
    16:14
    176****9992
    通过微信控制多彩灯光
    16:14
    176****9992
    通过微信控制多彩灯光
    16:14
    176****9992
    通过微信控制多彩灯光
    16:14
    176****9992
    通过微信控制多彩灯光
    16:14
    176****9992
    通过微信控制多彩灯光
    16:14
    176****9992
    通过微信控制多彩灯光
    16:14
    176****9992
    通过微信控制多彩灯光
    16:14
    176****9992
    通过微信控制多彩灯光
    16:14
    176****9992
    通过微信控制多彩灯光
    16:09
    匿名用户
    通过微信查询温湿度
    16:03
    匿名用户
    通过微信查询温湿度
    13:29
    189****5226
    通过微信控制多彩灯光
    13:29
    189****5226
    通过微信控制多彩灯光
    13:29
    189****5226
    通过微信控制多彩灯光
    13:29
    189****5226
    通过微信控制多彩灯光
    13:29
    189****5226
    通过微信控制多彩灯光
    13:29
    189****5226
    通过微信控制多彩灯光
    13:29
    189****5226
    通过微信控制多彩灯光
     

    马上注册,免费领取开发板,一周变智能硬件开发达人!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 一路上有你 于 2018-4-21 20:59 编辑

    首先要分析一下,前面我们知道analogRead函数可以读到光敏的数值,范围是0-1024(其实应该是0-1023,因为esp8266采用的是十位的adc转换,分辨率就是210=1024,也就是0-1023,但是上个实验结果最大是1024.......姑且这么做吧)
    把光敏数值的0-1024的范围对应到0-255里
    这样光敏电阻的每一个变化都会引起LED的变化
    要不就会造成光敏值超过255之后LED常亮的现象
    arduino给我们提供了这么一个函数map
    看下map函数的用法
    1.png
    map(value, fromLow,fromHigh, toLow, toHigh)
    map函数有五个参数,参数含义:
    value:要映射的数字
    fromLow:值的当前范围的下限
    fromHigh:值的当前范围的上限
    toLow:值的目标范围的下限
    toHigh:值的目标范围的上限
    在这个程序里,value就是光敏的值
    fromLow是光敏的下限0,fromHigh是光敏的上限1024
    toLow是LED的亮度范围的下限0,
    toLow是LED的亮度范围的上限255,
    下面就是代码时间……
    //声明光敏的引脚
    #definePHOTOSEN A0
    //声明红色LED的引脚
    #defineRED 15

    //定义一个无符号整形的全局变量,因为adc(也就是光敏)读到的值得范围是0-1024
    unsignedint photoseh_v = 0;
    //定义一个全局无符号char类型变量,用来储存LED的亮度
    unsignedchar led_v = 0;

    //执行系统初始化工作
    voidsetup() {
      //设置一下波特率为9600,当然可以随意换....其他的波特率也行
      Serial.begin(9600);
      //设置为输出
      pinMode(RED, OUTPUT);
    }
    //这个函数会不断循环.....
    //写我们的主要逻辑
    voidloop() {

      //读取光敏数值
      photoseh_v = analogRead(PHOTOSEN);
      //串口输出
      Serial.print("photoseh_v=");
      Serial.print(photoseh_v);
      Serial.print("\t\tled_v=");
      Serial.println(led_v);
      //映射,把光敏数值的0-1024的范围对应到0-255里
      led_v = map(photoseh_v, 0, 1024, 0, 255);
      //这样的结果就是光照越强,LED越亮
      //点灯
      analogWrite(RED, led_v);
      delay(5);
    }
    截图看下,可以看到当光敏是1024时,led时255了
    2.png
    其实这次可以用绿灯或者是蓝灯,红灯不是很亮
    如果你想光照越强,灯越亮的话,可以这样
    把注释掉的那一句改成划红线的那句
    3.png

    下面是代码
    led_pwm_photo.ino (1000 Bytes, 下载次数: 8)





    回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关于我们
    开发快官网
    关于我们
    联系我们
    帮助中心
    开发者中心
    快速入门
    视频教程
    社区活动
    免费开发板
    开发者大赛
    关注我们
    官方微博
    官方空间
    快速回复 返回顶部 返回列表

    湘公网安备 43019002000310号