Бегущий огонь. Нужен совет програмиста
- Войдите на сайт для отправки комментариев
Сб, 17/02/2018 - 16:12
Здравствуйте!
Сам я новичек, програмирование изучал по статьям к Ардуино, поэтому не судите строго :)
Делаю простой проект, пятиканальный бегущий огонь, работает так: все лампочки горят в полнакала, затем пробегает огонек и снова все горят в полнакала, будет еще пара режимов но этот основной.
На макетке все работает и вроде бы никаких проблем не вылезло, но хотелось бы узнать от опытных програмистов вот что, не будет ли проблем с переполнением счетчика millis и прочие косяки.
Да, 13 пин используется для создания паузы, когда все лампочки притушенны.
На delay не делал специально, там будут еще разные функции.
int ledPins[]={3, 5, 6, 9, 10, 13}; // используемые пины с ШИМ 13 не используется, он для паузы int briLevel=127; // значения 1-127 яркости class Light { public: int currPin; unsigned long pushTime, pushPause; int pushUp(){ // функция "двигает" пины if (currPin>5 || currPin<0) currPin=0; if (currPin<5){ currPin=currPin+1; } else { currPin=0; } return currPin; } int prevPin(){ // функция возвращает номер предидущего пина if (currPin<0) currPin=0; if (currPin==0) return 5; else return currPin-1; } void nextLight(){ // функция зажигает следующий и гасит предидущий пин if (millis() - pushPause > 300){ // пауза между циклами if (millis() - pushTime > 100){ // пауза между огнями analogWrite(ledPins[pushUp()], briLevel*2); analogWrite(ledPins[prevPin()], briLevel); pushTime = millis(); if (currPin==5) pushPause=millis(); } } } }; Light bulb; void setup() { for (int i=0; i<6; i++){ pinMode(ledPins[i], OUTPUT); } } void loop() { bulb.nextLight(); }
Без комментариев http://arduino.ru/forum/programmirovanie/klassy-arduino-po-qwone-dlya-chainikov
Переполнения миллис не будет, другие косяки неминуемы -ведь скетч еще не завершен.
не будет ли проблем с переполнением счетчика millis
Вы тоже из секты свидетелей Святого Переполнения?
http://arduino.ru/forum/programmirovanie/vopros-po-ispolzovaniyu-millis#comment-267581
http://arduino.ru/forum/programmirovanie/velikoe-perepolnenie-millis
Вы тоже из секты свидетелей Святого Переполнения?
http://arduino.ru/forum/programmirovanie/vopros-po-ispolzovaniyu-millis#comment-267581
http://arduino.ru/forum/programmirovanie/velikoe-perepolnenie-millis
Спасибо за ссылки, очень полезные. Я понимаю, что на каждом форуме есть "Супер Тема"... я сорвал Джек Пот :D
Кстати, у вас есть минутка чтоб поговорить о Великом Переполнении?
Кстати, у вас есть минутка чтоб поговорить о Великом Переполнении?
Погодите, мужики, мне за попкорном сбегать надо.
Я правильно понял, что millis() просто обнуляется при достижении максимума и переполнения не происходит? Или неправильно? На ссылках, особенно на второй, все рассказано очень непопулярным и недоступным для понимания простых обывателей языком(Ин Май Хамбл Опинион).
Я правильно понял, что millis() просто обнуляется при достижении максимума и переполнения не происходит? Или неправильно? На ссылках, особенно на второй, все рассказано очень непопулярным и недоступным для понимания простых обывателей языком(Ин Май Хамбл Опинион).
Честно говоря, вообще не понимаю, зачем что-то читать, когда человеку знакомому с представлением чисел в компьютере и так все ясно без дальнейших пояснений. Поэтому предполагаю, что понять написанное Вам не позволяет недостаток базовых знаний. Следовательно, Вам нужно читать не статьи по "переполнению миллис", а учебник по программированию.
Ответить на Ваш вопрос в первом предложении не представляетсяч возможным, если Вы не поясните, что именно Вы подразумевавете под "переполнением миллис". Могу лишь констатировать, что Ваше понимание "переполнения" отличается от общепринятого.
Я правильно понял, что millis() просто обнуляется при достижении максимума и переполнения не происходит? Или неправильно? На ссылках, особенно на второй, все рассказано очень непопулярным и недоступным для понимания простых обывателей языком(Ин Май Хамбл Опинион).
будильник со стрелками видел? ок. что происходит со стрелкой часов при переходе через цифру "12"?
Проблема переполнения millis() не в том что там нет числа больше чем максимального. а в учете определеного времени. Вот к примеру у сейчас 11 часов, а надо прийти через два часа . 11+2=13. Сидим ждем пока на часах будет 13 . час ждем , день ждем , неделю ждем и наконец "Чунгачгук-зоркий глаз" увидел, что на часах нет цифры 13. Вот так и произошло Великое Часовое Переполнение .
OMG, опять секта переполнятелей оживилась, и прислала сюда своего адепта Ваню :)
Ну извините уж. А со стрелкой пример, надо отметить, более показательный и информативный. Если так один раз написать, то всем все станет понятно, и не потребуется создавать огромные темы с непонятными примерами и шутками над теми, кто этого не понял.
Я написал сюда потому, что думал все элементарно (Ватсон), а увидев кучу форумов (и сект) на эту тему призадумался...
Если так один раз написать, то всем все станет понятно, и не потребуется создавать огромные темы с непонятными примерами и шутками над теми, кто этого не понял.
Да нихрена Вам не стало понятно.
А непонятно Вам потому, что Вы ленивы. Вот в том материале, который Вы "не поняли", там ведь было нечего понимать просто потому, что там ничего и не объяснялось. Там было сказано, что если хотите понимать - изучите арифметику, а потом проверьте себя по тестовым задачам:
Если Вы хотите понимать как это происходит, Вам необходимо:
№1 Внимательно изучить арифметику в дополнительном коде
№2 Для проверки усвоения материала попытаться устно решить две задачи, приведённые ниже. Если задачи устно решить не удалось, обязательно вернуться к п.1 и так, пока задачи не покажутся очевидными, и не решатся устно.
Вы это проделали? Нет! Так какого ж тогда на непонятки жалуетесь? Если нихрена не делать, то нихрена и не сделается.
Уважаемые Клапауций 567 и qwone, вопрос - почему Вы не "пнули" меня, в отличие от ЕвгенийП? Почему Вы решаете изменить общепринятым правилам, которым следуют Уважаемые Гуру этого форума? Я не ёрничаю. Я согласен с ЕвгенийП и критикой в мой адрес. НО почему же Вы решаете прибегнуть к несложным примерам, основанным на простых литературных приемах для объяснения столь непростой темы? Уж не значит ли это то, что для поверхностного (мне более и не требуется) понятия темы достаточно и этого? К чему же полемика тогда? Ведь такого объяснения вполне достаточно для 99,99% задающих этот вопрос. Если же недостаточно, то зачем было писать мне ответ? У. ЕвгенийП, интересно и Ваше мнение на этот счет. На, цитата: "непонятки" - жаловаться не буду боле, честно-пречестно.
P.S. Непременно изучу Тему "Великого Переполнения..." и арифметики в доп. коде
Спасибо.
Уважаемый Иван_123,
тема переполнения миллис здесь уже настолько задрала всех, что обычно, очередного "переполнителя" сразу посылают на. Вам стали хоть что-то отвечать только потому, что Вам повезло - с месяц уже таких как Вы здесь не появлялось, народ подостыл.
Я специально написал ту статью в которой, для тех кому понимать не надо, тупо написано как делать и как не делать, для тех, кому понимать надо - написано что почитать (это как раз то, что Вы поленились сделать), а для тех, кто и после этого чего-то ещё не понял, написано куда идти (там в статье есть ссылка).
Повторяю, ешё раз, я не знаю что достаточно, а что не достаточно для "99,99% задающих этот вопрос", но я точно знаю, что "99,99% задающих этот вопрос" на данном форуме, просто посылаются на. Уж такие здесь традиции.
Вот как-то так.
Хех, "послания" я уже прочувствовал и без "переполнений"(в этих 00,01% место надо заслужить). Видимо, еще захотел, раз написал сюда. Но я Вас прекрасно понимаю - отвечать на одно и то же с 2014 года, интервалом в неделю... (хоть автоответчик на ардуино собирай). Спасибо за пояснения.
"А я их сердцем чую" (с).)))))