// *** meierinc copyright 2022 *** //
// *** [email protected] *** //
// struct_ptr version
// *** includes *** //
// *** defines *** //
// *** const *** //
struct LedFlash
{
byte pin;
int duration;
};
// structure initialize //
LedFlash led_12 = {12, 3000};
LedFlash led_13 = {13, 6000};
LedFlash led_14 = {14, 1000};
//LedFlash* sp_led_12 = &led_12;
//LedFlash* sp_led_13 = &led_13;
//LedFlash* sp_led_14 = &led_14;
//void* vp_led_12 = (void*) &led_12;
//void* vp_led_13 = (void*) &led_13;
//void* vp_led_14 = (void*) &led_14;
// *** codes *** //
void task(void* ptr)
{
// structure converter
LedFlash* led_ptr = (LedFlash*)ptr;
pinMode(led_ptr->pin, OUTPUT);
while (true)
{
digitalWrite(led_ptr->pin, !digitalRead(led_ptr->pin));
// delay(1000);
vTaskDelay(led_ptr->duration); // Muti-task version delay.
}
}
void setup() {
// Serial
Serial.begin(115200);
Serial.println("Hello, ESP32!");
// requests args:
// function's defination,
// "nickname",
// requests memory space(byte),
// input argument or NULL,
// priority,
// handle (requests a pointer) that operate the task () or NULL
xTaskCreate(task, "blink 12", 1024, (void*) &led_12, 1, nullptr);
xTaskCreate(task, "blink 13", 1024, (void*) &led_13, 1, nullptr);
xTaskCreate(task, "blink 14", 1024, (void*) &led_14, 1, nullptr);
}
void loop()
{
}