Inteligentne oświetlenie w łazience (Podsumowanie)

Ja stosuje harmonogram zadań, nic się nie blokuje loop się kręci z pełną prędkością.
Wywołuje tylko taski co określony czas. Oczywiście zadbać trzeba aby taski były też nieblokujące.

//*****scheduler*************************************
unsigned long previousMillis = 0;
const long sec = 1000;
const uint8_t timeout1 = 1;   //time proces1 [sec]
const uint8_t timeout2 = 250;  //time proces2 [sec]
boolean proces1 = false;
boolean proces2 = false;
uint8_t time1 = 0;
uint8_t time2 = 0;



void Scheduler() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis < sec) {
    return;
  }
  previousMillis = currentMillis;
  if (time1 < timeout1) {
    time1 += 1;
  }
  else {
    proces1 = true;
  }

  if (time2 < timeout2) {
    time2 += 1;
  }
  else {
    proces2 = true;
  }

}

//************************************************

void loop()
{
    Scheduler();
      if (proces2 == true) {
//   tu dopisujesz to co ma się wykonać co okres timeout2 



        time2 = 0;
        proces2 = false;
      }

      if (proces1 == true) {
//   tu dopisujesz to coma wykonać co okres timeout1 	  
	  
        time1 = 0;
        proces1 = false;
      }
 
}
1 polubienie