Передача одного импульса из функционального генератора Tektronix в Arduino UNO

Я настроил одиночный импульс (длительностью ~ 400 мс), используя функцию пакетной передачи в функциональном генераторе Tektronix AFG3102, и я хочу передать этот сигнал на цифровой вывод Arduino UNO. По сути, я хочу непрерывно (в цикле) выполнять считывание на выводе 7, используя встроенную функцию digitalread(). Поэтому я ожидаю увидеть 0, когда я не запускал сигнал, и 1, когда я запускаю сигнал длительностью 400 мс, а затем возвращаюсь к 0. Однако здесь это не так, поскольку я просто считываю 0, даже несмотря на то, что я запускаю свой сигнал. Интересно, что когда я меняю ширину импульса на 1 мс, я вижу проходящий сигнал, но, похоже, он работает с 400 мс.

Я разместил свой код здесь для вашего ознакомления. Я был бы очень признателен за некоторую помощь в этом вопросе.

void setup() {      
    Serial.begin(9600); // запустить последовательный для вывода
    pinMode(7,INPUT);
}
void loop() {
      Serial.println(digitalRead(7));
      Serial.print('\n'); 
}

Спасибо тебе,

Никан

, 👍1

Обсуждение

На какое напряжение вы установили функциональный генератор? Также в настоящее время вы очень быстро заполняете последовательный буфер. Пробовали ли вы задержку в конце loop(), например 50 мс, и/или увеличить скорость передачи до примерно 115200?, @chrisl

Ваш AFG делит землю с Arduino? Как выглядит пульс на прицеле? Примечание: в Serial.print('\n'); нет смысла, так как Serial.println() уже добавляет "\r\n". @chrisl: Заполнение последовательного буфера не должно вызывать проблем: оно просто добавляет небольшую задержку (<7 мс) к передаваемым данным., @Edgar Bonet

@chrisl: напряжение от функционального генератора составляет 3 Вpp. Также я не понимаю, что, когда я отправляю непрерывные прямоугольные волны, PIN 7 начинает подниматься при напряжении выше 2 Vpp. Конечно, мне нужно держать это ниже 5., @Nikan

@chrisl: Также, чтобы ответить на ваши вопросы о земле. На самом деле они связаны., @Nikan