Нужен совет в програмировании кнопки и диода!
- Войдите на сайт для отправки комментариев
Чт, 22/10/2020 - 21:22
Задание
Нужно сделать так чтобы
1.Ардуино ждала на нажатие кнопки.
2.После того как кнопка нажимется диод навсегда начнет светить с частотой 5 Hz( нужно сделать через команду "delay".
3.Нельзя использовать функцыю "if".
4.
Начальный код у меня был вот такой
void setup() { pinMode(4, OUTPUT); pinMode(10, INPUT); } void loop() { while (digitalRead(10)==LOW); {digitalWrite(4, HIGH); delay(200); digitalWrite(4, LOW); delay(200);} }
Буду очень признателен если поможете новичку.
Вам нужно три совета? Или зачем три темы?
Так а проблема то в чем? Не мигает? Кнопку не ждёт? )
Так а проблема то в чем? Не мигает? Кнопку не ждёт? )
Сначала мигает, а как дождётся кнопки - зависает. Так всегда бывает, когда вмесо кода какой-нибудь delirium используют.
Witcher,
напрасно Вы подумали, что форум - это то место, где ленивым задницам делают домашние задания. Это не так. Топайте в платный раздел и заказывайте свою хотелку за денюшку.
Да как бы я ничего и не думал. Я с радостю и сам бы решил, но незнаю как.Думал хотябы совет дадут
но незнаю как. Думал хотябы совет дадут
А чего тут знать? Совет простой: взять учебник языка, внимательно прочитать, выполняя все упражнения и разбирая примеры, а после этого просто написать то, что Вам нужно. Судя по тому, что Вы называете "кодом" никакие другие советы, кроме как учить язык, Вам не помогут. Если Вы не видите, что это бред, то ... учите язык.
А Вы как хотели? Занятия с девочками прогуливали, а теперь хотите, чтобы мы за Вас задания делали? Так не бывает. За всё платить нужно.
3.Нельзя использовать функцыю "if".
Что за х-ня! Хто посмел запретить ИФ! Был тут один любитель запрещать, но его запретили уже.
3.Нельзя использовать функцыю "if".
Что за х-ня! Хто посмел запретить ИФ! Был тут один любитель запрещать, но его запретили уже.
Помнится в первых моделях видеокарт с шейдерами как раз не было условных операторов.
При этом конструкцию типа
компилятор преобразовывал так:
таким образом приходилось вычислять обе ветки условия вне зависимости от того, истинно условие или нет. Зато шейдер в любом случае выполнялся за одинаковое количество тактов, что в случае ветвления не было бы справедливо.
А Вы как хотели? Занятия с девочками прогуливали...
сейчас набегут, в гомофобии обвинят..
Даю на водку - части содержимого loop() допустимо переносить в setup().
При этом конструкцию типа
компилятор преобразовывал
дак таки ее никто не запрещал использовать, раз компилятор принимал!
Даю на водку - части содержимого loop() допустимо переносить в setup().
ты сегодня добрый ...
Всем на водку раздаёшь?
А то поиздержался )))
Не будет. Придётся кнопку, единожды нажав, держать всё время.
Тогда, точку с запятой оставить, а после нее дописать while(37) и далее как в оригинале.
Или так: в коде оставить только мигание, а кнопку с фиксацией в разрыв провода питания.
Или так: в коде оставить только мигание, а кнопку с фиксацией в разрыв провода питания.
Думаю, преподу нужен код, а не устройство )))
Ох! Пятница, завтра Шаббат, нужно добрые дела делать!
Ох! Пятница, завтра Шаббат, нужно добрые дела делать!
Так ему, наверное, придётся объяснить этот код. :)
Ох! Пятница, завтра Шаббат, нужно добрые дела делать!
Настолько я еще не нагрешил за неделю! ;))))
Ох! Пятница, завтра Шаббат, нужно добрые дела делать!
Настолько я еще не нагрешил за неделю! ;))))
Да и объяснить задания не было )))
Не хватает только Квона.
Кактус, а почему 200, в задании жеж было 5 герц?
Кактус, а почему 200, в задании жеж было 5 герц?
Да вообще пофигу, на это не смотрел даже
нужно добрые дела делать!
Не приболел ли часом? Ты, береги себя, нам не всё равно!
нужно добрые дела делать!
Не приболел ли часом? Ты, береги себя, нам не всё равно!
судя по строке - нет,... просто, ...со вкусом, ...не бредит )))
Спасибо огромное)Не ожидал что найдутся добрые люди.
Задание решил по другому.
Но и с вашего кода, узнал много нового для себя. Еще раз спасибо.
Огромное спасибо что отписались на мою просьбу. Код написал немного по другому
Еще раз спасибо.
Огромное спасибо что отписались на мою просьбу. Код написал немного по другому
Еще раз спасибо.
а может так надо было?
ЗЫ препод спросит, а второй цикл здесь не лишний? )))
Зачем в лупе вайл?
Спасибо огромное)Не ожидал что найдутся добрые люди.
Задание решил по другому.
Но и с вашего кода, узнал много нового для себя. Еще раз спасибо.
это не называется "решил", это такой же неграмотный код, как в первом посте
Вы пишете вот это в одну строчку и потому оно кажется вам правильным.
на самом деле полная чушь, и вот почему:
-после круглых скобок оператора while() точка с запятой не ставится, тут должен начинаться блок, которым это while управляет - этот блок обрамляется фигурными скобками. Вы же между круглыми скобками и фигурными поставили точку с запятой и получилась бредятина - оператор распался надвое, теперь первая часть просто ничего не делает, а вторая - выполняется так. будто никакого while и нет.
Если выкинуть все ошибочные операторы, ваш код соответвует вот такому:
while в луп тут не нужен, смысла в нем никакого
Ну а вот этим вы сразите препода наповал.)
Попробую и я только с кнопкой как при условии За основу взят код ТС
А без while вообще обойтись при решении такой задачи возможно? (Именно в ардуино-скетче).
Без while() можно, а без цикла в любом его проявлении - нет.
Я поэтому и уточнил про ардуино, где loop и есть цикл. Хотя... go to тут какие-нить тоже должны работать?
При декомпозиции задачи видно, что требуется последовательное выполнение двух цикличных процессов: ожидания нажатия кнопки и мырганья. Таким образом - нужны два программных цикла. Хоть for, хоть while, хоть until либо же их разнообразные сочетания.
Опередили. )
while при желании можно заменить на for(;;) или lable goto
;))))))))))))) Гы!
Я хочу посмотреть на циклы в моем примере выше, можно? Ежели скажешь, что луп - он в цикле, то я перепишу тоже самое на таймере, без лупа вообще, веришь?
Я эту же задачку на теории алгоритмов сам задавал много лет назад. И в качестве решения хотел решение без if, while, for и без тернарного оператора (посмотрел выше и добавил: и без case, конечно тоже). Смысл - сделать решение на булевой алгебре. Так я видел эту задачу и она у меня была в разряде "хитрых". Сейчас, если преподаватель примет решение с while в setup, то деградация преподавания теории алгоритмов - налицо!
Можно вообще на мигающем светодиоде и фиксированной кнопке по питанию "переписать" - я не против ;)
Пока что озвучено одно условие - обойтись без if(). Таймер тоже цикличен и его применение никак не вступает в противоречие с тем, что должно быть два цикла. А будут ли они разделены или слиты с применением того или иного способа ветвления - who cares?
Можно вообще на мигающем светодиоде и фиксированной кнопке по питанию "переписать" - я не против ;)
Пока что озвучено одно условие - обойтись без if(). Таймер тоже цикличен и никак не вступает в противоречие с тем, что должно быть два цикла. А будут ли они разделены или слиты с применением того или иного способа ветвления - who cares?
Садман41! Я же написал, что я хотел видеть в ответах моих студентов (а учил я взрослых людей на переподготовке). Понимание, как работают простейшие операторы булевой алгебры. На них и задача, когда я её задавал. Посмотри, пожалуйста, как она решается у меня выше. Именно в том и задача, чтобы НЕ ИСПОЛЬЗОВАТЬ явные проверки, ни иф ни вайл ни всё, что делает явное ветвление. Нужно сделать решение без ветвлений. Конечно, предполагая, что есть внешний бесконечный цикл, но на него нет возможности влиять( по условию).
wdrakula! Дело в том, что ответ был дан ровно на тот вопрос, что был задан, а не с учетом сотен вариантов требований иных преподавателей. Я не сомневаюсь, что какой-нибудь извращенец будет иметь ввиду, что требуется вариант с прямой записью в регистр PC для того, чтобы увидеть понимание работы архитектуры целевого МК. Но тут-то собрались более простые люди, не побоюсь сказать - огородники и обменистраторы. Поэтому - как написано, так и прочтено.
Во развели!
AndreyD, в чём фишка?
Во развели!
AndreyD, в чём фишка?
Проверил, рабочий вариант.
Контролер идет в перезагруз пока нет прерывания по нажатию кнопки. Тоже ж вариант без дополнительных циклов и if, case т.д.
Во развели!
AndreyD, в чём фишка?
Проверил, рабочий вариант.
для абстрактной ардуины, а к примеру для nano с неперешитым лодырем, она жеж не поддерживает ватчдог
для абстрактной ардуины, а к примеру для nano с неперешитым лодырем, она жеж не поддерживает ватчдог
Прошить. )
РазвИли же тему насчет вариантов решения - вот предлагаю свой. Проверял на Nano с прошивкой optiboot.
«Весьма порой мешает мне заснуть
Волнующая, как ни поверни,
Открывшаяся мне внезапно суть
Какой-нибудь немыслимой херни»
И. Губерман