极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15768|回复: 2

GY-30 + lcd1602 光照传感器

[复制链接]
发表于 2015-7-29 21:22:11 | 显示全部楼层 |阅读模式
//GY-30 光照传感器接法
// ADD - GND
// GND - GND
// SDA - A4
// SCL - A5
// VCC - 3.3V
#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,10,9,8,7,6,5,4,3,2);
#include<Wire.h>
#include<math.h>
int BH1750address = 0x23;
byte buff[2];
int i;
void setup() {
  lcd.begin(16, 2);
  Wire.begin();
  Serial.begin(9600);
}

void loop() {
lcd.home();  
lcd.print( BH1750() );
lcd.print("[lx]");
}
double BH1750()
{
int i=0;
double val=0;
Wire.beginTransmission(BH1750address);
Wire.write(0x10);
Wire.endTransmission();
delay(200);
Wire.beginTransmission(BH1750address);
Wire.requestFrom(BH1750address, 2);
while(Wire.available())
{
buff[i] = Wire.read();
i++;
}
Wire.endTransmission();
if(2==i)
{
val=((buff[0]<<8)|buff[1])/1.2;
}
return val;
    lcd.clear();
    lcd.setCursor(0,0);  
}
回复

使用道具 举报

 楼主| 发表于 2015-7-29 21:27:04 | 显示全部楼层
照片怎样发
回复 支持 反对

使用道具 举报

发表于 2016-12-6 16:00:24 | 显示全部楼层
//GY-30 光照传感器接法
// ADD - GND(BH1750 IIC设备地址引脚)
// GND - GND
// SDA - A4(IIC总线数据引脚)
// SCL - A5(IIC总线时钟引脚)
// VCC - 3.3V
#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,10,9,8,7,6,5,4,3,2);
#include<Wire.h>
#include<math.h>
int BH1750address = 0x23;//BH1750 IIC地址
byte buff[2];
void setup()
{
Wire.begin();
Serial.begin(9600);
lcd.begin(16,2);  //设定lcd行列數目(2x16)
lcd.clear();//清屏
lcd.setCursor(0,0);//光标位置置于0,0(光标所在的位置, 就是下一个字符将会被显示的位置)
}

void loop()
{
  int i;
uint16_t val = 0;
BH1750_Init(BH1750address);//初始化模块
delay(200);
if (2 == BH1750_Read(BH1750address))//读两个字节
  {
      val = ((buff[0] << 8) | buff[1]) / 1.2;//数据处理  
//      Serial.println("Light sensor:");
      Serial.println("Illumination is:");
      Serial.print(val, DEC);
      Serial.println("[lux]");
      lcd.clear();//清屏
      lcd.setCursor(0,0);//光标从这里开始
      lcd.print("Illumination is");
      lcd.setCursor(0,1);//换行后显示光照强度
      lcd.print(val, DEC );//val将字符串转化为数,DEC十进制方式显示
      lcd.print("[lux]");
   }
delay(500);
}
int BH1750_Read(int address) //读取数据
{
        int i = 0;
        Wire.beginTransmission(address);
        Wire.requestFrom(address, 2);//数据格式
        while (Wire.available())
        {
          buff[i] = Wire.read();  // receive one byte
          i++;
        }
        Wire.endTransmission();
        return i;
}
//获取光强函数
void BH1750_Init(int address)
{
        Wire.beginTransmission(address);
        Wire.write(0x10);//1lx reolution 120ms
        Wire.endTransmission();
}

请问 我这个程序为什么在1602上显示不出来啊
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 14:00 , Processed in 0.036044 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表