const int red1 = 2;
const int red2 = 19; // red LED on GPIO 2
const int red3 = 18; // red LED on GPIO 2
const int red4 = 17; // red LED on GPIO 2
const int red5 = 16; // red LED on GPIO 2
const int blue1 = 4; // blue LED on GPIO 4
const int blue2 = 0; // blue LED on GPIO 4
const int blue3 = 15; // blue LED on GPIO 4
const int blue4 = 22; // blue LED on GPIO 4
const int blue5 = 23; // blue LED on GPIO 4
const int green1 = 5; // yellow LED on GPIO 5
const int green2 = 12; // yellow LED on GPIO 5
const int green3 = 13; // yellow LED on GPIO 5
const int green4 = 14; // yellow LED on GPIO 5
const int green5 = 27; // yellow LED on GPIO 5
void task1 (void * parameters) {
for(;;){
digitalWrite(red1, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(red1, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
digitalWrite(red2, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(red2, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
digitalWrite(red3, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(red3, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
digitalWrite(red4, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(red4, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
digitalWrite(red5, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(red5, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
delay(25);
}
}
void task2 (void * parameters){
for(;;){
digitalWrite(blue5, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(blue5, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
digitalWrite(blue4, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(blue4, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
digitalWrite(blue3, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(blue3, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
digitalWrite(blue2, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(blue2, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
digitalWrite(blue1, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(blue1, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
delay(25);
}
}
void task3(void * parameters){
for(;;){
digitalWrite(green1, HIGH);
digitalWrite(green3, HIGH);
digitalWrite(green5, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(green1, LOW);
digitalWrite(green3, LOW);
digitalWrite(green5, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
digitalWrite(green2, HIGH);
digitalWrite(green4, HIGH);
vTaskDelay(550 / portTICK_PERIOD_MS);
digitalWrite(green2, LOW);
digitalWrite(green4, LOW);
vTaskDelay(250 / portTICK_PERIOD_MS);
delay(25);
}
}
void setup() {
Serial.begin(9600);
pinMode(red1, OUTPUT);
pinMode(red2, OUTPUT);
pinMode(red3, OUTPUT);
pinMode(red4, OUTPUT);
pinMode(red5, OUTPUT);
pinMode(blue1, OUTPUT);
pinMode(blue2, OUTPUT);
pinMode(blue3, OUTPUT);
pinMode(blue4, OUTPUT);
pinMode(blue5, OUTPUT);
pinMode(green1, OUTPUT);
pinMode(green2, OUTPUT);
pinMode(green3, OUTPUT);
pinMode(green4, OUTPUT);
pinMode(green5, OUTPUT);
xTaskCreate(
task1, // function name
"Task 1", // task name
1000, // stack size
NULL, // task parameters,
1, // task priority
NULL // task handle
);
xTaskCreate(
task2, // function name
"Task 2", // task name
1000, // stack size
NULL, // task parameters,
1, // task priority
NULL // task handle
);
xTaskCreate(
task3, // function name
"Task 3", // task name
1000, // stack size
NULL, // task parameters,
1, // task priority
NULL // task handle
);
}
void loop() {
}