[Python] guardar os dados recebidos de um sensor numa lista em python

Discussão em 'Python' iniciado por Stack, Novembro 19, 2024.

  1. Stack

    Stack Membro Participativo

    Como poderei guardar 100 valores recebidos de um sensor numa lista em python, para realizar posteriormente o cálculo da media deles?

    Este é o código que tenho até agora:

    #biblioteca para chamar ficheiros de outra extensão
    from subprocess import check_output
    import time

    tam = 100

    def criaVetor(valor):
    vec = []
    for i in range(tam): # vamos fazer isto tam (N) vezes
    vec.append((valor))
    return vec

    def Average(lst):
    return sum(lst)/len(lst)



    while True:
    # chama o ficheiro em linguagem C em modo diferencial
    sensor_data= check_output(['./raspandmax','-d'], shell=False).decode()
    output_value = (sensor_data)# mostra o valor analógico lido no ADC
    adc_value = float(output_value)# converte o valor analógico de string para float
    #print(adc_value)# mostra o valor da conversão
    print(criaVetor(adc_values)
    time.sleep(1)


    quando mando correr o código ele adiciona sempre o mesmo valor lido e não os valores seguintes como tenho quando mando correr o código

    [0.8554112934311049, 0.8554112934311049, 0.8554112934311049, 0.8554112934311049, 0.8554112934311049, 0.8554112934311049, 0.8554112934311049, 0.8554112934311049, 0.8554112934311049, 0.8554112934311049]


    a ideia é ler os valores da seguinte forma, por exemplo:

    valor 1 = 0.25
    valor 2 = 0.26
    valor 3 = 0.3
    valor4 = ...
    valor5 = ...
    etc..


    e inserir os valores da seguinte forma : [0.25, 0.26, 0.3, ..., ...] e assim sucessivamente

    Consegui esta solução para estar sempre a ler o vetor vec e ir fazendo a média do vetor total, pode não ser a melhor solução mas para o objectivo mostra o que quero perfeitamente.

    from subprocess import check_output
    import time

    tam = 1
    vec = []
    def criaVetor(valor):

    for i in range(tam): # vamos fazer isto tam (N) vezes
    vec.append((valor))
    return vec

    def Average(lst):
    return sum(lst)/len(lst)



    while True:
    # chama o ficheiro em linguagem C em modo diferencial
    sensor_data= check_output(['./raspandmax','-d'], shell=False).decode()
    output_value = (sensor_data)# mostra o valor analógico lido no ADC
    adc_value = float(output_value)# converte o valor analógico de string para float
    #print(adc_value)# mostra o valor da conversão

    time.sleep(1)
    print("{0:.4f}".format(Average(criaVetor(adc_values)))


    mas agora tenho uma dúvida que é criar um ciclo while para estar sempre a ler o ficheiro raspandmax e dar o valor, e posteriormente só queria dentro do while True que me mostrasse o valor analógico recebido

    Continue reading...

Compartilhe esta Página