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

在研究使用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

蒼花星河

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

暂无评论

相关推荐

基于8051单片机实现电子时钟+数字秒表设计

概述 电子时钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显 示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许

CC2530 常用寄存器

一、端口初始化相关寄存器 代码示例:用按键1和按键2分别控制D4和D6灯 点我跳转 二、INT相关寄存器 代码示例:利用key1,key2来产生中断控制D3,D5灯,key1,key2为下降沿触