/* Bariyer Sistemi v4.5 attachinterrupt ve hazır reset pinini kullanarak iki butonla da kontrol HC-SR-04 Ultrasonic Distance Sensor Ses havada ortalama 340 m/sn hızla ilerler. Bu da 34000 cm/sn demektir. Bu 34 cm/milisn'ye eşittir. Ölçümlerimizi Arduino'da mikrosaniye cinsinden yaptığımız için 0.034 cm/mikrosaniye bizim için birim değerimizdir. */ // Servo - Version: Latest #include <Servo.h> Servo servom; float mesafe; long sure; #define trigPin 13 #define echoPin 8 void setup() { servom.attach(15); pinMode(trigPin, OUTPUT); //Trig pinMode(echoPin, INPUT); //Eco pinMode(7, OUTPUT); //kırmızı led pinMode(12, OUTPUT); //mavi led pinMode(2, INPUT); //buton 1 (inturrupt pini) aynı zamanda bariyeri açar pinMode(4, INPUT); // buton 2 bariyeri kapatır attachInterrupt(digitalPinToInterrupt(2), bariyerAc, RISING); digitalWrite(7, 0); // kırmızı led kapalı digitalWrite(12, 1); //mavi led açık (ultrasonik sensör kontrolünde) servom.write(0); } void loop() { mesafeOlc(); if (mesafe < 20) { servom.write(90); } else { servom.write(0); } if (digitalRead(7)) { servom.write(90); while(1){ if(digitalRead(2)){ servom.write(90); } if(digitalRead(4)){ servom.write(0); } } } } void bariyerAc() { //interrupt fonksiyonu digitalWrite(7, 1); // kırmızı led açık (buton kontrolü devrede) digitalWrite(12,0); // mavi led kapalı } void mesafeOlc() { digitalWrite(trigPin, LOW); delayMicroseconds(2); // 2 mikro saniye bekle digitalWrite(trigPin, HIGH); delayMicroseconds(10); //tetik pini 10 mikrosaniye boyunca ses dalgası yayınlıyor. digitalWrite(trigPin, LOW); // ses yayınını bitir. sure = pulseIn(echoPin, HIGH); //süre sesin gidiş geliş süresi.Bu nedenle hesaplamada 2'ye bölmeliyiz. mesafe = (sure / 2) * 0.034; // 340 m/sn = 0.034 cm/mikrosn }