Помогите со скетчем
- Войдите на сайт для отправки комментариев
Вс, 08/03/2020 - 12:59
int timer = 100; int button = 0; int buttonState = 0; void setup() { Serial.begin (9600); for (int thisPin = 2; thisPin < 8; thisPin++) { pinMode(thisPin, OUTPUT); } } void loop() { buttonState = digitalRead(button); if(buttonState == HIGH) { for (int thisPin = 2; thisPin < 8; thisPin++) { digitalWrite(thisPin, HIGH); delay(timer); digitalWrite(thisPin, LOW); } for (int thisPin = 7; thisPin >= 2; thisPin--) { digitalWrite(thisPin, HIGH); delay(timer); digitalWrite(thisPin, LOW); else { break { } }}
Спасибо что зашли в тему ! Как заставить цикл for работать при нажатой кнопке (пока кнопка выдает HIGH цикл будет работать, то есть кнопку нужно держать) ? Куда else вообще ставить ?
Строго говоря, вопрос некорректен.
1. В программировании используются различные типы циклов, в частности:
- когда нужно обеспечить фиксированное количество повторений цикла - for,
- когда требуется выход из цикла по условию - while.
Так что правильное решение заменить цикл for на цикл while.
2. Цикл for не предполагает никакого else.
3. Ввиду того, что Вы не сумели сформулировать, чего именно Вы хотите добиться от программы, дать определенный совет невозможно, но не исключено, что может оказаться полезным оператор if.
А он не работает?
Ответ очень хороший. Нигде в интернете не увидел такого развернутого объяснения использований различных циклов. (не ирония :D)
По программе, получается бегущий огонек, который должен управляться кнопкой.
Как управлять? Мы тут не можем знать, что подразумевается под этими словами. Нужно точное описание. Например. Если нажать кнопку огонёк должен бежать с начала (с первого диода) или с места предыдущей остановки? Если отпустить кнопку то огонёк погаснет или только остановится? Если должен гореть, но кнопку отпустили в момент когда один погас, а следующий не загорелся - что делать? Вопросов ещё много. Без точного описания невозможно создать программу.
В начале темы указано, цикл for запустится только тогда, когда кнопка выдаст HIGH. То есть, для того чтоб огонек бегал, надо держать кнопку.
ну пральна, один раз зашли в while и выйти от туда не получится.
ведь buttonState больше никогда не обновится.
он вообще не должен идти дальше while если условие в скобках не выполнено
А кнопка с резистором?
Вы так и не удосужились написать точно, чего Вы хотите.
Попытайтесь заменить в последнем коде while на if. Возможно, получится именно то, что Вы хотели (если Вы хотели, чтобы огонек совершал всегда целое число полных обходов).
Не помогло. Программа обходит состояние кнопки и сразу включает цикл.
Выше несколько раз описал задачу.
Цикл for (гонять огонек от 2 пина до 4 и обратно) начнет свою работу только если кнопка выдает HIGH
Не помогло. Программа обходит состояние кнопки и сразу включает цикл.
началось...
я второй кто спрашивает - как подключена кнопка?
Правильно подключена. С резистором на 5кОм к минусу.
Правильно подключена. С резистором на 5кОм к минусу.
аааа..., ну тогда все должно работать, успехов.
Мне интересно, а какой ответ вы ожидали ?
Подключена стандартно для ардуино, на одном конце питание с подтягивающим рез-ом, и второй конец (N.O) в контроллер. Есть еще какие-то способы ?
Мне интересно, а какой ответ вы ожидали ?
Подключена стандартно для ардуино, на одном конце питание с подтягивающим рез-ом, и второй конец (N.O) в контроллер. Есть еще какие-то способы ?
есть, и не один.
пока вы схему подключения, свою (стандартную), не нарисуете, дальше понять вашу ошибку не представляется возможным.
Подтягивающий (pullup) резистор к минусу?
В данном случаи - способ подключения один.
Ну не к плюсу же..
ну не к плюсу же..
Вообще-то pullup - это именно к плюсу.
svitr, и еше раз: изложите, пожалуйста, подробно, что именно Вы хотите от скетча. Пара общих фраз на подробное изложение совершенно не тянут.
Собственно, для конструктивного обсуждения необходимо следующее:
1. Полный скетч.
2. Полная схема.
3. Описание того, что хочется.
4. Описание того, как это сейчас работает.
5. Подробное описание, чем 4 отличается от 3.
а тогда это что такое
так куда кнопка то подключена?
Вообще-то pullup - это именно к плюсу.
svitr, и еше раз: изложите, пожалуйста, подробно, что именно Вы хотите от скетча. Пара общих фраз на подробное изложение совершенно не тянут.
В данном случаи я так понимаю нам надо обеспечить на кнопке минус, во избежании всяких наводок и пр., поэтому подтянул кнопку к минусу.
Поскольку алгоритм очень простой он поместился в пару фраз. А что еще туда добавить ? Загружаешь скетч, ничего не должно происходить. Никаких миганий, ни одна лампа не должна гореть. Нажал на кнопку, и пока держишь эту кнопку нажатой, должен выполнятся цикл. Отпустил - цикл прервался.
а тогда это что такое
так куда кнопка то подключена?
На нулевой пин, который далее задекларирован как вход.
Вообще-то pullup - это именно к плюсу.
svitr, и еше раз: изложите, пожалуйста, подробно, что именно Вы хотите от скетча. Пара общих фраз на подробное изложение совершенно не тянут.
Собственно, для конструктивного обсуждения необходимо следующее:
1. Полный скетч.
2. Полная схема.
3. Описание того, что хочется.
4. Описание того, как это сейчас работает.
5. Подробное описание, чем 4 отличается от 3.
Все описал же уже. Скетч выше, схему с кнопкной выше. Схему со светодиодами кидать не буду, сам алгоритм работает, огонек бегает с одной стороны в другую, вопрос в том что состояние кнопки не читается. Грузишь прогу в ардуино и огонек сразу начинает бегать.
а тогда это что такое
так куда кнопка то подключена?
На нулевой пин, который далее задекларирован как вход.
звучит как издевательство
или я ослеп сегодня?
Правильно подключена. С резистором на 5кОм к минусу.
В электронике "стандартных" подключений конечно нет, но есть типовые.
Типовым включением кнопки является полностью обратное: подтягивающий резистор к Vcc, нормально кнопка выдает HIGH, нажатие замыкает на GND. Активный LOW используется повсеместно по многим причинам. Две основные - "подвешенный" конец дает HIGH и независимость от уровня 5 или 3.3.
Описанный тобой способ не ошибка, но чаще всего используется в учебных целях.
а тогда это что такое
так куда кнопка то подключена?
На нулевой пин, который далее задекларирован как вход.
звучит как издевательство
или я ослеп сегодня?
О Боже, вы попросили ОБЩУЮ схему подключения кнопки - я вам ее дал. Это рисунок из интернета, который просто изображает каким образом выполнено подключение. У меня на нулевом стоит. Светодиоды от 2 до 4. Итого 3 лампы (2,3,4 пины).
Хватит глупых вопросов, и хождений по кругу, аппаратно все верно, мой опыт автоматика-электрика позволяет мне выполнить такие элементарные соединения без ошибок , здесь программный косяк поэтому я обратился сюда.
а тогда это что такое
так куда кнопка то подключена?
На нулевой пин, который далее задекларирован как вход.
звучит как издевательство
или я ослеп сегодня?
О Боже, вы попросили ОБЩУЮ схему подключения кнопки - я вам ее дал. Это рисунок из интернета, который просто изображает каким образом выполнено подключение. У меня на нулевом стоит. Светодиоды от 2 до 4. Итого 3 лампы (2,3,4 пины).
Хватит глупых вопросов, и хождений по кругу, аппаратно все верно, мой опыт автоматика-электрика позволяет мне выполнить такие элементарные соединения без ошибок , здесь программный косяк поэтому я обратился сюда.
О боже, от умения правильно подавать материал зависит 90% успеха.
Вы, мля, умник я смотрю, на 0 и 1 пины повесить просто так нельзя!
почему, да вам это и не надо знать, с опытом автоматика-электрика.
а тогда это что такое
так куда кнопка то подключена?
На нулевой пин, который далее задекларирован как вход.
звучит как издевательство
или я ослеп сегодня?
О Боже, вы попросили ОБЩУЮ схему подключения кнопки - я вам ее дал. Это рисунок из интернета, который просто изображает каким образом выполнено подключение. У меня на нулевом стоит. Светодиоды от 2 до 4. Итого 3 лампы (2,3,4 пины).
Хватит глупых вопросов, и хождений по кругу, аппаратно все верно, мой опыт автоматика-электрика позволяет мне выполнить такие элементарные соединения без ошибок , здесь программный косяк поэтому я обратился сюда.
О боже, от умения правильно подавать материал зависит 90% успеха.
Вы, мля, умник я смотрю, на 0 и 1 пины повесить просто так нельзя!
почему, да вам это и не надо знать, с опытом автоматика-электрика.
Вы можете покинуть тему. Завтра на работу, вагоны сами не разгрузяться.
Вот тебе твой рабочий код, исправленный и проверенный.
На пин 0 НИЧЕГО нельзя подключать. Кнопка на 2, диоды - с 3 по 8.
Вообще-то pullup - это именно к плюсу.
svitr, и еше раз: изложите, пожалуйста, подробно, что именно Вы хотите от скетча. Пара общих фраз на подробное изложение совершенно не тянут.
В данном случаи я так понимаю нам надо обеспечить на кнопке минус, во избежании всяких наводок и пр., поэтому подтянул кнопку к минусу.
Вам про Фому, а Вы опять про Ерему.
Я Вас не спрашивал, как Вы что-то там понимаете, я лишь порекомендовал изложить Ваш вопрос, пользуясь определенной структурой.
Поскольку алгоритм очень простой он поместился в пару фраз.
Перечитайте еще раз вопросы из сообщения №4. Можно ли однозначно ответить на них (хотя бы только на них), пользуясь лишь Вашим описанием?
Граф, это че?
сегодня же 8 марта)
Граф, это че?
сегодня же 8 марта)
Svitr, вы бы повежливее. Если не в состоянии четко сформулировать задачу - значит нечего и спрашивать.
Ваш гонор совершенно неуместен, если бы вы могли правильно подключить кнопку - вопроса бы не было. Скетч, заданный в первом сообщении - не будет работать сам, если все собрано верно. Если у вас не так - значит подключить кнопку вы не смогли. Так соберитесь с мыслями и нарисуйте не "типовую", а конкретно свою схему. Или покиньте тему и решайте проблему сами
Граф, это че?
сегодня же 8 марта)
Да! А что не так? ;))))))
К тому же завтра Пурим начинается. ;))
О Боже, вы попросили ОБЩУЮ схему подключения кнопки - я вам ее дал. Это рисунок из интернета, который просто изображает каким образом выполнено подключение. У меня на нулевом стоит. Светодиоды от 2 до 4. Итого 3 лампы (2,3,4 пины).
Объясняю специально для непонятливых: на этом форуме никогда не просят общую (типовую и пр.) схему или типовой скетч, а просят исключительно ту самую схему или скетч, что реализованы лично у Вас. Кроме схемы могут еще попросить фото Вашей схемы, по которому можно было бы убедиться, что Вы не сделали ошибок при коммутации.
Хватит глупых вопросов...
Вы не только не смогли внятно описать задачу, не ответили ни на один заданный вопрос, но еще и умудряетесь создавать искусственные препятствия тем, кто пытается Вам помочь.
Рекомендую Вам: перестать троллить пользователей форума, тщательно перечитать всю тему с начала, ответить на все заданные в ней вопросы, после чего создать новую тему с исправлением всех тех ошибок, которые Вы уже успели сделать в этой.
Блин! Пока тестировал говнокод ткнул +5 на GND в Нанке. Жена одетая стоит, ругается, что нужно хоть цветиков матери купить...
Это было самое скоростное перепаивание защитного диода. Найти его на старой материнской плате и перепаять на Нанке - меньше 3-х минут в сумме. Всё, бегу, убьет жена!!! Особенно потому, что я ей вчера на 8 марта лодочный мотор подарил... ;))))
звучит как издевательство
Оно и есть. Утиная типизация в действии.
На нулевой пин, который далее задекларирован как вход.
Нельзя подключать ничего на нулевой пин. По крайней мере людям "с опытом автоматика-электрика" нельзя. Забудьте о его существовании. Тоже самое и про первый пин.
О Боже, вы попросили ОБЩУЮ схему подключения кнопки
Вы сюда пришли, чтобы решить Вашу конкретную проблему или "общую"? Так кому тут нахрен нужна "общая" схема?
Поскольку алгоритм очень простой
Если бы он был простой, Вы бы всё сделали и не пришли бы сюда. А если пришли, значит не такой уж и простой.
Вот тебе твой рабочий код
Граф, такой заход с утра восьмого марта - это намёк на твоё предположение об ориентации ТС?
Как я понял, во всей этой истории проблема только с кнопкой, а не с компиляцией странных скетчей. Поэтому, пользуясь методом поиска льва в саванне, я решил уточнить - работает ли скетч в принципе. А то, мож, канпилятор новый выпустили, пока я спал.
Граф, это че?
сегодня же 8 марта)
Он сегодня, всех, у кого блондинистость мозга подозревает, проздравляет и скетчи раздает. Жентельмен.))))
Всё, бегу, убьет жена!!! Особенно потому, что я ей вчера на 8 марта лодочный мотор подарил... ;))))
Т.е. Карлсона, из тебя, завтра делать будут. Сегодня, ради праздника, отсрочили?))))
Спасибо всем кто пришел помочь. Проблема оказалась в 0 пине. Переключил кнопку на 2 пин и все заработало.
Спасибо всем кто пришел помочь. Проблема оказалась в 0 пине. Переключил кнопку на 2 пин и все заработало.
а че щеки то раздувал за правильную схемотехнику и "общие" схемы подключения?
настоящие "автоматики-электрики" умеют признавать свои ошибки.
Спасибо всем кто пришел помочь. Проблема оказалась в 0 пине. Переключил кнопку на 2 пин и все заработало.
а че щеки то раздувал за правильную схемотехнику и "общие" схемы подключения?
настоящие "автоматики-электрики" умеют признавать свои ошибки.
Переклинило ? :)
Это называется «нюанс», когда ты не знаешь что инпуты нельзя соединять на первые 2 пина ардуино. Вы лично, в прочем можете быть свободны. Коммуникативные навыки на уровне дворовой лавочки с пивасом. Что не есть профессионально.
сам нарвался...
####написал тут тебе кучу гадостей, потом подумал, да хрен с тобой, стер, жить тебе.#####
а пивас да, мы уважаем и бутылки в мусор складываем, а не тычем куда не попадя.
Опять, блин, неправильно помогаем, да что ж, блин, такое-то вечно :-(