#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
String data1,data2;
#define BLYNK_TEMPLATE_ID "TMPL6xBvP0hFG"
#define BLYNK_TEMPLATE_NAME "TVET KKDW"
#define BLYNK_AUTH_TOKEN "jMSCaclFqWY79ptSqsxmuPyRwF34fkhA"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
int mode = 0, speed = 0;
int sw1=1, sw2=1, sw3=1, sw4=1, locksw1 = 1, locksw2 = 1;
int vsw1=1, vsw2=1, vsw3=1, vsw4=1, vlocksw1 = 1, vlocksw2 = 1;
BlynkTimer timer;
BLYNK_CONNECTED() {
Blynk.syncVirtual(V1);
Blynk.syncVirtual(V2);
Blynk.syncVirtual(V3);
Blynk.syncVirtual(V4);
}
BLYNK_WRITE(V1) {
vsw1 = param.asInt();
}
BLYNK_WRITE(V2) {
vsw2 = param.asInt();
}
BLYNK_WRITE(V3) {
vsw3 = param.asInt();
}
BLYNK_WRITE(V4) {
vsw4 = param.asInt();
}
void LCDrefesh(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(data1);
lcd.setCursor(0, 1);
lcd.print(data2);
Blynk.virtualWrite(V9, data1);
Blynk.virtualWrite(V10, data2);
}
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
lcd.init();
lcd.backlight();
// Print something
timer.setInterval(100L, LCDrefesh);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(15, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
mode=0;
}
void loop() {
Blynk.run();
timer.run();
sw1 = digitalRead(15);
sw2 = digitalRead(2);
sw3 = digitalRead(4);
sw4 = digitalRead(5);
program1();
program2();
program3();
program4();
program5();
Serial.print(sw1);
Serial.print("\t");
Serial.print(sw2);
Serial.print("\t");
Serial.print(sw3);
Serial.print("\t");
Serial.print(sw4);
Serial.print("\t");
Serial.print(vsw1);
Serial.print("\t");
Serial.print(vsw2);
Serial.print("\t");
Serial.print(vsw3);
Serial.print("\t");
Serial.print(vsw4);
Serial.print("\t");
Serial.print(mode);
Serial.print("\t");
Serial.println(speed);
delay(50);
}
void program1() {
if ((sw1 == 0) && (locksw1 == 0)) {
if (mode == 1) {
mode = 0;
speed=0;
}
else {
mode = 1;
speed = 50;
}
locksw1 = 1;
}
else if ((sw1 == 1) && (locksw1 == 1)) {
locksw1 = 0;
}
if ((sw2 == 0) && (locksw2 == 0)) {
if (mode == 2) {
mode = 0;
speed=0;
}
else {
mode = 2;
speed = 50;
}
locksw2 = 1;
}
else if ((sw2 == 1) && (locksw2 == 1)) {
locksw2 = 0;
}
}
void program2() {
if (mode > 0) {
if (sw3 == 0) {
if (speed < 100) {
speed++;
}
else {
speed = 100;
}
}
if (sw4 == 0) {
if (speed > 0) {
speed--;
}
else {
speed = 0;
mode = 0;
}
}
}
}
void program3() {
if ((vsw1 == 0) && (vlocksw1 == 0)) {
if (mode == 1) {
mode = 0;
speed=0;
}
else {
mode = 1;
speed = 50;
}
vlocksw1 = 1;
}
else if ((vsw1 == 1) && (vlocksw1 == 1)) {
vlocksw1 = 0;
}
if ((vsw2 == 0) && (vlocksw2 == 0)) {
if (mode == 2) {
mode = 0;
speed=0;
}
else {
mode = 2;
speed = 50;
}
vlocksw2 = 1;
}
else if ((vsw2 == 1) && (vlocksw2 == 1)) {
vlocksw2 = 0;
}
}
void program4() {
if (mode > 0) {
if (vsw3 == 0) {
if (speed < 100) {
speed++;
}
else {
speed = 100;
}
}
if (vsw4 == 0) {
if (speed > 0) {
speed--;
}
else {
speed = 0;
mode = 0;
}
}
}
}
void program5(){
if(mode==0){
data1="Mode : Stop";
}
else if(mode==1){
data1="Mode : forward";
}
else if(mode==2){
data1="Mode : backward";
}
data2="speed : "+String(speed)+'%';
}