sine 发表于 2015-7-29 21:22:11

GY-30 + lcd1602 光照传感器

//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;
int i;
void setup() {
lcd.begin(16, 2);
Wire.begin();
Serial.begin(9600);
}

void loop() {
lcd.home();
lcd.print( BH1750() );
lcd.print("");
}
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 = Wire.read();
i++;
}
Wire.endTransmission();
if(2==i)
{
val=((buff<<8)|buff)/1.2;
}
return val;
    lcd.clear();
    lcd.setCursor(0,0);
}

sine 发表于 2015-7-29 21:27:04

照片怎样发

LLT0113 发表于 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;
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 << 8) | buff) / 1.2;//数据处理
//      Serial.println("Light sensor:");
      Serial.println("Illumination is:");
      Serial.print(val, DEC);
      Serial.println("");
      lcd.clear();//清屏
      lcd.setCursor(0,0);//光标从这里开始
      lcd.print("Illumination is");
      lcd.setCursor(0,1);//换行后显示光照强度
      lcd.print(val, DEC );//val将字符串转化为数,DEC十进制方式显示
      lcd.print("");
   }
delay(500);
}
int BH1750_Read(int address) //读取数据
{
      int i = 0;
      Wire.beginTransmission(address);
      Wire.requestFrom(address, 2);//数据格式
      while (Wire.available())
      {
          buff = 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上显示不出来啊
页: [1]
查看完整版本: GY-30 + lcd1602 光照传感器