基于arduino GY30光照强度在1602液晶屏上显示(我的arduino和1602采用4位接线方法)
程序在串口显示可以,但在1602上显示乱码,这是为什么啊哪里错了//GY-30光照传感器接法//ADD-GND(BH1750IIC设备地址引脚)//GND-GND//SD...
程序在串口显示可以,但在1602上显示乱码,这是为什么啊 哪里错了//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();}附带一张4位接线图
展开
1个回答
迪凯特科技(北京)有限公司_
2025-01-03 广告
2025-01-03 广告
单片机串口通信的原理是利用单片机的串口通信模块,通过把数据转化为一位一位的用时序方式传送数据,实现单片机与外部设备之间的数据通信。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以...
点击进入详情页
本回答由迪凯特科技(北京)有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询