класс титановый велосипед для delay без delay().

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Arhat109-2 пишет:

А где тут генерится "быдлокод", покажешь? :)

t = 0UL приведёт к тому, что например при запуске everyMillis(1000, blink() ) когда допустим millis() == 120 сделает blink() не через 1000 миллисекунд, а через 880 миллисекунд.
когда millis() будет больше interval, то вообще - сразу.
быдлокод? - не, не слышал.
*исправить на t = millis()
 
  if( millis()...
...
    t = millis();
 
разрыв пространственно-временного континуума? - не, не слышал. у моего секундомера две стрелки - на одну я смотрю, перед тем, как что-то делать, а на вторую - после.
зачем я так делаю и куда я деваю разницу значений? какая вжопу разница?
*исправить: ввести единую переменную для работы с millis() - unsigned long current  =  millis();
 
(interval)
{ action; }
скобки? фигня какая - скобок мало не бывает!
Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да, t=0UL; приведет к этому. В случае когда текущее значение millis() ещё меньше интервала - будет "нестандартная задержка" первого исполнения. В случае когда milli() уже больше интервала - первое исполнение произойдет сразу по входу в макрос. Так и было задумано. Первый случай легко лечится добавлением паузы в инициализирующий код .. у меня такая часто используется в т.ч. и для диагностики ситуации "внезапной перезгрузки скетча", например при провалах питания.

В целом, написано так исключительно для того, чтобы первый раз отрабатывало сразу по вызову, потому и названо everyMillis() - "сразу, и каждый интервал".. :) Исправить "на" неполучится, ибо это даст несколько иной эффект: при входе в блок будет присваиваться КАЖДЫЙ раз текущее значение millis() в t и последующая проверка условия становится гарантировано-невыполнимой. Оттого, что переменная статическая никак не изменяет необходимости присваивания её результата функции тут.

Далее, Какой там у вас разрыв шаблона? В условии if() проверяется превышение текущим временем заданного интервалу .. условие можно сказать "стандартно", в чем пгоблема, что за "разрыв"? и, только если интервал прошел - входим в блок и выполняем нужную последовательность команд .. и только ПОСЛЕ этого сохраняем новое значение. Это обеспечивает, что время исполнения блока команд НЕ входит в длительность пропускаемого интервала. Если надо иначе - можно поменять порядок: сначала сохраняем новое время, а потом исполняем заданные команды. Но, не факт, что время исполнения команд не превысит интервал паузы промеж них.. :)

Скобки там все стоят "по делу". Одни обрамляют блок "then", другие параметр command. Да, и для наглядности и легкости чтения тоже ни разу не мешают ..

Да и в применении, код куда как прозрачно и понятно пишется .. уж куда как легче чем "классное программирование велосипеда"

Это все "претензии" по быдлокоду? Вашу "соринку в глазу", разбирать будем? :)

 

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Arhat109-2 пишет:

Это все "претензии" по быдлокоду? Вашу "соринку в глазу", разбирать будем? :)

моих претензий достаточно, что бы я сделал вывод, <sensored>.

простыни объяснений, <sensored>, позволяют мне сделать вывод, <sensored>.

*со своими соринками разберусь как-то сам <sensored>.
хочется тебе писать макросы на эту тему - тебе никто не запрещает: создавай тему и пиши. <sensored>.

 

Arhar109-2: обсуждаем код, а не авторов. Буду и дальше резать по-живому. :)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

:) Зачел.

Megawollt
Offline
Зарегистрирован: 06.12.2015

Как объединить класс и цикл for для плавного увеличения/уменьшения переменной? (для плавного нарастания яркости)

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Megawollt пишет:

Как объединить класс и цикл for для плавного увеличения/уменьшения переменной? (для плавного нарастания яркости)

так же, как и всё остальное.

Megawollt
Offline
Зарегистрирован: 06.12.2015

Понимаю, что не правильно, но можно пример? Надо к утру код дописать, поэтому нах не посылать :)

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Megawollt пишет:

Понимаю, что не правильно, но можно пример? Надо к утру код дописать, поэтому нах не посылать :)

пример: не использовать фор для плавного включения чего-либо.

Megawollt
Offline
Зарегистрирован: 06.12.2015

Интересно. Мой вариант таков. Плавный разгон работает, плавный стоп-нет

01if (val < spd && timer3.tick && state==1 && pp==0){           //Запуск программы 2, плавный старт мотора
02val++;
03analogWrite(MOTOR, val);
04}
05 
06else if (loops >=turns && prog==1 && val > 0){
07if(timer4.tick && val > stopspd){
08val--; 
09analogWrite(MOTOR, val);
10}

Сбросить надо не в 0, а до stopspd

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Megawollt пишет:

Интересно. Мой вариант таков. Плавный разгон работает, плавный стоп-нет

слушай, мне плевать на все твои варианты плавных включений чего-либо.

класс генерит переменные событий и состояний - далее юзаешь так же, как и всё остальное в языке дуино или С++

*хватит флудить своими бредовыми проблемами

Megawollt
Offline
Зарегистрирован: 06.12.2015

Вообще тема о классе про делей и это к нему относится

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Megawollt пишет:

Вообще тема о классе про делей и это к нему относится

иди впень - мне лучше знать, для чего эта тема.

Megawollt
Offline
Зарегистрирован: 06.12.2015

Не понимаю, почему так сложно помочь

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Megawollt пишет:

Не понимаю, почему так сложно помочь

почему тебе сложно дать мне 1000$?

Megawollt
Offline
Зарегистрирован: 06.12.2015

Смотри раздел ищу исполнителя. Какую то реальную сумму за помощь я могу дать

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Megawollt пишет:

Смотри раздел ищу исполнителя. Какую то реальную сумму за помощь я могу дать

я не нуждаюсь в средствах и бесплатно не работаю - только ради удовольсвия.

помощь тебе мне удовольствия не доставляет - ты туп.