Table of Contents

Automated doors - Panait Stefan-Andrei

Introducere

Proiectul este un sistem de deschidere automata a usilor care se foloseste de un ultrasonic senzor pentru a detecta cand am apropriat mana si a deschide usile.

Descriere generala

Schema bloc

Proiectul va avea un senzor un senzor ultrasonic, care v-a masura atunci cand mana se apropie de el, la o distanta de x, 2 servomotoare vor deschide usile, afisand pe un lcd un mesaj sugestiv ex (Open).

Hardware Design

Piesele folosite in proiect:

Software Design

Am folosit pentru dezvoltarea codului bibliotecile LiquidCrystal_I2C.h si servo.h pentru a folosii servomotoarele si LCD-ul.

Descriere generala a codului:

void setup() {
  //initializez lcd
  lcd.init();
  lcd.backlight();

  //initializez pinii pt senzor ultrasonic
  DDRD |= (1 << trig);
  DDRD &= ~(1 << echo);
  
  //initializez servomotor
  servo1.attach(servo1_pin);
  servo2.attach(servo2_pin);
  servo1.write(0);
  servo2.write(0);
}

* loop() : In functia de loop realizez configurarea propriu-zisa astfel calculez distanta la care se afla un obiect fata de senzorul ultrasonic, daca este mai mica de 20 usile se deschid, altfel usile stau inchise. Afisand un mesaj sugestiv door opened, respectiv door closed.

void loop() {

  //initializez senzor si calculez distanta
  digitalWrite(trig, HIGH); 
  delayMicroseconds(10);
  digitalWrite(trig, LOW); 

  duration = pulseIn(echo, HIGH);
  dist = (duration * 0.034) / 2;
  
  //daca distanta este mai mica de 20 se deschid usile altfel raman inchise
  if (dist < 20) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Door Open");
    digitalWrite(led2, LOW);
    digitalWrite(led1, HIGH);
    servo1.write(0); 
    servo2.write(180); 
    delay(2000);
  } else {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Door Closed");
    digitalWrite(led1, LOW);
    digitalWrite(led2, HIGH);
    servo1.write(90); 
    servo2.write(90);
    delay(1000);
  }
}