#include <Stepper.h>
#include <LiquidCrystal_I2C.h>
#define LCD_ADDR 0X27
#define LCD_COLUMNS 16
#define LCD_ROWS 2
const int MOTION_SENSOR_PIN=7;
const int LED1_PIN=3;
//const int LED2_PIN=9;
//const int LED3_PIN=10;
const int BUZZER_PIN=11;
const int STEP_PIN=9;
const int DIRECTION_PIN=10;
const int stepsPerRevolution=200;
int motionStateCurrent=LOW;
int motionStatePrevious=LOW;
const int pushB=12;
const int LED4_PIN=6;
LiquidCrystal_I2C lcd(LCD_ADDR, LCD_COLUMNS, LCD_ROWS);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(MOTION_SENSOR_PIN, INPUT);
pinMode(LED1_PIN, OUTPUT);
pinMode(LED4_PIN, OUTPUT);
//pinMode(LED3_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
pinMode(DIRECTION_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(pushB, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
motionStatePrevious=motionStateCurrent;
motionStateCurrent=digitalRead(MOTION_SENSOR_PIN);
digitalWrite(DIRECTION_PIN, HIGH);
if(digitalRead(pushB)==LOW)
{
digitalWrite(LED4_PIN, HIGH);
lcd.begin(16,2);
lcd.init();
lcd.backlight();
lcd.setCursor(2,0);
lcd.print("DOOR CLOSED");
if(motionStatePrevious==LOW && motionStateCurrent == HIGH)
{
Serial.println("On");
digitalWrite(LED1_PIN, HIGH);
digitalWrite(DIRECTION_PIN, HIGH);
//digitalWrite(BUZZER_PIN, HIGH);
for(int x=0; x<800; x++)
{
digitalWrite(STEP_PIN, HIGH);
digitalWrite(BUZZER_PIN, HIGH);
delayMicroseconds(700); //Rotation Speed
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(700);
}
lcd.clear(); //katharismos othonis
//lcd.setCursor(2,0);
//lcd.print(" "); //katharismos othonis apo proigoumena texts.
delay(1000);
lcd.setCursor(3,0);
lcd.print("DOOR OPEN");
lcd.setCursor(4,1);
lcd.print("Welcome!");
delay(4000);
digitalWrite(DIRECTION_PIN, LOW);
for(int x=0; x<800; x++)
{
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(700); //Rotation Speed
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(700);
}
lcd.clear();
//lcd.setCursor(3,0);
//lcd.print(" ");
//lcd.setCursor(4,1);
//lcd.print(" ");
lcd.setCursor(2,0);
delay(800);
lcd.print("DOOR CLOSED");
}
else
if(motionStatePrevious==HIGH && motionStateCurrent==LOW)
{
Serial.println("Off");
digitalWrite(LED1_PIN, LOW);
lcd.setCursor(2,0);
lcd.print("DOOR CLOSED");
delay(1500);
}
}
else{
digitalWrite(LED4_PIN, LOW);
lcd.clear(); //katharismos othonis
lcd.noBacklight();
//lcd.setCursor(2,0);
//lcd.print(" "); //katharismos othonis apo proigoumena texts.
}
delay(2000);
}