Skip to content

Instantly share code, notes, and snippets.

@khthana
Created July 3, 2019 13:07
Show Gist options
  • Save khthana/a3977ff9f5da429fe8366c014e564e4d to your computer and use it in GitHub Desktop.
Save khthana/a3977ff9f5da429fe8366c014e564e4d to your computer and use it in GitHub Desktop.
#include <Arduino_FreeRTOS.h>
#define RED 6
#define YELLOW 7
#define BLUE 8
TaskHandle_t blueHandle, redHandle, yellowHandle;
const uint16_t taskParam[3][2] = { {BLUE, 500}, {RED, 1000}, {YELLOW, 2000} };
void setup() {
xTaskCreate(redLedTask, "RED LED Task", 128, NULL, 2, &redHandle);
xTaskCreate(blueLedTask, "BLUE LED Task", 128, NULL, 1, &blueHandle);
xTaskCreate(yellowLedTask, "YELLOW LED Task", 128, NULL, 1, &yellowHandle);
}
void redLedTask(void *pvParameters)
{
int count = 0;
pinMode(RED, OUTPUT);
while (1)
{
if (count++ >= 10) {
count = 0;
vTaskPrioritySet(redHandle, 1);
vTaskPrioritySet(blueHandle, 2);
}
digitalWrite(RED, digitalRead(RED) ^ 1);
delay(500);
}
}
void blueLedTask(void *pvParameters)
{
int count = 0;
pinMode(BLUE, OUTPUT);
while (1)
{
if (count++ >= 10) {
count = 0;
vTaskPrioritySet(blueHandle, 1);
vTaskPrioritySet(yellowHandle, 2);
}
digitalWrite(BLUE, digitalRead(BLUE) ^ 1);
delay(500);
}
}
void yellowLedTask(void *pvParameters)
{
int count = 0;
pinMode(YELLOW, OUTPUT);
vTaskPrioritySet(blueHandle, 1);
while (1)
{
if (count++ >= 10) {
count = 0;
vTaskPrioritySet(yellowHandle, 1);
vTaskPrioritySet(redHandle, 2);
}
digitalWrite(YELLOW, digitalRead(YELLOW) ^ 1);
delay(500);
}
}
void loop() {}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment