Импульс при нажатии кнопки

Всем привет! Не могу разобраться как сделать. Есть код:

int ledPin = 13;
int inPin = 8;
int DoorOld = 0;
int DoorNew = 0;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  pinMode(inPin, INPUT);
  digitalWrite(inPin, HIGH);
}

void loop() {
  DoorNew = digitalRead(inPin);
  if (DoorOld != DoorNew && DoorNew == 0) {
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    DoorOld = DoorNew;
    Serial.println(DoorNew);
  }
  else if (DoorOld != DoorNew)
    DoorOld = DoorNew;
}

Код включает светодиод на 13 пине на 1 сек. не зависимо от того удерживается кнопка или нет. Но надо сделать чтобы еще одновременно со светодиодом в переменную записывалась 1 и через 1сек. сбрасывалась. пробовал разные варианты. Запись и сброс не происходит.

Нет кода.
1.Светодиод гори! Переменная Х=1
2. Ждем 1 с
3.Светодиод потухни! Переменная Х=0
Угадал?

X=1 X=0 не прокатывает. В мониторе не отображается.

@bublonik , код нужно вставлять по правилам форума. Для идиотов эти правила описаны в поле ввода (как только нажимаешь кнопку “Ответить”).

Покажите на пальцах как это делать. Обратные апострофы до и после кода не прокатили.

1.Светодиод гори! Переменная Х=1. Печатай"1"!!!
2. Ждем 1 с
3.Светодиод потухни! Переменная Х=0. Печатай “0”!!!

Значит тест на интелект тобой провален!
У всех “прокатывают”, а у тебя что? Пятки синие? ))

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

апострофы должны быть на отдельных строках, а не вместе с кодом.

Кстати, этот факт (что на разных строках) нужно добавить в описание.

ТС, вот так еще можно (ультра-супер-пупер-дупер-мупер способ):

Code

Рекомендую так разговаривать со своими друзьями. Интеллектуал.

Это условие,как и последующе else if никогда не настанут. Внимательно посмотри.
Условие срабатывает,когда new=0 И new!=old,т.е.
old должен быть равен 1, а она присваивается внутри условия.

Это ты шлепай по адресу и не пудри нам мозги.
Перед регистрацией правила форума читал? Нет? Прочти.

Светодиод на 13 пине норм отрабатывает. А присвоения переменной 1 и 0 почему то не происходит если добавить в код.

int ledPin = 13;
int inPin = 8;
int DoorOld = 0;
int DoorNew = 0;
int knopka = 0;
void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  pinMode(inPin, INPUT);
  digitalWrite(inPin, HIGH);
}

void loop() {
  DoorNew = digitalRead(inPin);
  if (DoorOld != DoorNew && DoorNew == 1) {
    digitalWrite(ledPin, HIGH);
    knopka = true;
    delay(1000);
    digitalWrite(ledPin, LOW);
    knopka = false;
    DoorOld = DoorNew;
   
  }
  else if (DoorOld != DoorNew)
    DoorOld = DoorNew;

     Serial.println(knopka);
}

В 15 строке 0 на 1 поменял.

Ваще ничего не понятно. Почему каждый раз появляется непонятная переменная? Эта вот KNOPKA .
Может надо вывод в сериал выносить за пределы условий? Println и печатает new=0, ведь блок условия 15 строки исрабатывает когда new=0

Этот код древний, не понятно откуда взятый.

pinMode(inPin, INPUT);
digitalWrite(inPin, HIGH);

Заменяется на одну строку:

pinMode(inPin, INPUT_PULLUP);

Что вообще по замыслу автора должно в этом коде происходить? Это же бредятина написана…
Причем тут какая-то кнопка, если ее нигде не читают? Нахуа нужна дверь и что с ней происходит?

Knopka это и есть переменная которой должна присваиваться 1 на 1 сек.
В этом коде она ни читается, выводится только в порт. Читаться будет потом, когда заработает.

Ну вот присваивается “1” на 1 сек.
Не морочте голову и сформулируйте целиком что вообще надо.

1 лайк

Рекомендую не нарушать правила форума

1 лайк

В том то и дело что не присваивается. В мониторе порта 1 не появляется. Пробовал к переменной привязывать светодиод, то же не загорается.

Но в это же время

digitalWrite(ledPin, HIGH);
digitalWrite(ledPin, LOW);

Срабатывает нормально.

Уже в третий раз говорю. Сначала соблюдается условие,в его блоке knopka принимает"1", после снова в “0”. Потом выводим. Откуда там “1” появится,если вне блока условий она по определению всегда “0”?
Для чего этот алгоритм? Включать-выключать свет при каждом цикле “открыл-закрыл”?