//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上显示不出来啊 |