树莓派上的 GPioZero MCP3208 块读取

时间:2020-12-23 13:55:10

标签: python raspberry-pi adc

操作系统: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], differential=False, max_voltage=adc_max_volt_ref, port=0, 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))

0 个答案:

没有答案
相关问题