Я в Ардуине дуб дубом. Но иногда смотрю скетчи и вот такую вещь заметил - подавляющее большинство даже простыми функциями Ардуины пользуется неправильно. Покажу на примере, взятом прямо с этого форума. Вот есть тема - Помигаем светодиодом. Там какие то простенькие примеры. Вот прямо первый и возьмем оттуда:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Все всем нравится? Мне - нет. Представим ситуацию - Вы хотите купить рояль, но не уверены, что он влезет в вашу комнату. Вы заказали доставку рояля, приехала машина с роялями, вы взяли оттуда рояль и затащили его на 9 этаж. Померили - не входит. И выкинули его в окно. Или - входит и вы... выкинули его в окно и пошли вниз тащить к себе другой, точно такой же рояль. Звучит как бред? Но именно это происходит в примере!
Вызвали millis(), сравнили и если сравнение устроило - вызвали millis() снова. Потом кто то удивляется что Ардуина тормозит?
Там в теме ниже есть пример с ЧЕТЫРЬМЯ вызовами. Хотя в любом варианте достаточно одного. Да, это небольшая потеря времени и немного лишней флеши займет. Но немного там, немного тут - так и набирается.
Да, я ж не сказал как не тащить рояль дважды и четырежды. А это ну очень просто - добавьте локальную переменную и считывайте millis туда. Один раз. А все сравнения и присваивания делайте уже с этой локальной переменной.
								
			
				C++:
			
		
		
		#define LED_1 9
#define LED_2 10
#define TMD 5 // задержка между шагами
void setup() {
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
}
uint8_t step = 0;
uint32_t tmr = 0;
void loop() {
  if (millis() - tmr > TMD)
  {
    tmr = millis();
    analogWrite(LED_1, step);
    analogWrite(LED_2, step + 128);
    step++;
  }
}Вызвали millis(), сравнили и если сравнение устроило - вызвали millis() снова. Потом кто то удивляется что Ардуина тормозит?
Там в теме ниже есть пример с ЧЕТЫРЬМЯ вызовами. Хотя в любом варианте достаточно одного. Да, это небольшая потеря времени и немного лишней флеши займет. Но немного там, немного тут - так и набирается.
Да, я ж не сказал как не тащить рояль дважды и четырежды. А это ну очень просто - добавьте локальную переменную и считывайте millis туда. Один раз. А все сравнения и присваивания делайте уже с этой локальной переменной.
 
				
		 
 
		 
 
		 
 
		
