1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | # -*- coding: utf-8 -*- import RPi.GPIO as GPIO import time #VCC接1号针脚,GND接6号针脚,SCK接11号针脚,DT接13号针脚 class Hx711(): def setup( self ): self .SCK = 11 # 物理引脚第11号,时钟 self .DT = 13 #物理引脚第13号,数据 self .flag = 1 #用于首次读数校准 self .initweight = 0 #毛皮 self .weight = 0 #测重 self .delay = 0.09 #延迟时间 GPIO.setwarnings( False ) GPIO.setmode(GPIO.BOARD) # Numbers GPIOs by physical location GPIO.setup( self .SCK, GPIO.OUT) # Set pin's mode is output GPIO.setup( self .DT, GPIO.IN) GPIO.setup( self .DT, GPIO.IN, pull_up_down = GPIO.PUD_UP) def start( self ): GPIO.output( self .SCK, 0 ) if GPIO. input ( self .SCK): time.sleep( self .delay) value = 0 while GPIO. input ( self .DT): time.sleep( self .delay) #循环24次读取数据 for i in range ( 24 ): GPIO.output( self .SCK, 1 ) if ( 0 = = GPIO. input ( self .SCK)): time.sleep( self .delay) value = value<< 1 #左移一位,相当于乘2,二进制转十进制 GPIO.output( self .SCK, 0 ) if GPIO. input ( self .SCK): time.sleep( self .delay) if GPIO. input ( self .DT) = = 1 : value + = 1 GPIO.output( self .SCK, 1 ) GPIO.output( self .SCK, 0 ) value = int (value / 1905 ) #1905为我传感器的特性值,不同传感器值不同。可先注释此步骤,再去测一物体A得到一个值X,而后用X除以A的真实值即可确定特性值 if self .flag = = 1 : #第一次读数为毛皮 self .flag = 0 self .initweight = value #初始值 else : self .weight = abs (value - self .initweight) #当前值减毛皮得测量到的重量 print ( self .weight) if __name__ = = '__main__' : send = Hx711() send.setup() while True : send.start() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | # -*- coding: utf-8 -*- import RPi.GPIO as GPIO import time #进程测试 from multiprocessing import Process,Manager #VCC接1号针脚,GND接6号针脚,SCK接11号针脚,DT接13号针脚 class Hx711(): def setup( self ): self .SCK = 11 # 物理引脚第11号,时钟 self .DT = 13 #物理引脚第13号,数据 self .flag = 1 #用于首次读数校准 self .initweight = 0 #毛皮 self .weight = 0 #测重 self .delay = 0.09 #延迟时间 GPIO.setwarnings( False ) GPIO.setmode(GPIO.BOARD) # Numbers GPIOs by physical location GPIO.setup( self .SCK, GPIO.OUT) # Set pin's mode is output GPIO.setup( self .DT, GPIO.IN) GPIO.setup( self .DT, GPIO.IN, pull_up_down = GPIO.PUD_UP) def GetData( self ,share_data): while 1 : if share_data[ 9 ] = = 1 : print ( "weight break!" ) break GPIO.output( self .SCK, 0 ) if GPIO. input ( self .SCK): time.sleep( self .delay) value = 0 while GPIO. input ( self .DT): time.sleep( self .delay) #循环24次读取数据 for i in range ( 24 ): GPIO.output( self .SCK, 1 ) if ( 0 = = GPIO. input ( self .SCK)): time.sleep( self .delay) value = value<< 1 #左移一位,相当于乘2,二进制转十进制 GPIO.output( self .SCK, 0 ) if GPIO. input ( self .SCK): time.sleep( self .delay) if GPIO. input ( self .DT) = = 1 : value + = 1 GPIO.output( self .SCK, 1 ) GPIO.output( self .SCK, 0 ) value = int (value / 1905 ) #1905为我传感器的特性值,不同传感器值不同。可先注释此步骤,再去测一物体A得到一个值X,而后用X除以A的真实值即可确定特性值 if self .flag = = 1 : #第一次读数为毛皮 self .flag = 0 self .initweight = value #初始值 else : self .weight = abs (value - self .initweight) #当前值减毛皮得测量到的重量 #print(self.weight) time.sleep( 0.2 ) share_data[ 1 ] = self .weight if __name__ = = '__main__' : managerdata = Manager(). dict () sharelock = Manager().Lock() managerdata[ 0 ] = 0 # flag managerdata[ 1 ] = 0 # weight data managerdata[ 9 ] = 0 # 结果图像 send = Hx711() send.setup() #1采集图像进程 t1 = Process(target = send.GetData,args = (managerdata,)) t1.deamon = True #伴随主进程关闭而关闭 t1.start() while True : print ( 'wegth' ,managerdata[ 1 ]) time.sleep( 1 ) |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
2023-04-12 pyqt5界面+oennet爬数据+excle表格
2022-04-12 python时间比较