Ahoj. Čtu na Raspberry Pi 4 dva kanály z AD převodníku (mikrofony). Pokud kód spustím, jak je uveden níže, program při počtu prvků=50 po 38 cyklech ztuhne. Při počtu prvků=25 tuhne po 76 cyklech, při 100 prvcích po 19 cyklech. Zdá se to neuvěřitelné, ale pokud zplatním níže označený řádek "print(pole_1)" na konci def mer_zvuk(), program jede očekávaně (skončil jsem u 6026 cyklů, než jsem ho sestřelil). Máte, prosím, někdo nápad, čím to může být? Pokud nahradím hodnotu čtenou z převodníku náhodným číslem, jede to taky dobře, převodník je podle mě ale v pořádku. Díky za jakýkoliv nápad. Jirka
from gpiozero import MCP3008
from time import sleep
import numpy as np
#
volty = [0, 0]
vref = 3.3
maxval_0 = 0
maxval_1 = 0
pocet_prvku = 50
pole_0 = np.ones(pocet_prvku, 'i')
pole_1 = np.ones(pocet_prvku, 'i')
#
def mer_zvuk():
global maxval_0
global maxval_1
global pole_0
global pole_1
#
for x in range(pocet_prvku):
volty[0] = MCP3008(channel=0).value * vref
volty[1] = MCP3008(channel=1).value * vref
pole_0[x] = int(volty[0] * 1000)
pole_1[x] = int(volty[1] * 1000)
sleep(0.01)
maxval_0 = max(pole_0)
maxval_1 = max(pole_1)
# print(pole_1) # tohle když není platný kód, tak program po několika průbězích tuhne!!!
pocet = 0
while pocet != 10000:
mer_zvuk()
pocet = pocet + 1
print(str(maxval_0) + " " + str(maxval_1) + " " + str(maxval_0 - maxval_1))
print(pocet)