KOD;
#include <Servo.h> // Servonun kütüphanesini ekliyoruz
// HC-... Sensorundeki Trig ve echo pinimizi arduinoda bagladımız girişleri tanımlıyoruz
const int trigPin = 3;
const int echoPin = 2;
// Buzzer(piezo)ı arduinoda girdigimiz girişi tanımlıyoruz. Ben buzzer ekledim fakat sesi çok az geldiği için kaldırsam mı diye düşündüm sonra vaz geçtim.
const int piezoPin = 8;
// Uzaklık ve sürenin varyasyonlarını ekliyoruz
long sure;
int uzaklik;
int nota[] = {262, 462, 862, 1662, 3262}; // Notalarımı giriyorum.Notaları kat kat seçtim ki mesafe degiştikçe ton belirgin olsun diye.
Servo myServo; // Servo motorun ayarlarını girecegimiz bir servo oluşturup tanımlıyoruz
void setup() {
pinMode(trigPin, OUTPUT); // TriggerPini Çıkış olarak ayarlıyoruz
pinMode(echoPin, INPUT); // Echo pini ise giriş olarak ayarlıyoruz
Serial.begin(9600);
myServo.attach(9); // Servo Motorun Arduino üzerindeki tanımlı olduğu input pini giriyoruz
}
void loop() {
// Bu kısımda servo motoru 15 dereceden 165 dereceye döndürüüyoruz.
for(int i=15;i<=165;i++){
myServo.write(i);
uzaklik = uzaklikhesabi();// Her açı için uzaklığı hesaplıyoruz
//buzzer ses ekleme
if(uzaklik > 40){
noTone(piezoPin);
delay(10);
noTone(piezoPin);
delay(30);
}
else if (uzaklik <= 40 && uzaklik > 30){
tone(piezoPin, nota[1]);
delay(10);
noTone(piezoPin);
delay(30);
}
else if (uzaklik <= 30 && uzaklik > 20){
tone(piezoPin,nota[2]);
delay(10);
noTone(piezoPin);
delay(30);
}
else if (uzaklik <= 20 && uzaklik > 10){
tone(piezoPin,nota[3]);
delay(10);
noTone(piezoPin);
delay(30);
}
else {
tone(piezoPin,nota[4]);
delay(10);
noTone(piezoPin);
delay(30);
}
Serial.print(i); // Açıyı serialPrintte gönderiyoruz
Serial.print(","); // P
Serial.print(uzaklik); // Uzaklığı serialPrintden gösteriyoruz
Serial.print("."); //
}
// 15 Ve 165 açılarındaki dönen işlemleri tekrar etme
for(int i=165;i>15;i--){
myServo.write(i);
uzaklik = uzaklikhesabi();
if(uzaklik > 40){
noTone(piezoPin);
delay(10);
noTone(piezoPin);
delay(30);
}
else if (uzaklik <= 40 && uzaklik > 30){
tone(piezoPin, nota[1]);
delay(10);
noTone(piezoPin);
delay(30);
}
else if (uzaklik <= 30 && uzaklik > 20){
tone(piezoPin,nota[2]);
delay(10);
noTone(piezoPin);
delay(30);
}
else if (uzaklik <= 20 && uzaklik > 10){
tone(piezoPin,nota[3]);
delay(10);
noTone(piezoPin);
delay(30);
}
else {
tone(piezoPin,nota[4]);
delay(10);
noTone(piezoPin);
delay(30);
}
Serial.print(i);
Serial.print(",");
Serial.print(uzaklik);
Serial.print(".");
}
}
// ultrasonik sensörün ölçtüğü mesafeyi hesaplayan fonksiyon
int uzaklikhesabi(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Trigpini 10mikro saniye için aktif et diyoruz
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
sure = pulseIn(echoPin, HIGH); //echoPin den değer oku,ses dalgasının yol alma süresini mikrosaniyeye çevir diyoruz
uzaklik= sure*0.034/2;
return uzaklik;
}

