hello, I have a college assignment to make an automatic floodgate iot project. I want to add a manual system to the servo motor with a blynk slider. after I tried the slider it didn’t work. can anyone to solve my project? thanks. here is my code
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SPI.h>
#define BLYNK_PRINT Serial
BlynkTimer timer;
char auth[] = "1N4-RedKSdFvnpGqicl7Fvx0R0zqiiTp";
char ssid[] = "No.71";
char pass[] = "Lawanggintung12";
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <Servo.h>
Servo servoMoisture; //servoMoisture
Servo servoUltrasonic; //servoUltrasonic
#define trigPin 12
#define echoPin 13
long duration, distance;
int sensorPin=A0;
int sensorValue=0;
int outputValue=0;
BLYNK_WRITE(V2)
{
servoMoisture.write(param.asInt());
}
BLYNK_WRITE(V3)
{
servoUltrasonic.write(param.asInt());
}
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8080);
lcd.begin();
lcd.clear();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
servoMoisture.attach(2);
servoUltrasonic.attach(15);
timer.setInterval(1000L, sendUltrasonic);
timer.setInterval(1000L, sendMoisture);
}
void loop(){
Blynk.run();
timer.run();
sendMoisture();
sendUltrasonic();
}
void sendMoisture()
{
sensorValue=analogRead(sensorPin);
outputValue=map(sensorValue,1023, 165, 0, 100);
lcd.setCursor(0,1);
lcd.print("MT =");
lcd.setCursor(5,1);
lcd.print(outputValue);
lcd.setCursor(9,1);
lcd.print("%");
Blynk.virtualWrite(V1, outputValue);
if(outputValue>40)
{
servoMoisture.write(0);
delay(3000);
}
else
{
servoMoisture.write(180);
delay(3000);
}
}
void sendUltrasonic() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = 29-((duration*0.0343) / 2);
lcd.setCursor(0,0);
lcd.print("DT = ");
lcd.setCursor(5,0);
lcd.print(distance);
lcd.setCursor(9,0);
lcd.print("CM");
Blynk.virtualWrite(V0, distance);
if (distance <=9 ) { //batas jarak air
servoUltrasonic.write(0);
delay(500);
}
else if (distance <= 12 ) {
servoUltrasonic.write(90);
delay(500);
}
else if (distance <=15 ) {
servoUltrasonic.write(180);
delay(500);
}
else{
servoUltrasonic.write(180);
delay(500);
}
}