[求助]Arduino通过I2C连接LCD2004和HM5883问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6200|回复: 7

[已解决] [求助]Arduino通过I2C连接LCD2004和HM5883问题

[复制链接]
发表于 2014-2-19 22:57 | 显示全部楼层 |阅读模式
本帖最后由 wonderboy 于 2014-2-26 15:12 编辑

已经解决,SDA或者SCL有根针虚了,重新焊接后测试,数据刷新了!

Arduino通过I2C连接LCD2004和HM5883问题

上电后除只能显示一次,之后不论如何动传感器,LCD不刷新显示,各位老大能帮看看程序么?

[mw_shl_code=c,true]#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#if defined(ARDUINO) && ARDUINO >= 100
#define printByte(args)  write(args);
#else
#define printByte(args)  print(args,BYTE);
#endif

#define HM5883_ADDRESS 0x1E //0011110b, I2C 7bit address of HMC5883

LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 20 chars and 4 line display


void setup()
{
  
  lcd.init();                      // initialize the lcd
  lcd.backlight();


  Wire.beginTransmission(HM5883_ADDRESS); //open communication with HMC5883
  Wire.write(0x02); //select mode register
  Wire.write(0x00); //continuous measurement mode
  Wire.endTransmission();


}

void loop()
{
  
  Wire.begin();

  int x, y, z; //triple axis data

  //Tell the HMC5883 where to begin reading data
  Wire.beginTransmission(HM5883_ADDRESS);
  Wire.write(0x03); //select register 3, X MSB register
  Wire.endTransmission();


  //Read data from each axis, 2 registers per axis
    Wire.requestFrom(HM5883_ADDRESS, 6);
  if (6 <= Wire.available()) {
    x = Wire.read() << 8; //X msb
    x |= Wire.read(); //X lsb
    z = Wire.read() << 8; //Z msb
    z |= Wire.read(); //Z lsb
    y = Wire.read() << 8; //Y msb
    y |= Wire.read(); //Y lsb
   
  }
  

  //Print out values of each axis
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("X: ");
  lcd.print(x);
  lcd.setCursor(0, 1);
  lcd.print("Y: ");
  lcd.print(y);
  lcd.setCursor(0, 2);
  lcd.print("Z: ");
  lcd.print(z);

  delay(250);
}[/mw_shl_code]



 楼主| 发表于 2014-2-26 15:13 | 显示全部楼层
今天用新到的焊台重新焊接了针脚,问题解决了。有针焊虚了!
 楼主| 发表于 2014-2-19 23:16 | 显示全部楼层
另注:通过串口进行查看,发现输出数据一直不变。初始是什么数据,就一直输出什么数据。
发表于 2014-2-20 14:41 | 显示全部楼层
接1602能显示?
 楼主| 发表于 2014-2-20 16:16 | 显示全部楼层
LCD2004可以显示第一次读取的数据,但是数据再读取就不刷新了!
 楼主| 发表于 2014-2-20 16:52 | 显示全部楼层
我上拉电阻是4K7。
 楼主| 发表于 2014-2-20 17:29 | 显示全部楼层
我测试了LCD的刷新显示,通过I2C没有问题,短期内我检查不了传感器模块,因为买的电焊台还没到,需要重新焊接排针再测试一遍!我现在怀疑引脚有短路的地方!
 楼主| 发表于 2014-2-22 18:21 | 显示全部楼层
今天订货的万用表到了,测试了SDA和SCL端,可能短路了!但是买的吸焊带和调温焊台还没到,预计周一重新焊接再测试一遍!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-4 17:51 , Processed in 0.109967 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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