const int ledPins[] = {2, 4, 5, 18, 17, 16, 21, 19, 32};
const int numLEDs = 9;
void leftToRight(void *pvParameters);
void rightToLeft(void *pvParameters);
void oddsAreEven(void *pvParameters);
void setup() {
for (int i = 0; i < numLEDs; i++) {
pinMode(ledPins[i], OUTPUT);
}
xTaskCreate(leftToRight, "LeftToRight", 1000, NULL, 1, NULL);
xTaskCreate(rightToLeft, "RightToLeft", 1000, NULL, 1, NULL);
xTaskCreate(oddsAreEven, "OddsAreEven", 1000, NULL, 1, NULL);
}
void leftToRight(void *pvParameters) {
while (1) {
for (int i = 0; i < 3; i++) {
digitalWrite(ledPins[i], HIGH);
delay(500);
digitalWrite(ledPins[i], LOW);
}
}
}
void rightToLeft(void *pvParameters) {
while (1) {
for (int i = 5; i >= 3; i--) {
digitalWrite(ledPins[i], HIGH);
delay(500);
digitalWrite(ledPins[i], LOW);
}
}
}
void oddsAreEven(void *pvParameters) {
while (1) {
// Turn on odds
for (int i = 6; i < numLEDs; i += 2) {
digitalWrite(ledPins[i], HIGH);
}
delay(500);
// Turn off odds
for (int i = 6; i < numLEDs; i += 2) {
digitalWrite(ledPins[i], LOW);
}
// Turn on evens
for (int i = 7; i < numLEDs; i += 2) {
digitalWrite(ledPins[i], HIGH);
}
delay(500);
// Turn off evens
for (int i = 7; i < numLEDs; i += 2) {
digitalWrite(ledPins[i], LOW);
}
}
}
void loop() {
}