const int led1 = 15;
const int led2 = 2;
const int led3 = 4;
const int led4 = 5;
const int buttonPinTask1 = 34;
const int buttonPinTask2 = 35;
TaskHandle_t Task1Button;
TaskHandle_t Task2Button;
void setup() {
Serial.begin(115200);
Serial.println("Hello, Belajar RTOS!");
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(buttonPinTask1, INPUT_PULLUP);
pinMode(buttonPinTask2, INPUT_PULLUP);
xTaskCreatePinnedToCore(
Task1ButtonFunction,
"Task1Button",
10000,
(void*)&buttonPinTask1,
1,
&Task1Button,
0
);
xTaskCreatePinnedToCore(
Task2ButtonFunction,
"Task2Button",
10000,
(void*)&buttonPinTask2,
1,
&Task2Button,
1
);
}
void Task1ButtonFunction(void *pvParameters) {
int buttonPin = *((int*)pvParameters);
Serial.print("Tugas 1 Berjalan di core: ");
Serial.println(xPortGetCoreID());
for (;;) {
if (digitalRead(buttonPin) == HIGH) {
Serial.println("Button on Task 1 pressed!");
digitalWrite(led1, HIGH); // Turn on LED1
digitalWrite(led2, HIGH); // Turn on LED2
vTaskDelay(pdMS_TO_TICKS(500)); // Delay for LED on time
digitalWrite(led1, LOW); // Turn off LED1
digitalWrite(led2, LOW); // Turn off LED2
}
vTaskDelay(pdMS_TO_TICKS(10)); // Task delay
}
}
void Task2ButtonFunction(void *pvParameters) {
int buttonPin = *((int*)pvParameters);
Serial.print("Tugas 2 Berjalan di core: ");
Serial.println(xPortGetCoreID());
for (;;) {
if (digitalRead(buttonPin) == HIGH) {
Serial.println("Button on Task 2 pressed!");
digitalWrite(led3, HIGH); // Turn on LED3
digitalWrite(led4, HIGH); // Turn on LED4
vTaskDelay(pdMS_TO_TICKS(500)); // Delay for LED on time
digitalWrite(led3, LOW); // Turn off LED3
digitalWrite(led4, LOW); // Turn off LED4
}
vTaskDelay(pdMS_TO_TICKS(10)); // Task delay
}
}
void loop() {
}