Se que la raspberry no es buena en la adquisición de datos en tiempo real de una raspberry, se que es superado por arduino en este aspecto, pero quiero intentar con interrupciones para la adquisición.
El codigo va esta manera, cuando lea un flanco de subida en la señal CLOCK, GPIO 12, debe iniciar la captura en el gpio 23 y 24, almacenar el dato binario en un archivo de texto, en una fila de dos binarios, correspondiente a cada GPIO, despues dar salto de linea, finalmente recibir otro flaco de subida y repetir la tarea mientras esta en tiempo de ejecución.
El problema es que no captura los datos, no se si es la interrupción pero no me la toma cuando debería, intente cambiar el add_event_detec por un wait_for_edge pero me sale un error :
TypeError: captura() takes 0 positional arguments but 1 was given
ayuda porfavor
Código: Seleccionar todo
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM) # formato para utilizar los pines de la rasberry
Clock = 12
Data1=23
Yb=24
flag=False
GPIO.setup(Clock,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(Data1,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(Yb,GPIO.IN,pull_up_down=GPIO.PUD_UP)
archivo = open("datos.txt", "a")
#tres columnas, unq line apor cada dato diferente
contador=0
def captura (self):
flag=True
contador=1
GPIO.add_event_detect(Clock, GPIO.RISING)
GPIO.add_event_callback(Clock, captura)
t=time.time()
while (time.time()-t<18):
#while True :
if flag==True:
salida=str(int(GPIO.input(Data1)))
salida=salida+' '+str(int(GPIO.input(Yb)))+'\n'
flag=False
archivo.write(salida) #inte
archivo.close()
print(contador)