#include <LiquidCrystal_I2C.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
Servo myservo; // create servo object to control a servo
int button=6;
int startbutton=5;
int buttoncond=0;
int startbuttoncond=0;
int water = A0;
int buzzer = 7; // analog pin used to connect the potentiometer
int val;
int buttonstate=0;
int x=0;
int watererror=100;
void setup() {
pinMode(button, INPUT_PULLUP);
pinMode(startbutton, INPUT_PULLUP);
Serial.begin(9600);
pinMode(buzzer, OUTPUT);
myservo.attach(9);
myservo.write(0);
startinglcd();
}
void loop() {
x=test();
Serial.println(x);
delay(2000);
digitalRead(startbutton);
if(x==0){
startmotor(100,1);// you can start motor with minimum of 15 to work stable due to the delay of motor moving 15ms between each pitch
}
else if(x==1){
startmotor(20,1);//the first number is for delay between each movement and second number for the number of repeating the movement
}
else{
startmotor(5,1);}
x=0;
}
void startmotor(int delayspeed,int numberofcud){
for (int i=1;i<=numberofcud;i++){
for (int loop1=0;loop1<=180;loop1++){
myservo.write(loop1);
delay(delayspeed);
Serial.println(analogRead(A0));
if(analogRead(A0)>watererror){
digitalWrite(buzzer,HIGH);
break;
}else{
digitalWrite(buzzer,LOW);
}
}
for (int loop1=180;loop1>=0;loop1--){
myservo.write(loop1);
delay(delayspeed);
Serial.println(analogRead(A0));
if(analogRead(A0)>watererror){
digitalWrite(buzzer,HIGH);
break;
}else{
digitalWrite(buzzer,LOW);
}
}
Serial.println(analogRead(A0));
if(analogRead(A0)>watererror){
digitalWrite(buzzer,HIGH);
break;
}else{
digitalWrite(buzzer,LOW);
}
}
}
void startinglcd(){
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.setCursor(5,0);
lcd.print("w");
delay(100);
lcd.setCursor(6,0);
lcd.print("e");
lcd.setCursor(7,0);
lcd.print("l");
delay(100);
lcd.setCursor(8,0);
lcd.print("c");
delay(100);
lcd.setCursor(9,0);
lcd.print("o");
delay(100);
lcd.setCursor(10,0);
lcd.print("m");
delay(100);
lcd.setCursor(11,0);
lcd.print("e");
delay(500);
lcd.setCursor(1+2,1);
lcd.print("c");
delay(20);
lcd.setCursor(2+2,1);
lcd.print("u");
delay(20);
lcd.setCursor(3+2,1);
lcd.print("d");
delay(20);
lcd.setCursor(4+2,1);
lcd.print("d");
delay(20);
lcd.setCursor(5+2,1);
lcd.print("l");
delay(20);
lcd.setCursor(6+2,1);
lcd.print("e");
delay(20);
lcd.setCursor(7+2,1);
lcd.print("r");
delay(1000);
lcd.setCursor(9+2,1);
lcd.print("V1");
delay(1000);
lcd.setCursor(9+2,1);
lcd.print(" ");
delay(1000);
lcd.setCursor(9+2,1);
lcd.print("V1");
delay(1000);
lcd.setCursor(9+2,1);
lcd.print(" ");
delay(1000);
lcd.setCursor(9+2,1);
lcd.print("V1");
delay(1000);
delay(2000);// attaches the servo on pin 9 to the servo object
lcd.clear();
}
int test(){
buttonstate=0;
lcd.clear();
lcd.print(" Slow");
delay(100);
lcd.setCursor(0,1);
lcd.print("speed start");
startbuttoncond=digitalRead(startbutton);
buttoncond=digitalRead(button);
while(startbuttoncond==1){
buttoncond=digitalRead(button);
while(buttoncond==1){
startbuttoncond=digitalRead(startbutton);
if(startbuttoncond==0){
break;
}
buttoncond=digitalRead(button);
if(buttoncond==0){
buttonstate++;
if (buttonstate==1){
lcd.clear();
lcd.print(" medium");
delay(100);
lcd.setCursor(0,1);
lcd.print("speed start");
}
if (buttonstate==2){
lcd.clear();
lcd.print(" fast");
delay(100);
lcd.setCursor(0,1);
lcd.print("speed start");
}
if (buttonstate>2){
buttonstate=0;
lcd.clear();
lcd.print(" Slow");
delay(100);
lcd.setCursor(0,1);
lcd.print("speed start");
}
break;
}
}
if(startbuttoncond==0){
return buttonstate;
}
// while(buttoncond==0){
// buttoncond=digitalRead(button);
// Serial.println(buttoncond);
// }
// buttonstate++;
// if (buttonstate>2){
// buttonstate=0;
// }
Serial.print("buttonstate=");
Serial.println(buttonstate);
// delay(1000);
Serial.print("buttoncond=");
Serial.println(buttoncond);
startbuttoncond=digitalRead(startbutton);
Serial.println("inside start button");
}
}