#include <Stepper.h>
#include <LiquidCrystal.h>
const int LED1_PIN=2;
const int MOTION_SENSOR_PIN=3;
const int SWITCH_PIN=4;
const int LED2_PIN=5;
int motionStateCurrent=LOW;
int motionStatePrevious=LOW;
const int STEP_PIN=7;
const int DIRECTION_PIN=6;
const int stepsPerRevolution=200;
LiquidCrystal lcd(8,9,10,11,12,13);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(MOTION_SENSOR_PIN, INPUT);
pinMode(SWITCH_PIN, INPUT_PULLUP);
pinMode(STEP_PIN, OUTPUT);
pinMode(DIRECTION_PIN, OUTPUT);
lcd.begin(16,2);
}
void loop() {
// put your main code here, to run repeatedly:
motionStatePrevious=motionStateCurrent;
motionStateCurrent=digitalRead(MOTION_SENSOR_PIN);
if(digitalRead(SWITCH_PIN)==LOW)
{
digitalWrite(LED2_PIN, HIGH);
lcd.setCursor(2,0);
lcd.print("DOOR CLOSED");
if(motionStatePrevious==LOW && motionStateCurrent == HIGH)
{
Serial.println("On");
digitalWrite(LED1_PIN, HIGH);
digitalWrite(DIRECTION_PIN, HIGH);
for(int x=0; x<800; x++)
{
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(700); //Rotation Speed
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(700);
}
lcd.clear(); //katharismos othonis
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(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(LED2_PIN, LOW);
lcd.clear(); //katharismos othonis
}
delay(700);
}