近期一个项目要用到光照传感器测量光照度,项目是测量大棚里面的光照度,用的BH1750量程65535Lx,而采集室外的光照度,实际测试发现晴天时传感器就已经满量程,之后传感器的度数一直是0。室外用BH1750不行,在网上买个BCE的光照传感器,光感芯片是MAX44009。发现网上并没有在arduino上使用BCE光照传感器的程序,现在贡献出来,下面Arduino代码。

地址:(宁夏大学-物电学院)

时间:2019.4.30

作者:沙小平

#include <Wire.h>
#include <math.h>
int BECaddress = 0x4A;
void setup()
{
   Serial.begin(9600);
   Wire.begin();// 开启IIC
   delay(50);
}
void loop()//主函数
{
    float lx;
    lx = BEC_Read();
    Serial.println(lx);
    delay(200);
}
float BEC_Read()//读取光照度值
{
  int buff_low,buff_high;
  char data_bin_high[10];
  int data_bin_low[10];
  float lx=0;
  long int t=0,k=0,j=0;
  int i=0;
  //读取传感器数值
  BEC_Init(0x03,BECaddress);
  delay(400);
  Wire.beginTransmission(BECaddress);
  Wire.requestFrom(BECaddress,1);
  while(Wire.available())
  {
     buff_high = Wire.read();  //高字节
  }
  Wire.endTransmission(); 
  delay(100);
  BEC_Init(0x04,BECaddress);
  delay(400);
  Wire.beginTransmission(BECaddress);
  Wire.requestFrom(BECaddress,1);
  while(Wire.available())
  {
    buff_low = Wire.read();  // 低字节
  }
  Wire.endTransmission();
    //流明算法
    #ifdef BCE_TEST
    Serial.print("Buff high =");
    Serial.println(buff_high);
    Serial.print("Buff low =");
    Serial.println(buff_low);
    #endif
    if(buff_high==0)
    {
       data_bin_high[7]=0;
       data_bin_high[6]=0;
       data_bin_high[5]=0;
       data_bin_high[4]=0;
       data_bin_high[3]=0;
       data_bin_high[2]=0;
       data_bin_high[1]=0;
       data_bin_high[0]=0;
       i=8;
    }
   while (i<8)
    {
       data_bin_high[i]=(int)(buff_high%2);
       i=i+1;
       buff_high=buff_high/2;
    }
    #ifdef BCE_TEST
    for(i--;i>=0;i--)
        Serial.print((int)data_bin_high[i]);
    Serial.println("  ");
    #endif
    i=0;
        if(buff_low==0)
    {
       data_bin_low[3]=0;
       data_bin_low[2]=0;
       data_bin_low[1]=0;
       data_bin_low[0]=0;
       i=4;
    }
   while (i<8)
    {
       data_bin_low[i]=(int)(buff_low%2);
       i=i+1;
       buff_low=buff_low/2;
    }
    #ifdef BCE_TEST
    for(i--;i>=0;i--)
    Serial.print(data_bin_low[i]);
    Serial.println("  ");
    #endif
    t=(int)data_bin_high[3]*128+(int)data_bin_high[2]*64+(int)data_bin_high[1]*32+(int)data_bin_high[0]*16+(int)data_bin_low[3]*8+(int)data_bin_low[2]*4+(int)data_bin_low[1]*2+(int)data_bin_low[0];
    j=(int)data_bin_high[7]*8+(int)data_bin_high[6]*4+(int)data_bin_high[5]*2+(int)data_bin_high[4];
    k=pow(2,j);
    lx = k*t*0.045;
    #ifdef BCE_TEST
    Serial.print("The Lx is ");
    Serial.println(lx);
    #endif
    return lx;
}
void BEC_Init(int buf, int address)
{
  Wire.beginTransmission(address);
  Wire.write(buf);//高字节流明寄存器 0x03,低字节流明寄存器0x04
  Wire.endTransmission();
}

[BCE]光照传感器测量光照度-arduino程序相关推荐

  1. 【花雕小实验01】使用万用表测量OPT101模拟光照传感器模块

    早上起来,尝试使用万用表来测量OPT101模拟光照传感器模块,这里调到直流电压20V档,模块供电5V, 正常室内光线时,测得电压为0.26V,凌晨光线很弱 用手指挡住光线,电压降为0.07V 使用台灯 ...

  2. 利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆

    利用arduino nano开发板配合oled.温度传感器.光照传感器.湿度传感器设计一个花盆 完整项目地址: https://github.com/linxinloningg/arduino_chi ...

  3. 【 Arduino 和水流量传感器测量水流量和体积】

    Arduino 和水流量传感器测量水流量和体积 前言 所需元器件 YFS201水流量传感器 电路原理图 Arduino水流传感器代码 Arduino水流量传感器工作 完整代码 前言 通过使用带有 Ar ...

  4. 51lcd显示光传感器c语言程序,基于51单片机1602液晶显示GY-30数字光照传感器BH1750FVI程序实例...

    基于51单片机1602液晶显示GY-30数字光照传感器BH1750FVI程序实例,系统由GY-30数字光照传感器.51单片机最小系统.1602液晶显示屏组成,电路简单,附件中的程序是实物验证过了的.1 ...

  5. BH1750 光照传感器文档详解 及 驱动设计

    前言 最近接触到一个应用,需要在低功耗的产品上加上光照度采集,正好最近有接触到一款光照传感器 BH1750 ,性能价格都合适,那么今天就抽空来好好测试一下. 那么要写一篇测试文章,我会尽量以新手的角度 ...

  6. 涂鸦模组开发光照传感器

    涂鸦模组开发光照传感器(OPT3006) 概述 涂鸦智能 视频教学 系统框架设计 OPT3006 超薄环境光传感器 TYZS5 模组 特点 PCB绘制 涂鸦零代码开发 涂鸦模组开发文章 最后 概述 亮 ...

  7. 从零开始的DIY智能家居 - 基于 ESP32 的智能光照传感器

    文章目录 前言 硬件选择 代码解析 获取代码 设备控制命令: 设备和协议初始化流程: 配置设备信息 回调函数注册 数据获取与发送流程 总结 前言 上周出差有点急,结果家里灯没关,开了整整一周的时间(T ...

  8. 高精度光照传感器基本介绍

    高精度光照传感器基本介绍 光照传感器内部采用了目前光照采集方面灵敏度较高的光敏采集器件,该器件拥有灵敏度高,响应迅速等诸多优点.内部还配有滤光片,余弦修正器,配合高精度的模拟电路,以及程序处理,对光照 ...

  9. 使用 PulseSensor 脉搏传感器测量心率之一:平台搭建

    转自:玩的就是心跳 -- 使用 PulseSensor 脉搏传感器测量心率 作者:邵国际 网址:https://zhuanlan.zhihu.com/p/27665378 写文章 https://pi ...

  10. 使用 PulseSensor 脉搏传感器测量心率之二:数据采集及保存( ProcessingPython)

    通常使用Pulse sensor心率传感器和arduino UNO搭建完硬件平台后,使用上位机PulseSensor_Amped_Processing_Visualizer软件,就可以查看实时心率图. ...

最新文章

  1. Science: 四万张大脑图像首次揭示人脑白质的基因基础
  2. ORACLE之SPFILE与PFILE
  3. python之迭代锁与信号量
  4. PHP:第三章——PHP中控制函数的函数
  5. 100篇精选算法技术文章收藏
  6. MVC与单元测试实践之健身网站(三)-角色与权限
  7. 华为云发布新slogan,新年伊始加速奔跑
  8. delete kubectl pod_kubectl delete
  9. MPC的终结——二次规划求解约束极值问题
  10. DT科技评论第35期:可以解锁任何手机的万能指纹
  11. MongoDB 数据库基本操作
  12. 世界知名半导体ST、NXP、Microchip、TI、Renesas公司的MCU和MPU定位、性能及特点
  13. 银河麒麟系统下安装Kingbase数据库
  14. 多功能纺织品易燃性测试仪市场现状及未来发展趋势
  15. ACE的CDR中的字节对齐问题
  16. python请输入一个人的名字_print('曾经有一份真挚的爱情放在我面前,那个人的名字是' + goddess),Python旅程开始的地方!...
  17. 腾讯mars xlog源码解析
  18. canvas 实现流星雨特效
  19. Restful风格的springMVC配搭ajax请求的小例子
  20. 用python实现成绩录入

热门文章

  1. Defaulting to user installation because normal site-packages is not writeable
  2. C/C++牛客网刷题练习之翻转链表篇
  3. ADDA数模转换(PCF8591)
  4. IEEE1588 Precision Time Protocol(PTP)
  5. win10资源管理器explorer总是崩溃重启
  6. 白苹果修复_ReiBoot Pro——iOS系统修复软件
  7. 视频教程-计算机二级公共基础(知识点与真题)-计算机等级考试
  8. 物联网应用技术竞赛——单片机笔记
  9. 世界地图展开图,来自 Simon's World Map
  10. php 教育类,php教育培训网站是哪个