micropython的esp32,使用HX711AD模块的电子秤

在研究使用HX711AD模块的电子秤的时候,没有发现适用于micropython的代码,所以本人照着c语言的版本自行写了一个,代码如下.

但是下列代码有些许问题,

1.在等待DT返回高电平的时候,偶尔会直接跳过等待阶段,直接执行24个电平检测信号,导致数据错误.

2.因为读取DT是靠高低电平,来写二进制的,数据精度难以保证.

from machine import Pin,Timer,PWM,ADC
import utime
import ustruct
import select
from micropython import const
HX711_SCK = Pin(4,Pin.OUT)
HX711_DT = Pin(13,Pin.IN)
GapValue=const(450)
select.poll()
def HX711_Read():
    utime.sleep_us(1)
    HX711_SCK.value(0)
    count='0b'
    utime.sleep_us(1)
    print(HX711_DT.value())
    if HX711_DT.value()==1:
        for i in range(24):
            HX711_SCK.value(1)
            utime.sleep_us(1)
            HX711_SCK.value(0)
            utime.sleep_us(1)
            print(HX711_DT.value())
            if HX711_DT.value()==1:
                count=count+'1'
            else:
                count=count+'0'
    count = count.replace(count[2],'0')
    print(count)
    HX711_SCK.value(1)
    utime.sleep_us(1)
    count=int(count)/100
    print(count)
    HX711_SCK.value(0)
    utime.sleep_us(1)
    return count
def Get_Weight():
    HX711_Buffer = HX711_Read()
    Weight_Shiwu = HX711_Buffer
    print(Weight_Shiwu)
    Weight_Shiwu = Weight_Shiwu
    Weight_Shiwu =float(Weight_Shiwu/GapValue)
    return Weight_Shiwu
Weight = Get_Weight();
print(str(Weight)+'g')
    
    
    
    
    
    
    
    
    
    
    

版权声明:本文为CSDN博主「蒼花星河」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_51735477/article/details/122988743

生成海报
点赞 0

蒼花星河

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

ESP8266 无限重启踩坑

最近做了一个电子墨水屏万年历,在移植屏幕代码时遇到了esp8266无限软复位的问题,如果你的串口打印是以下图片所示,那么恭喜你问题解决了。 造成软复位的原因是因为,程序里有死循环&#xf

4路红外循迹模块使用教程

4路红外循迹模块使用教程 个人原创博客:点击浏览模块详细信息: 工作电压:DC 3.3V~5V 工作电流:尽量选择1A以上电源供电 工作温度:-10℃~50℃ 安装孔