Кнопка, которая дает ввод, имеет небольшую задержку - затем дает другой

Я новичок в сфере Arduino, и мой вопрос, скорее всего, ответят более опытные коллеги. Я пытаюсь создать код для переключателя/кнопки, который, когда вы нажимаете его, генерирует выходной сигнал, затем ждет (задерживает?) и производит другой (после этого заданного количества времени), прежде чем завершить передачу информации. Можно ли что-нибудь сказать по этому поводу? Как это будет выглядеть? Например, код, который я представляю, выглядит примерно так:

if(buttonisPressed){

  Function1 = 1;   // Выдается исходный вывод

  delay(1000);  // Устанавливаем задержку для следующего вывода

  Function2 = 1; // Второй вывод следует этому примеру после установленного времени задержки (только после одного нажатия, без вторичного)

}

Это фрагмент кода, который я использую, но мне не удалось заставить его работать.

Большое спасибо за помощь! Будем очень признательны за любые советы.

, 👍0

Обсуждение

что такое «генерировать ввод»? генерируется вывод. ввод читается., @Juraj

@Юрай Привет, Юрай! Спасибо что нашли время ответить. Чтобы уточнить: это будет сгенерированный результат., @Darkseid305

опубликуйте реальный код и опишите, что не так, @Juraj

В вашем операторе if установите флаг и метку времени с помощью функции millis(). Также в основном цикле напишите код, как в примере BlinkWithoutDelay, который активируется флагом. Внутри него вы можете сбросить флаг, @chrisl


1 ответ


1

Стандартный способ сделать это — подключить цифровой вывод ввода-вывода через (нормально разомкнутую) кнопку к земле. Внутри Arduino можно активировать подтягивающий резистор, чтобы поддерживать высокий уровень на выводе, когда кнопка открыта. Например, когда используется вывод №8: pinMode(8, INPUT_PULLUP). Программа следит за состоянием контакта, чтобы определить, была ли нажата кнопка. Подробное руководство по использованию переключателей для ввода данных в микрокомпьютеры вы можете найти здесь: http://www.gammon.com. au/forum/?id=11955

Обязательно ознакомьтесь с явлением, называемым «подпрыгиванием контактов»: при нажатии или отпускании кнопки контакты не размыкаются и не замыкаются сразу, а проходят серию быстрых размыканий/замыканий/размыканий/и т. д. состояния. Лучшая информация, которую я знаю о том, как с этим справиться, вы можете найти здесь: http://www.ganssle.com/debouncing.htm

,