连接一个可以正常运行,但是连接上第二个之后,第二个无法正常工作,一直返回-1的值,并且发热滚烫。
代码如图
Arduino无法同时连接多个hx711模块,如何解决?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
18条回答 默认 最新
关注 🕗晚上好,题主!目前:🟢[在线]
📢参考通义千问、由郭老师整理提供!
📣今日诗号:疏影横斜,暗香浮动,低酌浅唱月明中。休去,休去,惊起一枕奇梦。你的问题在于你尝试在同一时刻初始化两个HX711模块,但Arduino Uno的数字引脚资源有限,不能同时为两个模块提供足够的I2C通信。为了解决这个问题,你需要在初始化和读取数据时进行一些调整。以下是修改后的代码,使用了两个不同的I2C地址来区分两个模块:
#include <Wire.h> #include "HX711.h" const int LOADCELL_DOUT_PIN1 = 4; const int LOADCELL_SCK_PIN1 = 5; const int LOADCELL_DOUT_PIN2 = 2; const int LOADCELL_SCK_PIN2 = 3; HX711 scale1(LOADCELL_DOUT_PIN1, LOADCELL_SCK_PIN1, 0x4e); // HX711默认地址是0x4e HX711 scale2(LOADCELL_DOUT_PIN2, LOADCELL_SCK_PIN2, 0x4f); // HX711的第二个地址通常是0x4f void setup() { Serial.begin(57600); // 初始化每个模块 if (!scale1.begin()) { Serial.println("Error initializing scale1"); return; } if (!scale2.begin()) { Serial.println("Error initializing scale2"); return; } Serial.println("HX711 modules initialized."); } void loop() { if (scale1.is_ready()) { long reading_1 = scale1.read(); Serial.print("Scale 1: "); Serial.println(reading_1); delay(1000); } if (scale2.is_ready()) { long reading_2 = scale2.read(); Serial.print("Scale 2: "); Serial.println(reading_2); delay(1000); } }
这里我将两个模块的DOUT和SCK引脚分别分配到了不同的数字引脚,并给每个模块指定了不同的I2C地址(默认地址是0x4e和0x4f)。这样,它们就可以在不冲突的情况下独立工作。
请注意,确保你的硬件连接正确,并且每个模块的电源和地线都连接在一起。如果问题仍然存在,可能需要检查I2C通信是否稳定,或者尝试更改其中一个模块的I2C地址。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 使用ESP8266连接阿里云出现问题
- ¥15 被蓝屏搞吐了,有偿求帮解答,Ai回复直接拉黑
- ¥15 BP神经网络控制倒立摆
- ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
- ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
- ¥30 Unity接入微信SDK 无法开启摄像头
- ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
- ¥20 cad图纸,chx-3六轴码垛机器人
- ¥15 移动摄像头专网需要解vlan
- ¥20 access多表提取相同字段数据并合并