如何在ESP32利用thonny驱动hx711称重模块,能够读出称重结果
时间: 2024-03-13 13:42:48 浏览: 173
基于HX711的称重模块stm32程序.zip_HX711 STM32_HX711模块 STM32_hx711外接stm32_h
5星 · 资源好评率100%
好的,以下是在ESP32上使用Thonny驱动HX711称重模块,并读出称重结果的代码:
```python
from machine import Pin
import time
class HX711:
def __init__(self, dout_pin, pd_sck_pin, gain=128):
self._dout_pin = Pin(dout_pin, mode=Pin.IN)
self._pd_sck_pin = Pin(pd_sck_pin, mode=Pin.OUT)
self._pd_sck_pin.value(0)
self._offset = 0
self._gain = 1
self.set_gain(gain)
def set_gain(self, gain):
if gain == 128:
self._gain = 1
elif gain == 64:
self._gain = 3
elif gain == 32:
self._gain = 2
self._pd_sck_pin.value(0)
self.read()
def read(self):
while self._dout_pin.value() == 1:
pass
data = 0
for i in range(24):
self._pd_sck_pin.value(1)
data = (data << 1) | self._dout_pin.value()
self._pd_sck_pin.value(0)
self._pd_sck_pin.value(1)
data = data ^ 0x800000
self._pd_sck_pin.value(0)
return data
def _calculate_offset(self, times=15):
sum = 0
for i in range(times):
sum += self.read()
self._offset = sum / times
def get_weight(self):
value = self.read() - self._offset
value = value / (self._gain * 1.0)
return value
hx711 = HX711(dout_pin=34, pd_sck_pin=32)
hx711._calculate_offset()
while True:
weight = hx711.get_weight()
print("Weight: %d" % weight)
time.sleep(1)
```
在上面的代码中,我们定义了一个HX711类,用于控制HX711模块。read方法用于读取称重结果,get_weight方法用于获取真实重量,_calculate_offset方法用于计算偏移量,以便去掉模块自身的误差。
在主程序中,我们创建了一个HX711对象,并调用了_calculate_offset方法来计算偏移量。之后,我们进入了一个while循环,在循环中不断地调用get_weight方法来获取当前的重量,并打印出来。程序会每隔1秒钟打印一次重量。
你可以将这段代码复制到Thonny IDE中,连接ESP32并运行程序,通过串口监视器查看称重结果。
阅读全文