Garázsajtó

Automatikusan nyíló garázsajtó

ut-2015-0012-garazsajto_nyito_rendszer

Távolságmérő figyeli, közeledik-e az autó. Amennyiben egy bizonyos távolságra megközelíti a bejáratot, az ajtó kinyílik, majd miután bement a jármű, becsukódik. Nyitáskor, csukáskor fény- és hangjelzést ad. Az ajtót egy servo-motor emeli fel.

 

 

img_20161001_103322

Forráskód:

#include <Servo.h>

#define trigPin 5
#define echoPin 6
#define garazslampa 7

Servo myServo1;
Servo myServo2;
int angle = 3;
int flag = 0;
int buzzerPin = 3;
int garazsLED = 4;
char message = ‘ ‘;
void setup() {
pinMode(garazsLED, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(garazslampa, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
myServo1.attach(9);
myServo2.attach(10);
Serial.begin(9600);
myServo1.write(angle);
myServo2.write(angle);
delay(100);
}

void loop() {

long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
Serial.println(distance);
if (distance <= 40 && distance > 20) {
garazsnyit();
}
Serial.println(distance);
delay(500);
}

void garazsnyit() {
Serial.println(“Garazs kapunyitas!”);
digitalWrite(7,HIGH);
angle = 0;
flag = 0;
while (angle != 90)
{
angle += 1;
//Serial.println(angle);
if (angle % 20 == 0)
{
if (flag == 0)
flag = 1;
else flag = 0;
}
myServo1.write(angle);
myServo2.write(angle);

if (flag == 0)
{
digitalWrite(12, HIGH);
analogWrite(buzzerPin, 10);
digitalWrite(4, HIGH);
}
if (flag == 1)
{
digitalWrite(12, LOW);
analogWrite(buzzerPin , 0);
digitalWrite(4, LOW);
}

delay(40);
analogWrite(buzzerPin , 0);
}

delay(5000);
flag = 0;
while (angle != 0)
{
angle -= 1;
if (angle % 20 == 0)
{
if (flag == 0)
flag = 1;
else flag = 0;
}
myServo1.write(angle);
myServo2.write(angle);
if (flag == 0)
{
digitalWrite(12, HIGH);
analogWrite(buzzerPin, 10);
digitalWrite(4, HIGH);
}
if (flag == 1)
{
digitalWrite(12, LOW);
analogWrite(buzzerPin , 0);
digitalWrite(4, LOW);
}
digitalWrite(7,LOW);
delay(40);
}
digitalWrite(7,LOW);
}