Я тоже электрик. А ещё плиточник, слесарь, плотник, маляр..., сборщик мебели, ну и в конце только электронщик, проектировщик.
Вот тут увы... я электрик... квалифицированный... но вот в электронике фанаркин... но познаю потехоньку... и вот с таких ответов всегда заканчиваю свои вопросики)))) ибо выход есть всегда. и я его найду и пофиг на этот форум)
вообще-то обида - это глупая реакция, я вас не просто потроллил, а указал на ошибку. Более правильно было бы не обижаться, а разобраться, в чем она. и исправить. Конечно, код после этого не заработает, ибо таких ошибок вам предстоит еще сотни... но это шаг в верном направлении. Вам, как электрику, такая аналогия. Этот код - как брошенный на пол в пустой квартире моток провода. От него до готовой проводки еще надо разложить, отрезать, проштробить, установить розетки и выключатели, собрать распределительный щиток со счетчиком, а потом еще все это красиво заштукатурить и покрасить... И тут к вам подходит жилец и спрашивает - расскажи мне в двух словах как проводку собирают
знаю я этих "электриков", плавал Два электрика с дипломами, ДЕРЖА В РУКАХ СХЕМУ!!!, не смогли собрать пару проходных выключателей, что свет в коридоре можно было с двух точек включать... собирал сам. Я уж не говорю про щиток со счетчиком - собрали так, что инспектор как открыл - так и закрыл сразу. В итоге тоже сам собрал и сдал энергонадзору... А "электрики" эти... профи... годятся только для тупых работ - стены штробить и "точки" ставить.
Ну это еще нормально. Я (инж-электроник 1 кат.) не выдержал на покрасчике бордюров, белильщике деревьев и газонокосильщике.
Вот здесь переменной присваиваете значение считанное с входа, а в условие опрашиваете состояние входа - а необходимо if(sensor1 == 0), лучше не int а bool - HIGH or LOW, при инициализации лучше этой переменной присвоить если у Вас по низу то bool sensor1 = HIGH; И ещё необходимо программно включить подтягивающий резистор - от ложных срабатываний. Ну а по-хорошему - должно быть представление как работает датчик и сама схема - необходима отладка по частям и ещё много чего... Так что ребята правы на все сто - лучше купить готовый рабочий вариант проверенный временем - да ещё и с гарантией 10 лет.
А так? Поправил Ваш код. по факту написал заново-проверяйте Код (Text): void setup() { pinMode (1, OUTPUT); //Выходы pinMode (2, OUTPUT); pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); pinMode (6, OUTPUT); pinMode (7, OUTPUT); pinMode (9, OUTPUT); pinMode (11, INPUT); //Вход 11 пин pinMode (12, INPUT); //Вход 12 пин digitalWrite (11, HIGH); //Подтяжка digitalWrite (12, HIGH); //Подтяжка } void loop() { if (digitalRead(11) == LOW || digitalRead(12) == LOW) // если любая кнопка нажата { digitalWrite (1, HIGH); //Зажигаем огни delay (2000); digitalWrite (2, HIGH); delay (2000); digitalWrite (3, HIGH); delay (2000); digitalWrite (4, HIGH); delay (2000); digitalWrite (5, HIGH); delay (2000); digitalWrite (6, HIGH); delay (2000); digitalWrite (7, HIGH); delay (2000); digitalWrite (8, HIGH); delay (20000); } }
ну исправил ты одну строчку - код-то все одно полная помойка., отработки датчиков нет, задержки через делеи тут нельзя
Неправильно, а приоритет верх вниз, да и сброса нету у выходов. Если вниз спускаться, то сначала 9 зажигается...
Почему ТУТ нельзя? Какраз тут можно и нужно. Код ничего не делает как дрыгает ножками. А исправил я 80%. Ну а насчет алгоритма я не в курсе пусть сам думает Код писать за ТС я не собираюсь. Накидал ему скелет—сам пусть разбирается что и как
Ребят благодарю, как говорится главное зачать... дальше сам буду пробовать... думаю нет ничего не выполнимого.
Всегда рад критике... ибо как раз в таких ответах можно и найти ответ по своему вопросу... А по поводу обиды, даже и не думал) ибо толку...
Да, ссылочки я всегда просматриваю, даже если не подходит всегда чтото можно запомнить...\ А код как я и говорил оказался банально прост) и не нужно ни таймеров ни чего заумного))) Единственное для остальных режими HIGH и LOW подбираются под ваши датчики и релешки. в моем случае в таком виде все работает как и хотелось. Собственно рабочий скетч. Бесплатно для остальных. Код (C++): #define Rel1 2 // назначаем порт для реле1 #define Rel2 3 // назначаем порт для реле2 #define Rel3 4 // назначаем порт для реле3 #define Rel4 5 // назначаем порт для реле4 #define Rel5 6 // назначаем порт для реле5 #define Rel6 7 // назначаем порт для реле6 #define Rel7 8 // назначаем порт для реле7 #define Rel8 9 // назначаем порт для реле8 #define Dat1 11 // назначаем порт для Датчик линии 1 #define Dat2 12 // назначаем порт для Датчик линии 1 void setup() { pinMode(Rel1, OUTPUT); pinMode(Rel2, OUTPUT); pinMode(Rel3, OUTPUT); pinMode(Rel4, OUTPUT); pinMode(Rel5, OUTPUT); pinMode(Rel6, OUTPUT); pinMode(Rel7, OUTPUT); pinMode(Rel8, OUTPUT); pinMode(Dat1, INPUT); pinMode(Dat2, INPUT); } void loop() { // если есть движение на датчике 1 включаем релешки с 1 по 8 if (digitalRead(Dat1) == LOW) { digitalWrite(Rel1, LOW); delay (500); digitalWrite(Rel2, LOW); delay (500); digitalWrite(Rel3, LOW); delay (500); digitalWrite(Rel4, LOW); delay (500); digitalWrite(Rel5, LOW); delay (500); digitalWrite(Rel6, LOW); delay (500); digitalWrite(Rel7, LOW); delay (500); digitalWrite(Rel8, LOW); delay (60000); } // если есть движение на датчике 2 включаем релешки с 8 по 1 if (digitalRead(Dat2) == LOW) { digitalWrite(Rel8, LOW); delay (500); digitalWrite(Rel7, LOW); delay (500); digitalWrite(Rel6, LOW); delay (500); digitalWrite(Rel5, LOW); delay (500); digitalWrite(Rel4, LOW); delay (500); digitalWrite(Rel3, LOW); delay (500); digitalWrite(Rel2, LOW); delay (500); digitalWrite(Rel1, LOW); delay (60000); } digitalWrite(Rel1, HIGH); digitalWrite(Rel2, HIGH); digitalWrite(Rel3, HIGH); digitalWrite(Rel4, HIGH); digitalWrite(Rel5, HIGH); digitalWrite(Rel6, HIGH); digitalWrite(Rel7, HIGH); digitalWrite(Rel8, HIGH); }
В инете толком нет этого кода... нашел в одном месте подобие и слегка видоизменил... поскольку код не большой упрощать пока не думаю... в дальнейшем буду добавлять датчики и сервопривода, вентиляторы и т.п... короч потом буду модернизировать код. Обидно было что когда просил подобное накидать костяк все отправляли на сложные коды, и повторюсь нигде толком небыло горение диода после отпускания кнопки( Думаю этот код поможет другим начинающим... ибо это посути код подсветки лестницы под туже ардуино нано, ибо мне нужно всего 8 модулей запитать, плюс два датчика (в моем случае это датчики пересечения линии...).
какого кода не было? такого? Код (C++): digitalWrite(led, HIGH); delay (500); digitalWrite(led, LOW); - потому что никому не придет в голову искать его в гугле... имейте в виду. что прежде чем сюда чеого-то добавлять - надо избавится от операторов delay()