Python循环中HX711称重数据仅单次添加至列表的问题求助
树莓派HX711称重传感器读数列表问题排查
嘿,我一眼就揪出问题啦——你每次循环都在重置列表,难怪永远只能拿到单个数据!
问题根源
你把X = []放在了for循环的内部,这意味着每一轮小循环都会清空之前的列表,重新创建一个空列表,然后只把当前这次的读数加进去。所以每次打印的自然就是只有一个元素的列表了。
修改后的代码
把列表初始化移到for循环外面,这样就能持续积累所有读数:
hx = HX711(5, 6) hx.set_reading_format("LSB", "MSB") hx.set_reference_unit(26.978) hx.reset() hx.tare() while True: X = [] # 把列表初始化移到for循环外,每次大循环创建一个新的空列表 for i in range(15): # 如果想要4个读数,直接把这里改成range(4)就行 val = int(hx.get_weight(5)) newval = abs(round((float(val/1000)),1)) X.append(newval) # 持续往同一个列表里追加读数 print(X) # 直接打印列表,不需要额外套一层[] hx.power_down() hx.power_up()
额外优化小建议
- 你原本预期4个读数,但代码里写的是
range(15),记得根据实际需求调整循环次数; print([X])会把列表再嵌套一层,变成[[x1, x2...]],直接print(X)就能得到干净的[x1, x2...]格式;- 如果读数过于频繁,建议在循环里加个小延迟(比如
time.sleep(0.1),记得先导入time模块),避免传感器或树莓派过载; hx.get_weight(5)本身已经是取5次读数的平均值,你外层的循环是再采集15次这个平均值,确保这符合你的实际测量需求。
内容的提问来源于stack exchange,提问作者Cxz
相关产品推荐
相关产品推荐

