树莓派上的 GPioZero MCP3208 块读取

问题描述

操作系统:Raspbian Stretch

Python 版本:例如3.8

Pi 模型:例如Pi 3+ B 型

GPIO 零版本:1.5.1

使用的引脚工厂:

我正在用 RaspBerryPi 和 Python 做一个项目,我有 32 个继电器,我为每个继电器做 3 个测量,然后我做了 3 个测量的平均值并存储在一个列表中。 测量效果很好,但有时会发生错误并阻塞我的整个 GUI,原因 -> ADC 在支持测量时阻塞,我不知道为什么!

这是它阻塞的代码行。

leitura=gpiozero.MCP3208(channel=canal[ncanal],differential=False,max_voltage=adc_max_volt_ref,port=0,device=0).voltage

错误图片

enter image description here

有谁知道这个错误来自哪里以及如何解决它?

这是有时会阻塞的功能

import gpiozero

def average(lst):
        var = sum (lst)/len(lst)
        return var

def leitura_adc(ncanal,adc_max_volt_ref,casas_decimais):
        vect_leituras=[]
        canal={1:0,2:1,3:2,4:3,5:4,6:5,7:6,8:7}
        leitura=0
        cnt=0
        
        for i in range(3): # vai fazer X mediçoes
            while leitura==0:
                try:
                    print("leitura antes: ",leitura)
                    time.sleep(0.3)
                    leitura=gpiozero.MCP3208(channel=canal[ncanal],device=0).voltage # clock_pin=11,mosi_pin=10,miso_pin=9,select_pin=8
                    print("leitura depois: ",leitura)
                except:
                    leitura=0    
                    cnt=cnt+1
                    if cnt == 5:
                        string="Verificar ligação do ADC ao sistema!!!"
                        funcoes.func_imprime_gui(self,string,1)
                        break
            vect_leituras.append(leitura)
         resultado_leitura_adc=average(vect_leituras) # faz a media das 3 leituras
         print(round(vdc_media,casas_decimais))

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)