#define BLYNK_TEMPLATE_ID "TMPL6ld3aZ9FJ"
#define BLYNK_TEMPLATE_NAME "RTOS"
char auth[] = "M8_5Q18T13dfUZz8PIrqiYqLagr36W1A";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Arduino.h>
#define p1 32
#define p2 26
#define p3 33
#define p4 25
int animasi_kontrol = 0;
TaskHandle_t Task1;
TaskHandle_t Task2;
void animasi(void * pvParameters) {
Serial.print("CORE : ");
Serial.println(xPortGetCoreID());
for (;;) {
if (animasi_kontrol == 0) {
animasi1();
}
else if (animasi_kontrol == 1) {
animasi2();
}
}
}
void blynk(void * pvParameters) {
Blynk.begin(auth, ssid, pass);
while (Blynk.connected() == false) {
}
Serial.println();
Serial.println("Blynk Connected");
Serial.println("Blynk Loop Task Started");
while (1) {
if (!Blynk.connected()) {
Blynk.begin(auth, ssid, pass);
} else {
Blynk.run();
}
delay(1);
}
}
void setup() {
Serial.begin(115200);
pinMode(p1, OUTPUT);
pinMode(p2, OUTPUT);
pinMode(p3, OUTPUT);
pinMode(p4, OUTPUT);
digitalWrite(p1, LOW);
digitalWrite(p2, LOW);
digitalWrite(p3, LOW);
digitalWrite(p4, LOW);
xTaskCreatePinnedToCore(
animasi, //function name
"Task1", //task name
8000,// stack size
NULL,//task parameters
1, // task priority
NULL, //task handle
ARDUINO_RUNNING_CORE //core
);
xTaskCreatePinnedToCore(
blynk, //function name
"Task2", //task name
4096,// stack size
NULL,//task parameters
1, // task priority
NULL, //task handle
ARDUINO_RUNNING_CORE //core
);
}
void animasi1() {
digitalWrite(p4, LOW);
digitalWrite(p3, LOW);
digitalWrite(p2, LOW);
digitalWrite(p1, HIGH);
delay(200);
digitalWrite(p1, LOW);
digitalWrite(p2, HIGH);
delay(200);
digitalWrite(p1, LOW);
digitalWrite(p2, LOW);
digitalWrite(p3, HIGH);
delay(200);
digitalWrite(p1, LOW);
digitalWrite(p2, LOW);
digitalWrite(p3, LOW);
digitalWrite(p4, HIGH);
delay(200);
}
void animasi2() {
digitalWrite(p1, HIGH);
digitalWrite(p2, HIGH);
digitalWrite(p3, LOW);
digitalWrite(p4, LOW);
delay(200);
digitalWrite(p1, LOW);
digitalWrite(p2, LOW);
digitalWrite(p3, HIGH);
digitalWrite(p4, HIGH);
delay(200);
}
void loop() {
// put your main code here, to run repeatedly:
}
BLYNK_WRITE(V0) {
int data = param.asInt();
if (data == 0) {
animasi_kontrol = 0;
} else {
animasi_kontrol = 1;
}
}