MILLIS in the function FOR

StoneTL
Offline
Зарегистрирован: 22.08.2018
 for (int i = 0; i <= i; i++) {
        analogWrite( LED1, i );
        delay(10); // ставим задержку для эффекта
}

Как обойтись без "delay(10);" ? Потому что таких разных кусков с for, много. и нужно чтобы он не тормозил код. Какие есть способы добиться того же эффекта, в данном случае плавное нарастания яркости?

Многие писали уже, никак. Но что -то не верится что прям никак. Может через while? Но у меня не получилось.

 

Очень буду признателен. уже замучился с этим. Все ведь наверняка легко.

vk007
Offline
Зарегистрирован: 16.06.2015

StoneTL пишет:

Все ведь наверняка легко.

Легко. Стоит только разобраться и осознать, как работать с millis().

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

StoneTL пишет:
Очень буду признателен. уже замучился с этим. Все ведь наверняка легко.
Похоже еще один не читатель. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

По простому не используйте фор. делать примерно так

bool _for  = 0;             // флаг запуска цикла "как бы фор"
int _i = 0;                 // счетчик "как бы цикла фор"
uint32_t prevMillis = 0;    // для таймера "delay без delay"
#define _delay  50          // величина таймера "delay без delay", мс

#define brightness 255      

void setup() {

pinMode (10, OUTPUT);   // пин например светодиода
analogWrite (10, 0);    // сначала светодиод выключим 
 
 _for = 1;   // запускаем "как бы цикл фор" (делайте это там, где вам нужно, для примера я сделал здесь, в setup )
 _i = 0;     // после чего здесь же не забываем счетчик в нужное значение взвести

}

void loop() {


if (_for && millis()-prevMillis>_delay)
      {
      if (_i == brightness) _for = 0;   // когда достигли нужного эффекта, выходим из "как бы фор"
     _i++;                              // увеличиваем счетчик (добавляем яркость света)
      analogWrite (10, _i);             // устанавливаем яркость светодиода в соответсвии со счетчиком
           
      prevMillis = millis();
      }  

}

 

StoneTL
Offline
Зарегистрирован: 22.08.2018

Спасибо. Попробую.

StoneTL
Offline
Зарегистрирован: 22.08.2018

Получилось, то что я хотел. Спасибо большое)