#include <TaskScheduler.h>
// TaskScheduler instance
Scheduler ts;
// Variables
int threshold = 512;
// Task functions
void blinkLED() {
static int value = analogRead(A0);
if (value > threshold) {
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
}
void readAnalog() {
int value = analogRead(A0);
Serial.print("Analog value: ");
Serial.println(value);
}
void pwmLED() {
static int brightness = 0;
static int increment = 10;
brightness += increment;
if (brightness >= 255 || brightness <= 0) increment = -increment;
analogWrite(9, brightness);
}
// Define tasks
Task tBlink(500, TASK_FOREVER, &blinkLED, &ts);
Task tReadAnalog(100, TASK_FOREVER, &readAnalog, &ts);
Task tPWM(100, 10, &pwmLED, &ts);
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(9, OUTPUT); // PWM pin
Serial.begin(9600);
// Enable tasks
tBlink.enable();
tReadAnalog.enable();
tPWM.enable();
}
void loop() {
ts.execute();
}