#include "ESP32Servo.h"
Servo myservo;
#define Servo1Pin 19
#define ledWatringOn 2
#define ledEmg 15
#define button 12
#define speaker1 4
#define WaterOpen 180
#define WaterClose 0
int buttonState;
int IsEmg=0;
void setup() {
// put your setup code here, to run once:
myservo.attach(Servo1Pin);
pinMode(ledWatringOn,OUTPUT);
pinMode(ledEmg,OUTPUT);
pinMode(button, INPUT_PULLUP);
pinMode(speaker1, OUTPUT);
Serial.begin(115200);
Serial.println("start program");
digitalWrite(ledWatringOn, LOW);
digitalWrite(ledEmg, LOW);
/*
myservo.write(0);
Serial.println("Servo 0"); // close
delay(3000);
Serial.println("Servo 180"); // open
myservo.write(180);
*/
}
void loop() {
if (IsEmg!=1)
{
digitalWrite(ledWatringOn, LOW);
myservo.write(WaterClose);
for(int i=0;i<10;i++)
{
Serial.println("Not watering");
buttonState = digitalRead(button);
if ( buttonState==0)
{
//Serial.println("Emg pressed");
Serial.println("Stop");
myservo.write(WaterClose);
digitalWrite(ledWatringOn, LOW);
digitalWrite(ledEmg, HIGH);
IsEmg=1;
break;
}
if ( buttonState==1)
{
digitalWrite(ledEmg, LOW);
// Serial.println("Emg not pressed ");
}
delay(1000);
}
}
if (IsEmg!=1)
{
digitalWrite(ledWatringOn, HIGH);
myservo.write(WaterOpen);
for(int i=0;i<5;i++)
{
Serial.println("watering");
buttonState = digitalRead(button);
if ( buttonState==0)
{
//Serial.println("Emg pressed");
Serial.println("Stop");
myservo.write(WaterClose);
digitalWrite(ledWatringOn, LOW);
digitalWrite(ledEmg, HIGH);
IsEmg=1;
break;
}
if ( buttonState==1)
{
digitalWrite(ledEmg, LOW);
// Serial.println("Emg not pressed ");
}
delay(1000);
}
} // if Emg=1
if (IsEmg==1)
{
Serial.println("System Stoped : Emg button pressed ");
for(;;)
{
tone(speaker1, 1700); // Send 1200KHz sound signal, which is a G tone
delay(50);
noTone(speaker1); // Stop sound
delay(500);
}
}
// put your main code here, to run repeatedly:
delay(1000); // this speeds up the simulation
}