Поморгать светодиодами без подзатыльника
- Войдите на сайт для отправки комментариев
Втр, 24/08/2021 - 18:24
Здрассте. старшие по разуму!
Какова вероятность за поморгать лампочками получить подзатыльник (насколько оправдано использование логический функций в моем примере кода) или такой код имеет место быть?
if (digitalRead(limitswitchhead) == LOW && lastButton == true){ papersensor(); } void papersensor(){ timer = true; led2OnTime = millis(); timeOff = 300000; timeOff2 = 1200; if(timer){ if (millis() - led2OnTime >= 7000){ digitalWrite(papersensor1, HIGH); digitalWrite(papersensor2, LOW); led2On = true; led1On = true; led2OnTime = millis(); } timer = false; } if(led1On){ if(millis() - led2OnTime >= timeOff2) { digitalWrite(papersensor1, LOW); led1On = false; } } if(led2On){ if(millis() - led2OnTime >= 200) { digitalWrite(papersensor2, HIGH); if(millis() - led2OnTime >= timeOff) { digitalWrite(papersensor2, LOW); } } led2On = false; } }
Это счетчик туалетной бумаги?
Как Вы сами это понимаете без комментариев?
Код приведён не полностью, поэтому половина интересного от нас скрыта.
Но даже в том, что не скрыто ....
Ну, например, в строке №6 переменной timer присваивается true. А в строке №10 проверяется чему она равна (
if
(timer)
). Внимание, вопрос: НАФИГА? Можете ответить? Чему она по Вашему там может быть равна?(если она таки волатильная и может быть изменена в прерывании, то ещё раз вопрос - какого хрена код выложен не полностью?)
Код неполный и плохо отформатированный.
По этому куску. В чём смысл флага timer?
Ранее не было процедуры papersensor. И чтобы цикл не повторился включения лампочек я использовал флажки. Вопрос если сейчас я уберу timer led1on led2on. Оставив только условия миллис. Как мне грамотно прервать процедуру. Дополнительным флажком? Или использовать do.. while. Чтобы выполнить один раз хотя бы все условия миллис а затем в while добавить условие прерывания.
А зачем вы переписали часть этого кода в отдельную функцию? Вы будете использовать эту функцию многократно в коде?
И своими словами можете написать, чего вы хотите добиться то? Может как сформулируете словами и Вам понятнее будет. И люди Вам что посоветуют.
При условии limitswitchhead и lastbutton необходимо поморгать светодиодами это симуляция сигнала датчика По истечению таймера timeoff2 два вся процедура papersensor должна прерваться либо эта процедура вся должна прерваться при выполнении другого условия то есть к примеру срабатывания концевика. И активировать снова при первом условии ...head и lastbutton
Это проект планшетного принтера то есть при выполнении определенных условиях движения головки примеру принтера lastbutton загорается симуляции датчика бумаги и они выполняются по таймингу там максимальный тайминг 30000 миллисекунд и вот эта процедура выполняется и также она может прерваться в случае если заполнение листа неполное при печати он выстреливает бумагу принтер и срабатывает концевик Тоесть процедура тоже закрывается и симуляция датчиков бумаги тоже прекращается. Надеюсь правильно объяснил
limitswitchhead это же и есть сигнал с концевика? Т.е. строка 01 и управляет "морганием"? Что тогда работает не так с этим кодом?
...head запускает процедуру прерывать ее должно второй концевик или если таймер миллис пройдёт определённое значение timeoff
Второй где в коде?
Посмотрите ещё вот эту статью http://arduino.ru/tutorials/BlinkWithoutDelay.
Второй где в коде?
Посмотрите ещё вот эту статью http://arduino.ru/tutorials/BlinkWithoutDelay.
Второй пока не прописал не знаю как грамотно сделать прерывание по условию данной процедуры papersensor
Ничего Вы не использовали. Прежде чем писать тут много всего, ответьте на мой вопрос "нафига" из поста #2 - пока Вы на него не ответите, Вы ничерта не поймёте в "своём" коде и говорить дальше просто не о чем, т.к. Вы просто не понимаете что такое флажки и как их используют. И, кстати, приводите код полностью. Смотреть на огрызки и додумывать что Вы там ещё написали ... в общем, полностью.
Ничего Вы не использовали. Прежде чем писать тут много всего, ответьте на мой вопрос "нафига" из поста #2 - пока Вы на него не ответите, Вы ничерта не поймёте в "своём" коде и говорить дальше просто не о чем, т.к. Вы просто не понимаете что такое флажки и как их используют. И, кстати, приводите код полностью. Смотреть на огрызки и додумывать что Вы там ещё написали ... в общем, полностью.
Выложу полностью завтра. Комментировать код?
Встречный вопрос: а Вы хотите, чтобы его кто-то читал?
Кстати, а ответ на вопрос таки будет? Я уже третий раз спрашиваю. Или Вы намерены игнорировать всё, кроме собственных постов?