#include LiquidCrystal_I2C lcd(0x27, 16, 2); const int startButtonPin = 2; // the number of the start pushbutton pin const int lowButtonPin = 4; // the number of the low pushbutton pin const int topButtonPin = 7; // the number of the angle pushbutton pin const int motorDirPin = 12; const int motorBreakPin = 9; int buzzerPin = 8; // variables for reading the pushbuttons status boolean startButtonState = 0; boolean lowButtonState = 0; boolean topButtonState = 0; void setup() { pinMode(motorDirPin, OUTPUT); pinMode(motorBreakPin, OUTPUT); pinMode(buzzerPin, OUTPUT); pinMode(startButtonPin, INPUT_PULLUP); pinMode(topButtonPin, INPUT_PULLUP); pinMode(lowButtonPin, INPUT_PULLUP); lcd.init(); lcd.backlight(); Serial.begin(9600); } void loop() { // read the state of the pushbutton value: startButtonState = ! digitalRead(startButtonPin); lowButtonState = digitalRead(lowButtonPin); topButtonState = digitalRead(topButtonPin); Serial.print(startButtonState); Serial.print(lowButtonState); Serial.println(topButtonState); delay(200); lcd.clear(); lcd.setCursor(0,0); lcd.print("PRESS THE BUTTON"); if (startButtonState == HIGH) { lowButtonState = digitalRead(lowButtonPin); topButtonState = digitalRead(topButtonPin); if(lowButtonState == HIGH){ Serial.println("Start"); Serial.print(lowButtonState); lcd.clear(); lcd.setCursor(0,0); lcd.print("WARNING !!!"); lcd.setCursor(0,1); lcd.print("WORK IN PROGRESS"); do{ digitalWrite(motorDirPin, HIGH); digitalWrite(motorBreakPin, LOW); analogWrite(3, 255); topButtonState = digitalRead(topButtonPin); }while(topButtonState == LOW); digitalWrite(motorDirPin, LOW); digitalWrite(motorBreakPin, HIGH); delay(2000); do{ digitalWrite(motorDirPin, LOW); digitalWrite(motorBreakPin, LOW); analogWrite(3, 255); lowButtonState = digitalRead(lowButtonPin); }while(lowButtonState == LOW); digitalWrite(motorDirPin, LOW); digitalWrite(motorBreakPin, HIGH); lcd.clear(); lcd.setCursor(0,0); lcd.print("Work is completed"); for (int i=0; i<6; i++) { digitalWrite(buzzerPin, HIGH); delay(500); digitalWrite(buzzerPin, LOW); delay(500); } } if (lowButtonState == LOW){ lcd.clear(); lcd.setCursor(0,0); lcd.print("PREPARING..."); do{ digitalWrite(motorDirPin, LOW); digitalWrite(motorBreakPin, LOW); analogWrite(3, 255); lowButtonState = digitalRead(lowButtonPin); digitalWrite(buzzerPin, HIGH); delay(200); digitalWrite(buzzerPin, LOW); delay(200); }while(lowButtonState == LOW); digitalWrite(motorDirPin, LOW); digitalWrite(motorBreakPin, HIGH); //stop the motor lcd.clear(); lcd.setCursor(0,0); lcd.print("MACHINE IS READY"); lcd.setCursor(0,1); lcd.print("PRESS THE BUTTON"); delay(2000); } } }