Официальный сайт компании Arduino по адресу arduino.cc
Помогите с написанием скетча
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ср, 24/10/2018 - 20:03
Подскажите, пожалуйста, как написать код, чтоб светодиод загорался при нажатии кнопки и через 1 секунду гас и больше не загорался, пока опять не будет нажата кнопка?
А смысл?
Надо специальным образом подбирать слова на С и компоновать их в правильном порядке.
Так вот так прям и пишешь:
1. Если признак "светодиод сработал" не верен то делаем это:
1.1. Если некий признак "кнопка нажата" не верен, то проверяем нажати ли кнопка? Если кнопка нажата, ждем небольшую паузу и проверяем снова - нажати ли "все ещё" (человек не способен мгновенно отпустить кнопку). Если кнопка все ещё нажата, то ставим признак "кнопка нажата". Это не позволит срабатывать первой проверке повторно в этом пункте дальше.
1.2. Проверяем признак "кнопка нажата" и, если он верен, то включаем светодиод и запоминаем время включения. Ставим признак "светодиод включен".
1.3. Если светодиод включен, то проверяем сколько прошло времени от запомненного методом вычитаний запомненного из текущего "сколько теперь времени". Если прошло больше секунды, то выключаем светодиод и сбрасываем признак "светодиод включен". Ставим признак "светодиод сработал".
Собственно всё.
Перевести на С/С++ самостоятельно можешь? Если нет, то прямиком в раздел "ищу исполнителя", там помогут за небольшую мзду (возможно теже самые люди, что выдали это задание .. тоже способ подработки)
Успехов.
Имя, которое может быть названо, не есть истинное имя. Безымянное есть начало неба и земли, обладающее именем мать всех вещей.
(c) Лао Цзы.
Имя, которое может быть названо, не есть истинное имя. Безымянное есть начало неба и земли, обладающее именем мать всех вещей.
Нет повода не выпить! Пойду, накачу!
Так вот так прям и пишешь:
Собственно всё.
"Не преумножайте сущностей, да воздастся Вам аз есмь. И извольте бриться" - Уильям Оккам.
как написать код, чтоб светодиод загорался при нажатии кнопки и через 1 секунду гас и больше не загорался, пока опять не будет нажата кнопка?
Поручик, ну это же элементарно!
1. Сесть за стол
2. Почесать репу
3. Написать
Какие проблемы-то? Стола нет? Или чесать нечего?
Чёт Вас на философию потянуло в мою днюху .. до кучи:
"Да не унизит Человек себя сам.
Да не возвысит он сам себя.
Ибо он сам себе друг
и нет ему большего врага, чем он сам себе."
(с) Махабхарата.
P.S. sadman, а как ты узнал что я сегодня не побрился? :)
Подскажите что нужно исправить чтобы светодиод загорался при нажатии кнопки и через 1 секунду гас и больше не загорался, пока опять не будет нажата кнопка.
самое простое - перенесите всё из loop() в setup() оставив loop() пустым. - так НЕВЕРНО (поторопился).
создайте признак (переменную) "светодиод сработал", присвойте ей начальное false и после отработки времени присваивайте ей true, как написал выше. И весь этот код из loop() заверните в проверку - сработал ли светодиод? Исполнять если ещё не срабатывал (п.1 выше).
2. Вместо второго delay(1000) поставьте такое: while(1);
Подскажите что нужно исправить чтобы светодиод загорался при нажатии кнопки и через 1 секунду гас и больше не загорался, пока опять не будет нажата кнопка.
Ну для начала почитайте тему про кнопки. Там уже давно есть то,что вам нужно.
создайте признак (переменную) "светодиод сработал", присвойте ей начальное false и после отработки времени присваивайте ей true, как написал выше. И весь этот код из loop() заверните в проверку - сработал ли светодиод? Исполнять если ещё не срабатывал (п.1 выше).
2. Вместо второго delay(1000) поставьте такое: while(1);
Arhat109-2, так тоже неверно. Не читаете условие задачи.
В вашем варианте при повторном нажатии кнопки светодиод не включится - а ТС хочет, чтоб включался.
Вечер философского скетча позвольте считать открытым.
UPD: Кстати, Архат, может изобразите нам па-де-де на ISR-ках ?
Убрать строки №№ 12, 14, 15 и 16
Подскажите, пожалуйста, как написать код, чтоб светодиод загорался при нажатии кнопки и через 1 секунду гас и больше не загорался, пока опять не будет нажата кнопка?
Что есть "нажатие кнопки" - вот в чём вопрос. Обычно под нажатием понимают именно нажатие, а не клик - т.е. когда кнопка нажата и отпущена. Если нужно именно нажатие, то простейший код тот, который привёл sadman41 в посте №13.
Убрать строки №№ 12, 14, 15 и 16
Вот чем отличается настоящий профессионал от дилетанта, я остановился на 10, когда условие задания было выполнено )))
Подскажите, пожалуйста, как написать код, чтоб светодиод загорался при нажатии кнопки и через 1 секунду гас и больше не загорался, пока опять не будет нажата кнопка?
Что есть "нажатие кнопки" - вот в чём вопрос. Обычно под нажатием понимают именно нажатие, а не клик - т.е. когда кнопка нажата и отпущена. Если нужно именно нажатие, то простейший код тот, который привёл sadman41 в посте №13.
Тока что в кораблике такое решал, ввел флаг
Подскажите что нужно исправить чтобы светодиод загорался при нажатии кнопки и через 1 секунду гас и больше не загорался, пока опять не будет нажата кнопка.
А мне не понятно почему этот код не работает, быстренько нажал и отпустил - должен же работать...Или имеется ввиду - нажал и держу, светодиод погас и всё?, до следующего отпускания-нажатия?
Вечер философского скетча позвольте считать открытым.
UPD: Кстати, Архат, может изобразите нам па-де-де на ISR-ках ?
Товарищ хочет так
Вечер философского скетча позвольте считать открытым.
UPD: Кстати, Архат, может изобразите нам па-де-де на ISR-ках ?
Товарищ хочет так
Опять не ясно, а со значением флага из 0 ничего делать не надо?
Или я чего не понимаю?
Товарищ хочет так
В ТЗ (#1) не было такого. Нужно было там что-то жать и чем-то гореть секунду. Жмем - горит.
Ну, если надо чтобы прямо вот по вашему - еще один
while
(HIGH == digitalRead(button_pin));
в конец пихнуть.Или я чего не понимаю?
Это я просто поторопился )))
Скетч использует 12516 байт (9%) памяти устройства. Всего доступно 131072 байт.
Глобальные переменные используют 2568 байт динамической памяти.
Arduino Version: 1.8.5
Разбавлю тему qwone-кодом #18
Разбавлю тему qwone-кодом #18
Давайте лучше объясните молодому поколению, почему так делать нельзя
Большое спасибо. Этот код подходит.
Имя, которое может быть названо, не есть истинное имя. Безымянное есть начало неба и земли, обладающее именем мать всех вещей.
Нет повода не выпить! Пойду, накачу!
Эх Евгений Петрович, Евгений Петрович, нет объяснить народным умельцам, почему:
Так писать можно,
А так нельзя )))
Чой-то нельзя. Ну, блокирующий, да. Поставленную задачу выполняет. Других - не было.
Или чего, хотите, чтобы студент на экзамене сразу всё на пять сдал?
Чой-то нельзя. Задачу код выполняет. Других - не стояло.
А очень внимательно подумать, я за такое написание кода для станков был готов разработчика... ногами и жёстко...
не успел...Вы там два раза на грабли наступаете )))
Оно конечно красиво, показать умение пользоваться циклами и, этот вариант надо брать на вооружение...
Но внутри цикла таймерок к примеру с джампом на следующую функцию
О, я смотрю, тут всё серьёзно было воспринято. Надеюсь, что этот фрагмент не успели включен в прошивку для... Что у нас там очередное ко взлету готовят?
не успели включен в прошивку для... Что у нас там очередное ко взлету готовят?
Дрель для МКС
Надеюсь, что принцип работы трехстрочника из #6 поняли... А то вдруг придется прояснять смысл на пяти страницах. Я опасаюсь уже за судьбу Родины.
О, я смотрю, тут всё серьёзно было воспринято. Надеюсь, что этот фрагмент не успели включен в прошивку для... Что у нас там очередное ко взлету готовят?
Не, мы летаем на чужих прошивках, самим такое не под силу, от слова совсем...
Это я не злой, просто вспомнился момент когда долбался с одним из станков где был блокирующий код на кнопки, которые были залиты водой
Надеюсь, что принцип работы трехстрочника из #6 поняли... А то вдруг придется прояснять смысл на пяти страницах. Я опасаюсь уже за судьбу Родины.
Можно не опасаться, я пенсионер )))
Водой залиты... Вам же говорили, что автомат надо держать на вытянутых руках, чтобы расплавленный металл не капал на казенные сапоги!
Вот у меня был DECT телефон фирмы Siemens (!) . База и трубка беспроводная на аккамуляторах, которые нужно было вытаскивать и периодически вставлять в зарядное устройство. В руководстве немцы написали: "Вытащить через два часа". Всё. Никакой защиты от перезаряда/перегрева и пр. 2 часа и выключил. Потому что Ordnung ist ordnung и никаких там гее ди Штрассе унд вюрст эссен.
Эх Евгений Петрович, Евгений Петрович, нет объяснить народным умельцам, почему:
Так писать можно,
...
А так нельзя )))
Писать по-всякому можно. Бумага и та, как известно, всё стерпит, а уж электронные носители - те и подавно.
Водой залиты... Вам же говорили, что автомат надо держать на вытянутых руках, чтобы расплавленный металл не капал на казенные сапоги!
Вот у меня был DECT телефон фирмы Siemens (!) . База и трубка беспроводная на аккамуляторах, которые нужно было вытаскивать и периодически вставлять в зарядное устройство. В руководстве немцы написали: "Вытащить через два часа". Всё. Никакой защиты от перезаряда/перегрева и пр. 2 часа и выключил. Потому что Ordnung ist ordnung и никаких там гее ди Штрассе унд вюрст эссен.
)))
их вайс нихт, вас зол эс бэдоит