// подключаем библиотеку «Scheduler» для выполнения несколько задач одновременно #include // имена пинов светодиодов #define LED_RED 10 #define LED_GREEN 9 #define LED_BLUE 8 void setup() { // выставляем светодиоды в режим выхода pinMode(LED_RED, OUTPUT); pinMode(LED_GREEN, OUTPUT); pinMode(LED_BLUE, OUTPUT); // добавляем в планировщик функции loop2 и loop3; // loop() всегда запускается по умолчанию: Scheduler.startLoop(loop2); Scheduler.startLoop(loop3); } // задача номер 1: мигать светодиодом с двух секундной задержкой void loop() { // зажигаем светодиод digitalWrite(LED_BLUE, HIGH); // когда запущено несколько задач // delay() переводит задачу в состояние ожидания и передает управление другим задачам // тем самым гарантируя, что они будут выполняться delay(2000); // гасим светодиод digitalWrite(LED_BLUE, LOW); delay(2000); } // задача номер 2: мигать светодиодом каждые 500 мс void loop2() { // зажигаем светодиод digitalWrite(LED_GREEN, HIGH); delay(500); // гасим светодиод digitalWrite(LED_GREEN, LOW); delay(500); } // задача номер 3: мигать светодиодом каждые 200 мс void loop3() { // зажигаем светодиод digitalWrite(LED_RED, HIGH); delay(200); // гасим светодиод digitalWrite(LED_RED, LOW); delay(200); // функцию yield() нужно вызывать постоянно // чтобы передавать управление другим задачам yield(); }