# -*- 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()
# -*- 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)