У меня возникли проблемы с выполнением того, что, как мне кажется, должно быть довольно простой задачей на NIDAQ usb6002: у меня есть низкочастотная синусоида, которую я измеряю на аналоговом входном канале, и когда она пересекает ноль, я хотел бы зажечь светодиод на 1 секунду. Я пытаюсь использовать API-интерфейс nidaqmx Python, но не смог прояснить некоторые из своих основных вопросов с документацией. https://nidaqmx-python.readthedocs.io/en/latest/
Если кто-нибудь может предложить какие-либо мысли о коде или базовой логике моей установки, это было бы очень полезно.
Вот что я пробовал до сих пор. Я начинаю с некоторых импортов и определения моих каналов:
import matplotlib.pyplot as plt
from math import *
import nidaqmx
from nidaqmx import *
from nidaqmx.constants import *
import time
V_PIN = "Dev1/ai6"
LED_PIN = "Dev1/ao0"
Я понимаю, как работают задачи и другие вещи в целом — я могу читать и отображать сигнал с заданной частотой дискретизации и количеством выборок, используя методы task.ai_channels без каких-либо проблем. Но вот мое лучшее предположение о том, как выполнить «обнаружение нуля и запуск вывода»:
writeLED = nidaqmx.Task('LED')
writeLED.ao_channels.add_ao_voltage_chan(LED_PIN)
writeLED.timing.cfg_samp_clk_timing(1)
writeLED.triggers.start_trigger.cfg_anlg_edge_start_trig(V_PIN,trigger_level = 0)
writeLED.write([5], auto_start=True)
Это дает мне ошибку ниже в строке cfg_anlg_edge
DaqError: Requested value is not a supported value for this property. The property value may be invalid because it conflicts with another property.
Property: DAQmx_StartTrig_Type
Requested Value: DAQmx_Val_AnlgEdge
Possible Values: DAQmx_Val_DigEdge, DAQmx_Val_None
Я не знаю, почему здесь не поддерживается аналоговый входной канал. Страница 245 этого документа звучит так, как должно быть: https://media.readthedocs.org/pdf/nidaqmx-python/latest/nidaqmx-python.pdf
Я уверен, что есть и другие проблемы с кодом. Например, кажется, что манипуляции с примерными часами немного сложнее, чем то, что я написал выше, но я не смог найти ничего, что объясняло бы, как это будет работать в этой ситуации.
Заранее благодарю за любую помощь!