arduino dersleri etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Arduino Programlama Dili: Temel Yapılar (Değişkenler)

Arduino Programlama Dili: Temel Yapılar (Değişkenler)

Arduino Programlama Dili: Temel Yapılar - Değişkenler

Merhaba Arduino severler!

Bu yazımızda Arduino programlamanın temel taşlarından biri olan değişkenleri inceleyeceğiz. Değişkenler, programlarımızda verileri saklamak, işlemek ve yönetmek için kullandığımız temel araçlardır. Tıpkı bir kutu gibi düşünebilirsiniz, bu kutunun içine sayı, yazı veya herhangi bir bilgiyi koyup, gerektiğinde bu bilgiye erişebiliriz.

Değişken Nedir?

Değişkenler, bilgisayarın belleğinde (RAM) belirli bir alanı temsil eden, adlandırılmış depolama birimleridir. Her değişkenin bir adı (identifier) ve bir türü (data type) vardır. Tür, değişkenin hangi türde veriyi saklayabileceğini (sayı, metin, vb.) belirler. Ad ise, değişkenin değerine erişmek için kullandığımız etikettir.

Değişken Tanımlama (Declaration)

Bir değişkeni kullanmadan önce tanımlamamız gerekir. Tanımlama işlemi, değişkenin adını ve türünü belirtmekten ibarettir. Arduino'da değişken tanımlama sözdizimi şöyledir:


 veri_tipi değişken_adı;
 

Örneğin, bir tam sayı (integer) değişkeni tanımlamak için:


 int sayac;
 

Bu ifade, "sayac" adında bir tam sayı değişkeni oluşturur. Henüz bu değişkene bir değer atamadık, ancak artık bu değişkeni programımızda kullanabiliriz.

Veri Tipleri (Data Types)

Arduino'da sıkça kullanılan bazı veri tipleri şunlardır:

  • int: Tam sayıları (örneğin, -10, 0, 5, 100) saklamak için kullanılır. 2 byte (16 bit) yer kaplar. -32,768 ile 32,767 arasındaki değerleri saklayabilir.
  • long: Daha büyük tam sayıları saklamak için kullanılır. 4 byte (32 bit) yer kaplar. -2,147,483,648 ile 2,147,483,647 arasındaki değerleri saklayabilir.
  • float: Kayan noktalı sayıları (ondalıklı sayılar, örneğin 3.14, -2.5, 1.0) saklamak için kullanılır. 4 byte yer kaplar.
  • double: Daha yüksek hassasiyette kayan noktalı sayıları saklamak için kullanılır. Arduino'da `float` ile aynıdır (4 byte yer kaplar).
  • char: Tek bir karakteri (örneğin, 'a', 'B', '5') saklamak için kullanılır. 1 byte yer kaplar.
  • boolean: Doğru (true) veya yanlış (false) değerlerini saklamak için kullanılır. 1 byte yer kaplar.
  • byte: 0 ile 255 arasındaki değerleri saklamak için kullanılır. 1 byte yer kaplar.
  • word: 0 ile 65535 arasındaki değerleri saklamak için kullanılır. 2 byte yer kaplar.
  • unsigned int: `int` veri tipinin işaretsiz versiyonudur. 0 ile 65535 arasındaki değerleri saklayabilir.
  • unsigned long: `long` veri tipinin işaretsiz versiyonudur. 0 ile 4,294,967,295 arasındaki değerleri saklayabilir.
  • String: Metin dizilerini saklamak için kullanılır. Ancak Arduino'da `String` sınıfını kullanmak yerine, karakter dizilerini (char array) kullanmak daha iyi bir pratiktir, çünkü `String` sınıfı bellek yönetiminde sorunlara yol açabilir.

Değişkene Değer Atama (Assignment)

Bir değişkene değer atamak için eşittir (=) işaretini kullanırız.


 değişken_adı = değer;
 

Örneğin:


 int sayac = 10; // "sayac" değişkenine 10 değerini atadık
 float pi = 3.14;  // "pi" değişkenine 3.14 değerini atadık
 char ilkHarf = 'A'; // "ilkHarf" değişkenine 'A' karakterini atadık
 boolean durum = true; // "durum" değişkenine doğru (true) değerini atadık
 

Örnek Uygulama

Şimdi basit bir örnekle değişkenlerin kullanımını görelim. Bu örnekte, bir LED'i yakıp söndüreceğiz. LED'i kontrol etmek için bir pini çıkış olarak ayarlayacak ve bir değişken kullanarak LED'in durumunu (yanıp yanmadığını) kontrol edeceğiz.

Devre Bağlantısı:

  • LED'in anot (uzun bacak) -> 220 ohm direnç -> Arduino Dijital Pin 13
  • LED'in katot (kısa bacak) -> Arduino GND

 // LED'in bağlı olduğu pini tanımlıyoruz
 const int ledPin = 13;

 // LED'in durumunu saklayacak değişkeni tanımlıyoruz
 boolean ledDurumu = false;

 void setup() {
  // LED pinini çıkış olarak ayarlıyoruz
  pinMode(ledPin, OUTPUT);
 }

 void loop() {
  // LED'in durumunu tersine çeviriyoruz (yanıyorsa söndürüyor, sönükse yakıyoruz)
  ledDurumu = !ledDurumu;

  // LED'i yakıp söndürüyoruz
  digitalWrite(ledPin, ledDurumu);

  // Kısa bir süre bekliyoruz (1 saniye)
  delay(1000);
 }
 

Bu kodda, ledDurumu adında bir boolean değişkeni tanımladık. Bu değişken, LED'in o anki durumunu (yanıp yanmadığını) saklar. loop() fonksiyonunda, bu değişkenin değerini sürekli olarak tersine çevirerek (true ise false, false ise true yaparak) LED'i yakıp söndürüyoruz.

Değişkenlerin Kapsamı (Scope)

Bir değişkenin nerede tanımlandığı, o değişkenin hangi bölgelerde kullanılabileceğini belirler. Buna değişkenin kapsamı denir. Arduino'da genel (global) ve yerel (local) olmak üzere iki tür kapsam vardır.

  • Genel Değişkenler: Fonksiyonların dışında tanımlanan değişkenlerdir. Programın herhangi bir yerinden erişilebilirler.
  • Yerel Değişkenler: Bir fonksiyon içinde tanımlanan değişkenlerdir. Sadece o fonksiyon içinde erişilebilirler.

Örneğin:


 int globalSayi = 10; // Genel değişken

 void setup() {
  int yerelSayi = 5; // Yerel değişken

  Serial.begin(9600);
  Serial.println(globalSayi); // Global değişken kullanılabilir
  Serial.println(yerelSayi);  // Yerel değişken kullanılabilir
 }

 void loop() {
  // Serial.println(yerelSayi); // Hata! Yerel değişken loop() içinde erişilemez
  Serial.println(globalSayi); // Global değişken kullanılabilir
  delay(1000);
 }
 

Unutmayın, değişkenleri doğru şekilde kullanmak, Arduino projelerinizin başarısı için kritik öneme sahiptir. Bu temel bilgileri özümsedikten sonra, daha karmaşık projelere geçebilirsiniz.

Umarım bu yazı değişkenler konusunda size yardımcı olmuştur. Bir sonraki yazımızda görüşmek üzere!

Etiketler: Arduino, Programlama, Değişkenler, Veri Tipleri, Arduino Dersleri, Arduino Başlangıç

```

Arduino Programlama Dili: Temel Yapılar (Loop)

Arduino Programlama Dili: Temel Yapılar (Loop)

Arduino Programlama Dili: Temel Yapılar (Döngüler - Loop)

Merhaba Arduino severler! Bu yazımızda Arduino programlamanın temel taşlarından biri olan ve kodumuzun tekrar tekrar çalışmasını sağlayan döngüler (loop) konusuna değineceğiz. Arduino ile projeler geliştirirken sensörlerden veri okumak, LED'leri yakıp söndürmek veya motorları kontrol etmek gibi işlemleri sürekli olarak yapmamız gerekir. İşte bu noktada döngüler devreye girer ve işimizi oldukça kolaylaştırır.

Arduino'da Döngüler Neden Önemli?

Döngüler sayesinde:

  • Kod tekrarından kurtuluruz. Aynı kod bloğunu defalarca yazmak yerine, döngü kullanarak tek seferde istediğimiz kadar tekrar edebiliriz.
  • Programımızı daha okunaklı ve anlaşılır hale getiririz.
  • Projemizin karmaşıklığını azaltırız.
  • Gerçek zamanlı uygulamalar geliştirebiliriz (Örneğin, sürekli olarak sensör değerlerini okuyup tepki vermek).

Arduino'da Kullanılan Temel Döngüler

Arduino programlamada en sık kullanılan döngüler şunlardır:

  • void loop(): Arduino programının ana döngüsüdür. setup() fonksiyonu bir kez çalıştıktan sonra, loop() fonksiyonu sonsuza kadar tekrar tekrar çalışır.
  • for Döngüsü: Belirli bir sayıda tekrar yapmak istediğimizde kullanırız.
  • while Döngüsü: Belirli bir koşul sağlandığı sürece tekrar eden bir döngüdür.
  • do...while Döngüsü: while döngüsüne benzer ancak koşul döngünün sonunda kontrol edilir, bu nedenle döngü en az bir kere çalışır.

void loop() Döngüsü

Arduino IDE'si ile yeni bir proje oluşturduğumuzda karşımıza çıkan temel yapıdır. Arduino kartımız enerji verildiği sürece bu döngü sürekli çalışmaya devam eder. Örneğin, bir LED'i yakıp söndürmek için kullanabiliriz:


 void setup() {
  // LED'in bağlı olduğu pini çıkış olarak tanımlıyoruz.
  pinMode(13, OUTPUT);
 }

 void loop() {
  // LED'i yak.
  digitalWrite(13, HIGH);
  delay(1000); // 1 saniye bekle.

  // LED'i söndür.
  digitalWrite(13, LOW);
  delay(1000); // 1 saniye bekle.
 }
 

Yukarıdaki kodda, LED'i 1 saniye yakıp 1 saniye söndürerek sürekli tekrarlayan bir yanıp sönme efekti oluşturuyoruz.

Devre Bağlantısı:

  • LED anot (+) -> 220 Ohm direnç -> Arduino Dijital Pin 13
  • LED katot (-) -> Arduino GND

for Döngüsü

for döngüsü, belirli bir sayıda tekrar yapmak istediğimizde idealdir. Üç bölümden oluşur:

  • Başlangıç: Döngünün başlangıcında sadece bir kez çalıştırılan kısım. Genellikle bir sayaç değişkeni tanımlanır ve başlangıç değeri atanır.
  • Koşul: Döngünün devam edip etmeyeceğini belirleyen koşul. Koşul doğru (true) olduğu sürece döngü çalışmaya devam eder.
  • Artış/Azalış: Her döngü tekrarından sonra sayaç değişkeninin değerini günceller.

Örneğin, 1'den 10'a kadar olan sayıları seri monitöre yazdırmak için for döngüsünü şu şekilde kullanabiliriz:


 void setup() {
  Serial.begin(9600); // Seri iletişimi başlatıyoruz.
 }

 void loop() {
  for (int i = 1; i <= 10; i++) {
   Serial.println(i);
   delay(500); // 0.5 saniye bekle.
  }
  delay(5000); // 5 saniye bekle ve tekrar başla.
 }
 

while Döngüsü

while döngüsü, belirli bir koşul sağlandığı sürece tekrar eden bir döngüdür. Koşul başlangıçta kontrol edilir. Koşul yanlış (false) ise döngü hiç çalışmaz.

Örneğin, bir butona basılana kadar beklemek için while döngüsünü kullanabiliriz:


 const int buttonPin = 2; // Butonun bağlı olduğu pin.

 void setup() {
  Serial.begin(9600);
  pinMode(buttonPin, INPUT_PULLUP); // Dahili pull-up direnci kullanıyoruz.
 }

 void loop() {
  while (digitalRead(buttonPin) == HIGH) {
   // Butona basılana kadar bekle.
   Serial.println("Butona basılmasını bekliyorum...");
   delay(100);
  }

  Serial.println("Butona basıldı!");
  delay(1000); // 1 saniye bekle ve tekrar başla.
 }
 

Devre Bağlantısı:

  • Buton bir bacağı -> Arduino Dijital Pin 2
  • Buton diğer bacağı -> Arduino GND

Bu kodda, dahili pull-up direnci kullanıldığı için butona basılmadığında pin HIGH değerini alır. Butona basıldığında ise pin LOW değerini alır. while döngüsü, buton HIGH olduğu sürece (yani basılmadığı sürece) çalışmaya devam eder.

do...while Döngüsü

do...while döngüsü, while döngüsüne benzer ancak koşul döngünün sonunda kontrol edilir. Bu nedenle döngü en az bir kere çalışır.


 int sayac = 0;

 void setup() {
  Serial.begin(9600);
 }

 void loop() {
  do {
   Serial.println(sayac);
   sayac++;
   delay(500);
  } while (sayac <= 5);

  delay(5000); // 5 saniye bekle ve tekrar başla.
  sayac = 0; // Sayacı sıfırla.
 }
 

Bu örnekte, sayaç 0'dan başlar ve her döngüde ekrana yazdırılır ve 1 artırılır. Koşul döngünün sonunda kontrol edildiği için, sayaç değeri 0 olduğunda ekrana yazdırılır ve sonra sayaç değeri 1 olur. Döngü, sayaç 5'e eşit veya küçük olduğu sürece devam eder.

Sonuç

Bu yazımızda Arduino programlamanın temel döngü yapılarını inceledik. loop(), for, while ve do...while döngüleri, Arduino projelerinizde tekrar eden işlemleri kolayca gerçekleştirmek için güçlü araçlardır. Umarım bu bilgiler, Arduino yolculuğunuzda size yardımcı olur. Bir sonraki yazımızda görüşmek üzere!

Etiketler: Arduino, Programlama, Döngü, Loop, for, while, do-while, Arduino Dersleri, Arduino Temelleri

```

🧠 Arduino IDE ve Alternatifleri: Kurulum ve İlk Kod

🧠 Arduino IDE ve Alternatifleri: Kurulum ve İlk Kod

🧠 Arduino IDE ve Alternatifleri: Kurulum ve İlk Kod

Merhaba sevgili Arduino severler! Bu yazımızda, elektronik projeler dünyasına adım atmanın en temel adımlarından biri olan Arduino IDE kurulumunu ve ilk kodumuzu yazmayı ele alacağız. Ayrıca, Arduino IDE'ye alternatif bazı geliştirme ortamlarına da göz atacağız. Hazırsanız, başlayalım!

Arduino IDE: Nedir ve Neden Kullanmalıyız?

Arduino IDE (Entegre Geliştirme Ortamı), Arduino kartlarımızı programlamak için kullandığımız ücretsiz ve açık kaynaklı bir yazılımdır. Kullanıcı dostu arayüzü sayesinde, hem yeni başlayanlar hem de deneyimli kullanıcılar için ideal bir seçenektir. Arduino IDE ile kod yazabilir, derleyebilir ve Arduino kartımıza yükleyebiliriz.

Arduino IDE Kurulumu

Arduino IDE'yi kurmak oldukça basittir. İşte adım adım kurulum rehberi:

  1. Arduino'nun Resmi Web Sitesini Ziyaret Edin: https://www.arduino.cc/en/software adresine gidin.
  2. İşletim Sistemine Uygun Sürümü İndirin: Windows, macOS veya Linux işletim sisteminize uygun olan sürümü seçerek indirin.
  3. Kurulum Dosyasını Çalıştırın: İndirdiğiniz kurulum dosyasını çalıştırın ve ekrandaki yönergeleri takip edin. Genellikle "Next" (İleri) butonuna tıklayarak ve lisans sözleşmesini kabul ederek kurulumu tamamlayabilirsiniz.
  4. Sürücüleri Yükleyin (Gerekirse): Kurulum tamamlandıktan sonra, Arduino kartınızı bilgisayarınıza bağlayın. Windows kullanıcıları için, Arduino sürücülerinin otomatik olarak yüklenmesi gerekebilir. Eğer sürücüler otomatik olarak yüklenmezse, Arduino IDE'nin kurulu olduğu klasördeki "drivers" klasöründen sürücüleri manuel olarak yükleyebilirsiniz.

İlk Kodumuz: "Hello World" (Blink Örneği)

Her programlama dilinde olduğu gibi, Arduino'da da ilk kodumuz genellikle "Hello World" olarak bilinir. Arduino dünyasındaki "Hello World" karşılığı ise, kart üzerindeki LED'i yakıp söndürmektir (Blink örneği). İşte Blink örneğinin kodu:


 void setup() {
  // LED'in bağlı olduğu pini çıkış olarak ayarla
  pinMode(LED_BUILTIN, OUTPUT);
 }

 void loop() {
  // LED'i yak
  digitalWrite(LED_BUILTIN, HIGH);
  // 1 saniye bekle
  delay(1000);
  // LED'i söndür
  digitalWrite(LED_BUILTIN, LOW);
  // 1 saniye bekle
  delay(1000);
 }
 

Kodun Açıklaması:

  • void setup(): Bu fonksiyon, programın başında sadece bir kez çalışır. Burada, LED'in bağlı olduğu pini (LED_BUILTIN) çıkış olarak ayarlıyoruz.
  • void loop(): Bu fonksiyon, program çalıştığı sürece sürekli olarak tekrar eder. Burada, LED'i yakıp söndürme işlemlerini gerçekleştiriyoruz.
  • digitalWrite(LED_BUILTIN, HIGH): LED'i yakar (pini yüksek voltaja ayarlar).
  • digitalWrite(LED_BUILTIN, LOW): LED'i söndürür (pini düşük voltaja ayarlar).
  • delay(1000): 1000 milisaniye (1 saniye) bekler.

Arduino Kartına Yükleme:

  1. Arduino kartınızı bilgisayarınıza USB kablosu ile bağlayın.
  2. Arduino IDE'de, "Araçlar" menüsünden kartınızı (Örneğin, "Arduino Uno") ve portunuzu (Örneğin, "COM3" veya "/dev/ttyACM0") seçin.
  3. Yukarıdaki kodu Arduino IDE'ye yapıştırın.
  4. "Yükle" butonuna tıklayın (sağ üst köşedeki ok işareti).
  5. Yükleme tamamlandıktan sonra, Arduino kartınız üzerindeki LED'in yanıp söndüğünü göreceksiniz.

Blink Devresi (Harici LED ile)

Eğer dahili LED yerine harici bir LED kullanmak isterseniz, aşağıdaki bağlantıları yapmanız gerekecektir:

  • LED'in uzun bacağı (anot) -> 220 ohm direnç -> Arduino Dijital Pin 13
  • LED'in kısa bacağı (katot) -> Arduino GND

Bu durumda kodunuzda LED_BUILTIN yerine 13 kullanmalısınız:


 void setup() {
  // LED'in bağlı olduğu pini çıkış olarak ayarla
  pinMode(13, OUTPUT);
 }

 void loop() {
  // LED'i yak
  digitalWrite(13, HIGH);
  // 1 saniye bekle
  delay(1000);
  // LED'i söndür
  digitalWrite(13, LOW);
  // 1 saniye bekle
  delay(1000);
 }
 

Arduino IDE Alternatifleri

Arduino IDE, başlangıç için harika bir seçenek olsa da, daha gelişmiş özelliklere ihtiyaç duyan kullanıcılar için bazı alternatifler de bulunmaktadır. İşte bazı popüler Arduino IDE alternatifleri:

  • PlatformIO IDE: Daha gelişmiş bir geliştirme ortamıdır. VS Code, Atom gibi popüler editörlerle entegre çalışabilir. Proje yönetimi, kütüphane yönetimi ve hata ayıklama gibi konularda daha gelişmiş özellikler sunar.
  • Visual Micro: Visual Studio içerisinde Arduino projeleri geliştirmek için bir eklentidir. Visual Studio'nun tüm avantajlarından faydalanmanızı sağlar.
  • Codebender: Web tabanlı bir Arduino IDE'dir. Herhangi bir kurulum gerektirmez ve projelerinizi bulutta saklayabilirsiniz.
  • Tinkercad Circuits: Başlangıç seviyesi için harika bir seçenek. Hem devre tasarımı hem de kod yazma imkanı sunar. Simülasyon özelliği sayesinde, projelerinizi fiziksel olarak kurmadan test edebilirsiniz.

Sonuç

Bu yazımızda, Arduino IDE kurulumunu, ilk kodumuzu yazmayı ve alternatif geliştirme ortamlarını inceledik. Umarız bu bilgiler, Arduino dünyasına adım atmanıza yardımcı olur. Unutmayın, elektronik projeler dünyası sonsuz olasılıklarla dolu! Denemekten, öğrenmekten ve yaratmaktan çekinmeyin!

Etiketler: Arduino, Arduino IDE, Arduino Kurulumu, İlk Kod, Blink, PlatformIO, Visual Micro, Codebender, Tinkercad, Elektronik Projeler, Arduino Dersleri

```

Arduino ile Park Sensörü Yapımı: Buzzer ve Mesafe Sensörü Kullanımı

Arduino ile Park Sensörü Yapımı: Buzzer ve Mesafe Sensörü Kullanımı

Arduino ile Park Sensörü Yapımı: Buzzer ve Mesafe Sensörü Kullanımı

Merhaba sevgili Arduino meraklıları!

Bu yazımızda, günlük hayatta oldukça işimize yarayan bir projeye, Arduino ile park sensörü yapımına odaklanacağız. Özellikle yeni sürücüler veya park etme konusunda hassas olanlar için bu proje, hem eğlenceli bir öğrenme deneyimi sunacak, hem de pratik bir çözüm olacaktır. Projemizde, HC-SR04 ultrasonik mesafe sensörü ve bir buzzer (sesli uyarıcı) kullanarak, aracımızın arkasındaki engelleri tespit edip, mesafeye göre farklı sesli uyarılar vermesini sağlayacağız.

Gerekli Malzemeler

Bu projeyi hayata geçirmek için ihtiyacımız olan malzemeler oldukça basit ve kolayca temin edilebilir:

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • HC-SR04 Ultrasonik Mesafe Sensörü
  • Buzzer (Aktif veya Pasif fark etmez, aktif buzzer kullanımı daha basittir)
  • Jumper kablolar (erkek-dişi ve erkek-erkek)
  • Breadboard (isteğe bağlı, ancak önerilir)

Devre Şeması ve Bağlantılar

Şimdi de malzemelerimizi nasıl bağlayacağımıza geçelim. Bağlantıları dikkatlice yaparak herhangi bir hatanın önüne geçebiliriz:

  • HC-SR04 Mesafe Sensörü:
    • VCC pini -> Arduino 5V pinine
    • GND pini -> Arduino GND pinine
    • Trig pini -> Arduino Dijital Pin 9'a
    • Echo pini -> Arduino Dijital Pin 10'a
  • Buzzer:
    • (+) bacağı -> Arduino Dijital Pin 8'e (direkt olarak veya bir dirençle)
    • (-) bacağı -> Arduino GND pinine

Eğer aktif buzzer kullanıyorsanız, genellikle bir direnç kullanmanıza gerek kalmaz. Ancak pasif buzzer kullanıyorsanız, 220Ω - 1kΩ arasında bir direnç kullanmanız buzzer'ınızın zarar görmesini engelleyebilir.

Arduino Kodu

Gelelim projemizin beyni olan Arduino koduna. Aşağıdaki kodu Arduino IDE'sine kopyalayıp, Arduino kartınıza yükleyebilirsiniz:


 // Tanımlamalar
 const int trigPin = 9;
 const int echoPin = 10;
 const int buzzerPin = 8;

 // Değişkenler
 long sure;
 int mesafe;

 void setup() {
  // Pinleri tanımla
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzerPin, OUTPUT);

  // Seri iletişimi başlat (isteğe bağlı, değerleri görmek için)
  Serial.begin(9600);
 }

 void loop() {
  // Mesafe ölçümü
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  sure = pulseIn(echoPin, HIGH);
  mesafe = sure * 0.034 / 2;

  // Mesafe kontrolü ve buzzer uyarıları
  if (mesafe <= 30) {
   tone(buzzerPin, 1000); // Yüksek ton
   delay(100);
  } else if (mesafe <= 60) {
   tone(buzzerPin, 500); // Orta ton
   delay(200);
  } else if (mesafe <= 100) {
   tone(buzzerPin, 250); // Düşük ton
   delay(300);
  } else {
   noTone(buzzerPin); // Ses yok
  }

  // Seri porttan mesafeyi yazdır (isteğe bağlı)
  Serial.print("Mesafe: ");
  Serial.print(mesafe);
  Serial.println(" cm");

  delay(50); // Gecikme
 }
 

Kodun Açıklaması

  • Tanımlamalar: Hangi pinlerin hangi bileşenlere bağlı olduğunu tanımlıyoruz.
  • Mesafe Ölçümü: Mesafe sensörünü kullanarak mesafeyi ölçüyoruz.
  • Mesafe Kontrolü ve Buzzer Uyarıları: Ölçülen mesafeye göre buzzer'dan farklı tonlarda sesler çıkarıyoruz. Mesafe azaldıkça, sesin frekansını artırıyoruz.
  • Seri Porttan Mesafeyi Yazdır: (İsteğe bağlı) Ölçülen mesafeyi seri port ekranında görüntüleyerek, sensörün doğru çalışıp çalışmadığını kontrol edebiliriz.

Projenin Çalışması

Kodu Arduino'ya yükledikten sonra, mesafe sensörünü bir engele doğru tuttuğunuzda, sensörün mesafeyi ölçüp buzzer'dan uygun tonlarda ses çıkardığını göreceksiniz. Mesafe azaldıkça sesin şiddeti ve frekansı artacaktır.

İpuçları ve Geliştirmeler

  • Mesafe sensörünü aracınızın arkasına monte ederek, gerçek bir park sensörü haline getirebilirsiniz.
  • Buzzer yerine farklı sesler çıkaran bir hoparlör kullanabilirsiniz.
  • LCD ekran kullanarak mesafeyi sayısal olarak da görüntüleyebilirsiniz.
  • Mesafe aralıklarını ve ses tonlarını kendi zevkinize göre ayarlayabilirsiniz.

Sonuç

Bu yazımızda, Arduino ile basit bir park sensörü yapımını adım adım inceledik. Umarım bu proje, Arduino dünyasına giriş yapmanız ve elektronik projeler geliştirmeniz için size ilham verir. Unutmayın, elektronik projeler sadece bilgi birikimi değil, aynı zamanda yaratıcılığınızı da geliştirmenize yardımcı olur.

Herkese iyi kodlamalar!

Etiketler: Arduino, Park Sensörü, HC-SR04, Buzzer, Mesafe Sensörü, Elektronik Proje, DIY, Kendin Yap, Arduino Projeleri, Arduino Dersleri

```

Arduino ile Servo Motor Kullanımı - Tarama yapma (Arduino Örnekleri)

Merhaba bugün robotikte çok kullanılan motor türü olan servo motorlardan ve bu motorların Arduino ile kontrolünden bahsedeceğim. 
SG 90 Servo Motor


Yukarıda  en ucuz servo motor resmi kullanılmış, bu motor ucuzdur ancak plastik olduğu için pek bir yük kaldıramaz ama bu işlere yeni başlayanlar genelde bu motoru alırlar kararı size bırakmakla birlikte bir kaç dolar daha verip biraz daha sağlamını almanızı öneririm. Tabi bu servo ile de yapılan güzel projeler mevcut bir kaç örneğini de siteye ekleyeceğim zaman içinde.

Servo motorlar çarklardan ve içindeki sürücüden oluşur. Ayrı bir sürücü kullanmak zorunda değilsiniz. Bazı üst düzey servolar ki akıllı servolar olarakta anılırlar geri bildirim birimi de içerir yani o anki iç sıcaklık, tork, çektiği enerji ve pozisyonu gibi bilgileri kullanıcıya iletir, üst düzey projelerde akıllı servo kullanımı yaygındır.


Servolarda dikkat edilmesi gereken bazı noktalar var, en önemlisi servoların hemen hemen hepsinin belli bir açı sınırı vardır ucuz servolarda bu sınır 180 derece dense de tam olarak 180 dönmemektedirler tabi "servo hack" denilen bir olayla servolar sınırsız açı ile dönebilirler ancak bu zamanda istediğiniz pozisyona getiremezsiniz yani normal dc motor gibi davranırlar. Pahalı servolarda servoyu bozmadan tekerlek gibi kullanım özellikleri var bunu da belirteyim. Servolar hakkında bu kadar bilgi şimdilik yeter  Artık servo moturu Arduino ile kullanma zamanı.



Devre şeması yanda gözüküyor zaten 3 kablo olduğu ve sürmek için gerekli elemanlar servo motorun içinde olduğu için devre kolay. Siyah veya kahverengi olan kablo GND kablosudur, kırmızı ise 5V kablosudur ve bu renkler genelde servo dışında da bu şekilde kullanılır. Diğer renkli olan kabloda(sarı, turuncu, beyaz  olabilir) sinyal kablosudur ve Arduino nun digital pinlerinden birine bağlanır. Örnekte ben Arduino nun 9. pinine bağladım. Detaylı resim aşşağıda.

Devre bağlandıktan sonra sıra kod işine geliyor detaylı açıklamaları kodun içinde yapacağım. Dikkat etmemiz gereken servo kendine ait bir kütüphaneye sahip ve bu kütüphane Arduino yanında gelmektedir tekrar indirmeye gerek yok.

#include <Servo.h> //kütüphanemizi ekliyoruz, Taslak > kütüphaneyi içe aktar > Servo   yolu ilede eklenebilir.


int servoPin = 9; // Servonun bağlı olduğu pini ekliyoruz


Servo servo;      // Kütüphane sayesinde Servo adlı bir değişken oluyor ve tıkpı int, float gibi tanımlanıyor biz burada servo olarak adlandırıyoruz.


int aci;            // açı değerimizi tutacak integer türünde değişken oluşturuyoruz
 
void setup() 
{ 

  servo.attach(servoPin);  // .attach komutu ile servoyu ekliyoruz
 
 servo.write(0);      // bazı servolar ilk başta saçma sapan hareket yapar yada belirsiz bir konumda başlar bunu önlemek için .write komutu ile servo açısını 0 yapıyoruz.
  
  delay(1000);         //Servonun kendisine gelmesi için bekliyoruz bu süre sizin servonuza göre değiştirilebilir. 
 
// bu iki işlemi setup içinde yapıyoruz çünkü devreye elektrik deldiğinde sadece birkere çalışması yeterli eğer loop içinde olsa 
// her turda servo 0 derece olucak ve 1 sn bekliyecek
} 
 
void loop() 
{
  //Tarama hareketi için iki for döngüsü yazıyoruz burada servonun en fazla 180 derece gittiği varsayıldı farklı değerler için 180 değeri değiştirilebilir
 
 for(aci=0;aci<=180;aci++){ // açımız 0 olduğunda 180 dereceye kadar bir bir artacak 
    servo.write(aci); // ve bu değer servoya yazılarak servonun hareketi sağlanacak
    delay(25);        // araya çok az bir bekleme koyuyoruz ki sistem saçmalamasın 
  }
   for(aci=180;aci>=0;aci--){ // açımız 180 olduğunda 0 dereceye kadar bir bir azalacak
    servo.write(aci);  // bu değer servoya yazılacak
     delay(25);        //tekrar her derece arasında kısa bir süre beklenecek 
 } 
}