Многозадачность millis()
- Войдите на сайт для отправки комментариев
Ср, 14/07/2021 - 19:33
Всем доброго времени суток.
Возник такой вопрос. У меня есть код в котором используется millis() и задержка через него, а если я захочу использовать if в нутри другого if или же несколько if подряд как мне добавить использование millis задержки и в тот и в другой if.
if ( irrecv.decode( &results) && millis() - time > 300) {
if (results.value == 0xFFE01F){
digitalWrite( 13, LOW);
digitalWrite( 5, LOW);
}
else if (results.value == 0xFFA857){
digitalWrite( 13, HIGH );
digitalWrite( 5, HIGH );
}
else {
digitalWrite( 13, LOW );
}
time = millis();
}
Вот этот код на пример. Если я хочу что бы и в if и в else if использовался millis (что бы предотвратить ложные срабатывания)
ps: Это управление щеколдой по ик пульту.
Хотеть не вредно
Тоесть задержку через millis можно использовать один раз только?
Тоесть задержку через millis можно использовать один раз только?
Нет.
1. Вставьте код по правилам форума
2. И напишите нормально, что вы хотите
Есть вот на пример код в котором моргает красный светодиод и паралельно ему мограет синий. Как это сделать можно через millis или нельзя вообще? Может есть еще какие то способы сделать задержку?
Можно ли как то независимо использовать задержку millis.
Две или даже даже больше Millis
Две или даже даже больше Millis
millis это функция, вы можете вызывать её один, два или N число раз. Вы можете отмерять разные временные интервалы. Но я тоже не понял, что вы хотите сделать. Откройте в Ардуино IDE Файл-Примеры-02.Digital-BlinkwithoutDelay. Если вам всё понятно, то без труда сможете заставить мигать второй светодиод с другим интервалом.
Можно ли как то независимо использовать задержку millis.
можно
для этого не нужно много миллис. Вы же можете по уличным часам отмерить 10 минут, верно? И 10 тыс человек рядом с вами могут замерить свои интервалы по тем же часам... для этого не нужно 10 тыс часов
Можно ли как то независимо использовать задержку millis.
можно
для этого не нужно много миллис. Вы же можете по уличным часам отмерить 10 минут, верно? И 10 тыс человек рядом с вами могут замерить свои интервалы по тем же часам... для этого не нужно 10 тыс часов
Согласен. Звучит логично. А вы может статью знаете где что то про это написано. Был бы очень благодарен за подсказку.
А вы может статью знаете где что то про это написано. Был бы очень благодарен за подсказку.
не знаю. Ищите в гугле что-нить типа "несколько независимых интервалов на миллис". даже у нас на форуме этот вопрос обсуждался уже раз двадцать
b707, зачем что-то отвечаете после поста #4, когда код так и не вставлен? Поциент же уже на голову сел и ноги свесил.
b707, зачем что-то отвечаете после поста #4, когда код так и не вставлен? Поциент же уже на голову сел и ноги свесил.
Слушай если ты не знаешь или не хочешь помогать то просто заигнорируй. Я же не персонально тебе написал. Есть люди которые хотят и могут помочь. А то что я код не скинул. Я его уже переделал без использования миллис, смысл мне его кидать? Он уже не подходит по теме. А продолжил я писать потому что все равно хотел узнать про этот милис.
А вы может статью знаете где что то про это написано. Был бы очень благодарен за подсказку.
не знаю. Ищите в гугле что-нить типа "несколько независимых интервалов на миллис". даже у нас на форуме этот вопрос обсуждался уже раз двадцать
А вам спасибо большое) Пойду искать.
Две или даже даже больше Millis
millis это функция, вы можете вызывать её один, два или N число раз. Вы можете отмерять разные временные интервалы. Но я тоже не понял, что вы хотите сделать. Откройте в Ардуино IDE Файл-Примеры-02.Digital-BlinkwithoutDelay. Если вам всё понятно, то без труда сможете заставить мигать второй светодиод с другим интервалом.
Вам тоже спасибо)
Афтар, я пешу так:
№дефайн ИНТЕРВАЛ_ПРИЁМ (400) // миллисек
№дефайн ИНТЕРВАЛ_1ГОД (4294967295)
иф(милис() - прошлый_приём >= ИНТЕРВАЛ_ПРИЁМ /*обычно 250*/ ){
иф(&декоде_резултс_блабла){
свитч(резултс.валуе){
касе 0х5ф5да75: ехец_цмд(кнопка_зкртьщклд); бреак;
касе 0х5ф5да77: ехец_цмд(кнопка_откртьщклд); бреак;
касе 0х5ф5д7а5: ехец_цмд(кнопка_ещккятхуня); бреак;
}
}
воид ехец_цмд(буте цмд){
свитч(цмд){
/* имплементацыя */
// ,,,,
касе 228:
иф (милим() - ласт_покуритьтраву >= ИНТЕРВАЛ_1ГОД){ // апрель 20 (кодовая дата, 420) бывает тока раз..... вгааааа... ду
/* имплементация забить косяка */
}
бреак;
/* и т д и т п */
}
}
мой способ работает. Пользуйтесь.