精华内容
下载资源
问答
  • arduino读取BEC光照传感器数据

    千次阅读 2016-09-13 17:47:43
    近期一个项目要用到光照传感器测量光照度,第一根项目是测量大棚里面的光照度,用的BH1750量程65535Lx,第二个项目是采集...回来发现网上并没有在arduino上使用BCE光照传感器的程序,现在贡献出来,下面是资料和代码

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

    #include <Wire.h> 
    #include <math.h>
    int BECaddress = 0x4A;
    void setup()
    {
       Serial.begin(9600);
       Serial.println("Starting up");
       Wire.begin();
       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();
      }


    展开全文
  • BH1750传感器,用于检测环境光光照强度。

    BH1750传感器,用于检测环境光光照强度。

    BH1750FVI是日本罗姆(ROHM)半导体生产的数字式环境光传感IC。其主要特性有:

    • I2C数字接口,支持速率最大400Kbps
    • 输出量为光照度(Illuminance)
    • 测量范围1~65535 lux,分辨率最小到1lux
    • 低功耗(Power down)功能
    • 屏蔽50/60Hz市电频率引起的光照变化干扰
    • 支持两个I2C地址,通过ADDR引脚选择
    • 较小的测量误差(精度误差最大值+/-20%)
    • GND 电源地
    • ADD I2C地址引脚
    • SDA I2C总线数据引脚
    • SCL I2C总线时钟引脚
    • VCC 电源 电压3-5V

     

    #include <Wire.h>
    #include <math.h>
    #include <MsTimer2.h>
    
    int BH1750address = 0x23;//BH1750 I2C地址  //ADDR="L" for this module
    byte buff[2];
    
    int flag = 0;//定时中断标志
    
    void timer()//定时中断函数
    {
      flag = 1;
    }
    
    void setup()
    {
      Wire.begin();
      Serial.begin(9600);
      MsTimer2::set(2000, timer); //定时器设置,每2秒触发一次timer函数操作
      MsTimer2::start();
    }
    
    void loop()
    {
      if(  flag )//
      {
        Serial.print( BH1750() );
        Serial.println("[lux]");
        flag = 0;//归零,等着定时中断重新赋值
      }
    }
    
    double BH1750() //BH1750设备操作
    {
      int i=0;
      double  val=0;
      //开始I2C读写操作
      Wire.beginTransmission(BH1750address);
      Wire.send(0x10);//1lx reolution 120ms//发送命令
      Wire.endTransmission();  
      
      delay(200);
      //读取数据
      Wire.beginTransmission(BH1750address);
      Wire.requestFrom(BH1750address, 2);
      while(Wire.available()) //
      {
        buff[i] = Wire.receive();  // receive one byte
        i++;
      }
      Wire.endTransmission();
      if(2==i)
      {
       val=((buff[0]<<8)|buff[1])/1.2;
      }
      return val;
    }
    
    

    光亮度数据参考
    晚上: 0.001-0.02;
    月夜: 0.02-0.3;
    多云室内: 5-50;
    多云室外: 50-500;
    晴天室内: 100-1000;
    夏天中午光照下: 大约10*6能量;
    阅读书籍时的照明度:50-60;
    家庭录像标准照明度:1400

    首页博客学院下载论坛问答活动专题招聘APPVIP会员
    搜CSDN
    
    创作中心
    
    Markdown编辑器
    富文本编辑器
    首页
    
    博客管理
    文章管理
    评论管理
    分类专栏
    订阅专栏
    博客搬家
    博客打赏
    博客设置
    博客模块管理
    自定义域名
    博客等级权益
    下载管理
    收益中心
    
    数据观星
    
    
    CSDN博客交流群
    
    打开手机QQ扫码
    或点击 这里加入群聊
    
    
    QQ客服
    
    arduino操作光照传感器BH1750(数字型,I2C接口) 
    32/100
    
    文章标签:
    分类专栏:
    Arduino_EspNodeMcu
    新建分类专栏
    最多选择3个分类专栏#为二级分类
    资源信息:
    请填写资源链接
    上传资源
    文章类型:
    *
    https://www.geek-workshop.com/thread-1610-1-1.html        https://www.arduino.cn/thread-92182-2-13.html
    *
    注意:转载请确认原文允许转载,或者您已经获得原文作者授权。转载文章不能设置为VIP可见。
    
    发布形式:
    收益中心 
    温馨提示:请勿发布涉及政治、广告、营销、翻墙、违反国家法律法规等内容,详见《CSDN资源共享规范》
    
    
    /*
    【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
    实验一百二十九:GY-302 数字量光强度检测 光照传感器 BH1750FVI 光线检测模块
    项目:依据光亮度控制LED
    Module        UNO
     5 VCC   ——   5V
     6 GND  ——   GND
     7 SCL    ——   A5
     8 SDA   ——   A4
     9 ADD  ——   NC
    */
     
    #include <Wire.h> //IIC库
    #include <math.h> 
     
    int BH1750address = 0x23;//芯片地址为16位23
    byte buff[2];
    void setup(){
      pinMode(13,OUTPUT);
      Wire.begin();
      Serial.begin(9600);
    }
     
    
    void loop(){
      int i;
      uint16_t val=0;
      BH1750_Init(BH1750address);
      delay(100);
      if(2==BH1750_Read(BH1750address)) {
       val=((buff[0]<<8)|buff[1])/1.2;
       Serial.print(val,DEC);     
       Serial.println("[lx]"); 
      }
     
      delay(150);
      if (val<100) {
        digitalWrite(13,HIGH);
      }
      else {
        digitalWrite(13,LOW);
      }
    }
     
     
     
    int BH1750_Read(int address) {
      int i=0;
      Wire.beginTransmission(address);
      Wire.requestFrom(address, 2);
      while(Wire.available()) {
        buff = Wire.read();  // read one byte
        i++;
      }
      Wire.endTransmission();  
     
      return i;
    }
     
    
    void BH1750_Init(int address) {
      Wire.beginTransmission(address);
      Wire.write(0x10);//1lx reolution 120ms
      Wire.endTransmission();
    }
     

    测量程序步骤:

    4、指令集合结构:

    5、测量模式说明:

    展开全文
  • 近期一个项目要用到光照传感器测量光照度,项目是测量大棚里面的光照度,用的BH1750量程65535Lx,而采集...发现网上并没有在arduino上使用BCE光照传感器的程序,现在贡献出来,下面Arduino代码。 地址:(宁夏大...

           近期一个项目要用到光照传感器测量光照度,项目是测量大棚里面的光照度,用的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();
    }

    展开全文
  • 今天,我将简单做一个当光照值低于某个值的时候,灯光自动打开,当高于某个值的时候,自动关闭。 设计代码原理; 首先,定义一个全局变量,并赋予初始值 然后,初始化程序 将设定某个IO口为输出模式 读取光度值...

    今天,我将简单做一个当光照值低于某个值的时候,灯光自动打开,当高于某个值的时候,自动关闭。

    设计代码原理;

    首先,定义一个全局变量,并赋予初始值

    然后,初始化程序

    将设定某个IO口为输出模式

    读取光度值

    使用判断语句

    当它大于某个值时,输出高电平

    否则,输出低电平

    代码如下:

    int a =300;   //定义一个全局变量,并且赋予初始值

    void setup()

    {

    pinMode(13,OUTPUT);  //设置它为输出模式

    }

    int num=analogRead(A0);//读取值

    if(num>=a)//当读取到的值大于设定值时

    {

    digitalWrite(13,HIGH);//输出高电平

    }

    else///当读取到的值小于设定值时

    {

    digitalWrite(13,LOW);//输出低电平

    }

    转载于:https://www.cnblogs.com/fqhy/p/8039460.html

    展开全文
  • Arduino】使用光敏电阻测量光照强度

    万次阅读 热门讨论 2017-08-19 15:45:15
    本文会使用一个光敏电阻配合Arduino完成光照数据的收集。准备 Arduino UNO 开发板 面包板 光敏电阻 1K-10K的电阻 连接   在黑暗的无光条件下,光敏电阻的阻值非常高。光线越强,电阻值反而越小。通过测量
  • Arduino+0.96OLED+GY30光照传感器Module UNO 一、电路连接 VCC <-----> 5V GND <-----> GND SCL <-----> A5 SDA <-----> A4 ADD <-----> NC OLED接线方式: VCC<————>3.3V ...
  • 使用GY-30数字光强传感器检测光照强度,并在串口输出检测结果; 实验器件 arduino X 1 GY-30数字光强传感器 X 1 USB数据烧写线 X 1 杜邦线 X 4 实验连线 GY-30 Arduino VCC 5V GND GND SDA A4 SCL ...
  • Arduino学习日记-使用GY-30光照传感器

    万次阅读 2016-06-22 11:19:59
    Arduino Pro Mini GY-30   二、接线 采用IIC通讯方式,GY-30VCC接+5V,GND接地。GY-30 SDA 、SCL分别接A4、 A5   三、源代码   #include // GY-30 // BH1750FVI // in ADDR 'L' mode 7bit addr #define ADDR 0b...
  • #include #include int BH1750address = 0x23;//BH1750 I2C地址 byte buff[2]; void setup() { Wire.begin(); Serial.begin(9600); } void loop() { Serial.print( BH1750() );... //读取数据
  • ARDUINO读取四块G-30(BH1750FVI)的光照强度 G-302是一款常见的光照强度传感器。核心芯片是BH1750FVI,这个芯片是3.3V供电的。但G-302模块带有TTL转换芯片,可以直接用5V供电,同时可以直接和arduino或者5V的单片机...
  • 这一篇介绍一个简单的传感器——光照强度传感器模块,它基于光敏电阻制造。使用传感器或者复杂的输出器件时,首先我们应该阅读它的文档,看一下它是否支持Arduino,如何使用,与类似产品对比哪种能更好的满足我们的...
  • 利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盘
  •  这次是打算用Arduino+ESP8266来实现智能配网以及通过EDP协议上传温度、湿度和光照强度等数据到OneNET平台,也可以用EDP下发命令来实现远程控制。 所需材料 :  Arduino_pro_mini 1  ESP8266-12F 1   USB-TTL ...
  • Arduino智能鱼缸

    2018-12-20 12:28:44
    Arduino平台实现对鱼缸的光照强度、水位、温湿度的检测和控制。是我之前大三时做的结课项目,配合光敏电阻,水位传感器、温湿度传感器、8x8发光点阵、抽水马达、温湿度传感器等。里面的函数块也可以拆开利用。
  • Arduino-lighthack.zip

    2019-09-18 10:52:24
    Arduino-lighthack.zip,非官方-在Meatspace创建自己的OSC小部件!光照,Arduino是一家开源软硬件公司和制造商社区。Arduino始于21世纪初,深受电子制造商的欢迎,Arduino通过开源系统提供了很多灵活性。
  • 基于Arduino的SD卡数据记录:英国DART甲醛传感器,激光PM2.5传感器,温湿度,气压…… Partly Done,Developing…… Data pre-process: Python matplotlib  Partly Done,Developing…… Backend: ...
  • arduino 光敏电阻

    2020-08-03 20:55:59
    arduino光敏电阻 目标是实现led的亮度随光照强度的增大而增大,减小而减小 void setup() { Serial.begin(9600); pinMode(9,OUTPUT); } void loop() { analogWrite(9,map(analogRead(0),20,900,255,0)); Serial...
  • arduino养花平台

    2020-05-05 16:34:13
    arduino实际下来多的还是动手接线啊,看线序啊,灯那些不说,IIC就4根还好,复杂的还是SPI,各个接口小板子线序不一样,UNO本来资源比较精巧,已经接上一两个模块了,再往上加就有点考手艺了,所以搞了下面这个,...
  • Arduino-LED亮度渐变

    2019-06-23 15:28:42
    在这次实验中我们一起来做实验学习怎么让将LED灯实现渐变的光照效果。 硬件 软件 arduino-1.8.9 电路连接图 按照如下电路图对电路进行链接 在arduino中编写代码 打开Arduino的IDE,新建Arduino项目。 ...
  • Arduino收集传感器数据

    千次阅读 2018-06-04 23:50:45
    光照传感器数据4.土壤湿度传感器5.触摸传感器数据我是用的是ArduinoMEGA2560R3开发板测试工具可以使用Adruino IDE 也可以使用Visual Studio2017(需要安装插件)以上传感器亲测,完全没问题,直接上代码吧/* Name: ...
  • 无线传感网上机,利用AndroidStudio和IAR编写程序,在Android平板上显示温度湿度光照及超声波测距传感器的数据.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 该系统以Arduino UNO和各类传感器为核心,设计并编写了Arduino UNO程序,实现实时、便捷地监测周围环境的温度、湿度、光照及噪音变化情况,并采集传感器数据上传到监测平台。实践表明,该设计能够经济、高效地实现...
  • 本篇介绍光敏电阻,通过模拟输入采集环境光强来控制LED灯亮度,做一个无需人为干预的自动控制设备。传感器是一种检测装置,能感受...光敏电阻是一种电阻值随照射光强度增加而下降的电阻,基于其内部光电效应,光照越...
  • Arduino+光敏传感器

    千次阅读 2020-03-13 15:55:03
    编写光敏传感器程序,实时读取环境光照度信息并显示 于 PC 串行端口监控窗口。并由监控窗口输入亮度值,要求当光照度过低时,系统自动点亮面包板上的发光二极管。 原理图 接线图 流程图加粗样式 代码: #define PIN_...

空空如也

空空如也

1 2 3 4 5
收藏数 88
精华内容 35
关键字:

arduino光照