#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd1(0x20, 16, 2);
LiquidCrystal_I2C lcd2(0x21, 16, 2);
LiquidCrystal_I2C lcd3(0x22, 16, 2);
LiquidCrystal_I2C lcd4(0x23, 16, 2);
TaskHandle_t TaskLCD1;
TaskHandle_t TaskLCD2;
TaskHandle_t TaskLCD3;
TaskHandle_t TaskLCD4;
void setup() {
// put your setup code here, to run once:
xTaskCreatePinnedToCore(
TaskTampilan1, //Fungsi Tugas
"TaskLCD1", //Nama Tugas
10000, //Besar Tumpukan
NULL, //Parameter
1, //Prioritas Tugas
&TaskLCD1, //Handel Tugas
0 //Core
);
xTaskCreatePinnedToCore(
TaskTampilan2, //Fungsi Tugas
"TaskLCD2", //Nama Tugas
10000, //Besar Tumpukan
NULL, //Parameter
1, //Prioritas Tugas
&TaskLCD2, //Handel Tugas
1 //Core
);
xTaskCreatePinnedToCore(
TaskTampilan3, //Fungsi Tugas
"TaskLCD3", //Nama Tugas
10000, //Besar Tumpukan
NULL, //Parameter
1, //Prioritas Tugas
&TaskLCD3, //Handel Tugas
0 //Core
);
xTaskCreatePinnedToCore(
TaskTampilan4, //Fungsi Tugas
"TaskLCD4", //Nama Tugas
10000, //Besar Tumpukan
NULL, //Parameter
1, //Prioritas Tugas
&TaskLCD4, //Handel Tugas
1 //Core
);
Serial.begin(115200);
Serial.println("Tampilan 4 LCD dengan FREERTOS ESP32!");
}
void TaskTampilan1(void * pvParameters){
lcd1.init();
lcd1.backlight();
for(;;){
// Tugas
Tampilan1();
}
}
void TaskTampilan2(void * pvParameters){
lcd2.init();
lcd2.backlight();
while(1){
// Tugas
Tampilan2();
}
// for(;;){
// // Tugas
// Tampilan2();
// }
}
void TaskTampilan3(void * pvParameters){
lcd3.init();
lcd3.backlight();
for(;;){
// Tugas
Tampilan3();
}
}
void TaskTampilan4(void * pvParameters){
lcd4.init();
lcd4.backlight();
while(1){
// Tugas
Tampilan4();
}
// for(;;){
// // Tugas
// Tampilan4();
// }
}
void loop() {
// put your main code here, to run repeatedly:
// Tampilan1();
// Tampilan2();
// Tampilan3();
// Tampilan4();
}
void Tampilan1(){
lcd1.setCursor(0,0);
lcd1.print("LCD 1: TUGAS I");
delay(1000);
lcd1.clear();
lcd1.setCursor(0,0);
lcd1.print("Tugas 1 Berjalan ");
lcd1.setCursor(0,1);
lcd1.print("di core : " + String(xPortGetCoreID()));
delay(1000);
lcd1.clear();
}
void Tampilan2(){
lcd2.setCursor(0,0);
lcd2.print("LCD 2: TUGAS II");
delay(1000);
lcd2.clear();
lcd2.setCursor(0,0);
lcd2.print("Tugas 2 Berjalan ");
lcd2.setCursor(0,1);
lcd2.print("di core : " + String(xPortGetCoreID()));
delay(1000);
lcd2.clear();
}
void Tampilan3(){
lcd3.setCursor(0,0);
lcd3.print("LCD 3: TUGAS III");
delay(1000);
lcd3.clear();
lcd3.setCursor(0,0);
lcd3.print("Tugas 3 Berjalan ");
lcd3.setCursor(0,1);
lcd3.print("di core : " + String(xPortGetCoreID()));
delay(1000);
lcd3.clear();
}
void Tampilan4(){
lcd4.setCursor(0,0);
lcd4.print("LCD 4: TUGAS IV");
delay(1000);
lcd4.clear();
lcd4.setCursor(0,0);
lcd4.print("Tugas 4 Berjalan ");
lcd4.setCursor(0,1);
lcd4.print("di core : " + String(xPortGetCoreID()));
delay(1000);
lcd4.clear();
}