Евгений - а почему не эквивалентно? итог же вроде один, кнопку нажал - горит - отпустил - погасло, в чем разница?
Дык я ж только что написал - вот, чуть выше.
дык кто-то не читатель, а может просто не понимает написанного, так бывает )))
ну если это требовательно к системе , где играют каждая миллисекунда , то возможно , а почему может случится
Впишите сюда текст цитаты
Может получиться так, что сработают ОБЕ ветки ветвления или не сработает НИ ОДНА.
Вспоминайте про дребезг контактов - там порт мотает как моряка на суше.
Да, как … по кочану
if (digitalRead(2) == HIGH) // когда на пин 2 поступает высокий сигнал
{
digitalWrite(13, HIGH); // зажигаем светодиод
digitalWrite(12, HIGH); // зажигаем светодиод
}
if (digitalRead(2) == LOW) // когда на пин 2 поступает низкий сигнал
{
digitalWrite(13, LOW); // выключаем светодиод
digitalWrite(12, LOW); // выключаем светодиод
}
Если в момент, когда программа соберётся исполнять строку №1 уровень на пине №2 будет HIGH, а за время, пока исполняются строки №№2-5 он успеет измениться на LOW, то сработают ОБЕ ветки. Чего тут непонятного-то?
А вот игнорирование таких ошибок (типа у меня не такие требования) приводит к тому, что система иногда (редко) “необъяснимо” глючит. Обычно это списывают на китайские компоненты, хотя в реальности виноваты российские (или ещё какие) мозги разработчика.
понял , в чем суть, отсуда вывод - чем меньше строк - тем лучше , и значит приведенный мной код немного неправильный, значит вместо 11 строк будет корректнее работать на 4 строках кода?
Это значит, что решение о действии должно приниматься в одном месте, а не в десятках.
Т.е. так
Если состояние эквивалентно активному, делать первое, а в противном случае - второе.
А не так
Если состояние эквивалентно активному, делать что-то.
Если состояние не эквивалентно активному, делать другое.
спасибо за разъяснение ,
Да, я именно это и имел в виду.
Только вопрос: указанная особенность - это существенная часть алгоритма или по сути нежелательный побочный эффект неаккуратного программирования.
По логике - именно второе.
Следовательно - да, не эквивалентно. За счет исправления имеющейся в исходном материале логической ошибки.
А вот ХЗ! Эти ньюфаги - они такие затейники
всем доброго времени , появился вопрос, можно ли на несколько кнопок использовать один подтягивающий резистор, который будет стоять от GND на кнопки , как это может повлиять на работоспособность . интересует 1 резистор на 4 кнопки , ну или как вариант по одному на 2 , при первом варианте может случится так что могут быть одновременно нажаты две кнопки и через резистор может пойти другое значение , а второй вариант это исключает , прошу строго не судить.
при нажатии одной кнопки будут срабатывать все четыре
Схему нарисуйте.
да , нарисовав схему понял что не пройдет такой фокус. спасибо , если не сложно - можно не ВЫкать
Эт надо заслужить
разве прозъбы недостаточно ? обычно наоборот , на вы обращаются к тем кто имеет статус, опыт , а я сам прошу со мной по простому , даже если крепкое словечко прилетит - пойму
пройдет, если в схему добавить четыре диода.
почему все сразу велосипед изобрести пытаются? на пальца можно же объяснить чего хотите в конечном результате, тогда будет четкий ответ, нельзя, можно, как можно иначе и т.д.
конечно я могу рассказать что хочу - и найдется кто нибудь кто напишет код , он для любого из вас простой как true но моя цель хоть чему то научиться, пусть простому , пусть с подсказками , сломав голову , но чтобы это было на пользу . честно - читая книгу осознаю - что тупой я как тот валенок, что стоит в углу
тогда можно узнать, конкретно, зачем понадобилось на четыре кнопки ОДИН подтягивающий резистор вешать? экономия, особый ход мыслей или еще что-то?
скорее всего ход мыслей- экономии тут никакой не пахнет, просто когда с одного места надо взять сигнал по нескольким параллелям - думал что может проканать , но видимо н в данном случае, . ещё раз опишу свою задачу- 4 кнопки попарно - управляют 2мя двигателями от привода дворников авто, вверх-вниз и вправо -влево, через промежуточные реле , схема пока что только в голове- на каждый двигатель по два реле - чтобы менять полярность - знаю что можно использовать драйвера - но для меня это пока очень сложно - вот и пытаюсь идти по наипростейшему пути. смысл - 2 кнопки поднимают и опускают исполнителя- а другие две - перемещают вправо - влево
как то так