Вопрос по использованию Millis()
- Войдите на сайт для отправки комментариев
Чт, 16/09/2021 - 15:14
Всем привет!
подскажите плиз начинающему.
Ниже приведен пример кода мигания светодиода, в котором вместо delay используется millis.
Но в данном скрипте интервал включения и интервала между включениями одинаковый - 1000 мсек.
Вопрос - что нужно добавить в код, чтобы длительность включения была 1000 мсек, а интервал между включениями - 3000 мес?
const int ledPin = 13; // номер выхода, подключенного к светодиоду // Variables will change: int ledState = 0; // этой переменной устанавливаем состояние светодиода long previousMillis = 0; // храним время последнего переключения светодиода long interval = 1000; // интервал между включение/выключением светодиода (1 секунда) void setup() { // задаем режим выхода для порта, подключенного к светодиоду pinMode(ledPin, OUTPUT); } void loop() { // здесь будет код, который будет работать постоянно // и который не должен останавливаться на время между переключениями свето unsigned long currentMillis = millis(); //проверяем не прошел ли нужный интервал, если прошел то if(currentMillis - previousMillis > interval) { // сохраняем время последнего переключения previousMillis = currentMillis; // если светодиод не горит, то зажигаем, и наоборот if (ledState == LOW) ledState = HIGH; else ledState = LOW; // устанавливаем состояния выхода, чтобы включить или выключить светодиод digitalWrite(ledPin, ledState); } }
Вопрос - что нужно добавить в код, чтобы длительность включения была 1000 мсек, а интервал между включениями - 3000 мес?
это викторина?
ответ - нужно добавить изменение интервала с 1сек на 3 и наоборот в нужный момент
нет, не викторина.
непонятно, как и куда вписать 3000 мсек...
Может ты курс введения в язык какой-нибудь прочитаешь? А то дальше будет еще сложнее. а делать за тебя никто не будет.
Вопрос - что нужно добавить
Ответ: немножко знаний и совсем чуть-чуть мозгов.
Так я же не заказываю выполнение работы с нуля.
Речь идет о том чтобы несколько строк в нужное место добавить.
непонятно, как и куда вписать 3000 мсек...
мне тут нравится вопрос "как"?
А как вы умеете? - так и впишите
Что касается вопроса "куда?" - очевидно, что 3000мсек надо вписывать в момент выключения диода, а 1000 - в момент включения.
да-да, вписывать придется не только 3000, но и 1000, иначе вы просто поменяете период с 1 сек на 3 и все
Ардуинна, попытайтесь представить, что вместо контроллера Arduino посадили Вас - Ардуинна - и именно Вам с помощью секундомера и тумблера нужно выполнить условие задачи. Опишите подробно, как Вы будете действовать. По русски. А потом просто переведите написанное на Си.
существует 99 способов, Евгений Петрович говорит, что сто, студенты с галёрки, что сто один:
Скобок не хватает, работать не будет.
Скобок не хватает, работать не будет.
а так?
PS вопрос то был - что нужно добавить в код... а как добавить вопроса не было )))
а так?
Вот, компилятор же честно предупреждает, что в 20-ой строке не всё "слава Богу",
но нет, нам пофиг на его предупреждения :-(
а так?
Вот, компилятор же честно предупреждает, что в 20-ой строке не всё "слава Богу",
но нет, нам пофиг на его предупреждения :-(
каюсь )))
у меня до компилятора дело не дошло и, эти баги в исходном скетче, надеялся, что там все правильно , честно и откровенно - исходник не смотрел, переменную интервал глянул, не понравилось что не беззнаковая, но это ТС пусть уж сам учится на ошибках, если желание возникнет )))
PS выходит и пример без ошибок скопировать не могут, да уж...
PPS да я там провёл работу на ошибками и не поленился посмотрел исходник, там так:
PPPS как любил приговаривать Будовский Валерий Павлович...(преподавал релейную защиту)
можно сделать защиту от дурака...но не от изобретательного
Большое спасибо!
Все работает как надо :)
хоть что-то полезное из обсуждения даже такого простого скетча вынесли?
Евгений Петрович, пятница, может далее потрём тему
А если период более 25 дней? Понятно, что ситуация по факту абсурдна но ведь физически может быть...
А ведь это в примерах...
хоть что-то полезное из обсуждения даже такого простого скетча вынесли?
а вот не надо было давать готовой подсказки по такому простому вопросу - не пришлось сейчас спрашивать, чему ТС научился. Да и сомневаюсь, что она научилась.
Пусть бы лучше она помучилась, но нашла ответ сама - полезнее было бы.
Но для проверки усвоенного можно попросить причесать и сократить этот пример. Хотя бы строк на 5.
Но для проверки усвоенного можно попросить причесать и сократить этот пример. Хотя бы строк на 5.
И чтоб начальное состояние лед было включено.
А ведь это в примерах...
И что?
А вот здесь "в уроках" заботливые учителя учат "return loop(); " использовать. Бывает.
А вот здесь "в уроках" заботливые учителя учат "return loop(); " использовать. Бывает.
Это чтобы китайская ардуина не своевольничала, а возвращал управление куда положено. Иначе знаем мы их. Через одну все поддельные и в каждую недокладено...
Во нафлудили!
Не иначе народу общения не хватает :)
вы бы не выступали. Второй раз подсказки не будет...
ТС, твоё присуцтвие в этой теме больше не обязательно, она уже сама по себе развиваеца.
вы бы не выступали. Второй раз подсказки не будет...
А я здесь больше писать не буду, поэтому второй раз мне до лампочки.
ок, только обещание держите. А то у меня память хорошая, я вас и через пару лет могу вспомнить с одного-двух сообщений
ок, только обещание держите. А то у меня память хорошая, я вас и через пару лет могу вспомнить с одного-двух сообщений
ты не злопамятный...просто злой и память хорошая?