Спасибо
А “сбрасывать” этот самый счетчик будете когда изменяется состояние выхода.
Разбираю пример
const int buttonPin = 3; // Кнопка
const int ledPin = 6; // Светодиод
unsigned long taiming; // Переменная ТАЙМИНГ (точка отсчёта)
bool ledOn; // Переменая которая хранит значение ЛедОн (0 или 1)
void setup() {
pinMode(ledPin,OUTPUT); // Светодиод это Выход
pinMode(buttonPin,INPUT); // Кнопка это Вход
ledOn = false; // Обозначаем начальное стостяние переменной ЛедОн=0
}
void loop() {
if (digitalRead(buttonPin)== HIGH) // Если кнопка не нажата и на входе 1
{
digitalWrite(ledPin,HIGH); // Следовательно если на входе 1 то и на выходе 1
ledOn = true; // Переводим переменную в 1
taiming = millis(); // ??????????????
}
if(ledOn) // Переменная сменила своё значение (в данному случае потому что digitalRead(buttonPin)== LOW)
if(millis() -taiming > 2000) // Начиаем отсчёт
{
digitalWrite(ledPin,LOW); // По истечению заданного времени переводим вывод в 0
ledOn = false; // А переменной присваиваем значение 0
}
}
Вопрос №1 Что делает строка 16?
Вопрос №2 Верны ли остальные комментарии к строкам?

А “сбрасывать” этот самый счетчик будете когда изменяется состояние выхода.
Победил, но есть вопросы

Вопрос №1 Что делает строка 16?
Подготавливает переменную для использования в строке 19.

Вопрос №2 Верны ли остальные комментарии к строкам?
На этот вопрос невозможно ответить, не видя принципиальной схемы.
Либо пин кнопки нужно притянуть к VCC резистором 10кОм, либо в строке 8 сделать так
pinMode(buttonPin,INPUT_PULLUP); // Кнопка это Вход

Во-первых, это не принципиальная схема, а монтажная (по ней удобно собирать устройство, но крайне неудобно анализировать работу).
Во-вторых, скетч и схема не соответствуют друг другу: на схеме есть детали, никак не отраженные в скетче
Ну а в-третьих, Вам уже указали на отсутствие подтяжки кнопки.
9-я строка по сути лишняя (без нее будет работать точно так же).
Комментарий в 14-й строке должен быть “Зажигаем светодиод”.
Комментарий в 18-й строке должен быть “Если светодиод горит”.
Комментарий в 19-й строке “Если прошло больше двух секунд”.
Только Вы проверьте логику программы. Для Вас получается, что “поступил сигнал” это “подали на Ардуину питание при отпущенной кнопке”. Это действительно то, чего Вы хотите?

9-я строка по сути лишняя
Еще 20 с небольшим лет назад инициализировать переменные считалось хорошим тоном. Как меняется всё и вся…

инициализировать переменные
Это надо было делать в 4-ой строке. И, кстати, в третьей, заодно, тоже.

в 4-ой строке
Это если в “стиле Си”, а в “стиле ардуино” все происходит в блоке setup() (не зря же его так назвали? )

Как меняется всё и вся…
Прямо как будто с тех пор изобрели новый язык с новыми правилами инициализации.

Еще 20 с небольшим лет назад инициализировать переменные считалось хорошим тоном. Как меняется всё и вся…
Может, 200? Не?
А то тогда и вода была мокрее…
Выскажу осторожное предположение, что наличие либо отсутствие необходимости инициализировать переменные зависит от типа переменных и от языка программирования, но никак не от периода истории.
Впрочем, если Вы не знаете ни одного, ни другого, ни третьего, тогда - “да”, все переменные следует вручную инициализировать перед использованием.