Arduino ile Müzik Kontrollü RGB LED: Renkli Işık Gösterisi

Giriş:

Arduino, hem elektronik projelerde deneyimli olanlar hem de yeni başlayanlar için eğlenceli bir mikrokontrolör platformudur. Bu blog yazısında, Arduino kullanarak müzik kontrollü bir RGB LED ışık gösterisi yapmayı öğreneceğiz. Müziğin ritmine ve ses seviyesine bağlı olarak LED'lerin renklerinin değişmesini sağlayacağız. Bu proje, basit bileşenlerle heyecan verici bir görsel efekt elde etmek isteyen herkes için uygundur.

Arduino ile Müzik Kontrollü RGB LED: Renkli Işık Gösterisi (Created with AI)


Malzemeler:

- Arduino UNO

- RGB LED

- 3 adet 220 ohm direnç

- Mikrofon modülü

- Breadboard (deney tahtası)

- Jumper kabloları


Devre Bağlantısı:

1. Arduino UNO'yu USB kablosu ile bilgisayara bağlayın.

2. RGB LED'yi breadboard'a yerleştirin ve anot bacağını Arduino'nun 9. pinine (D9) bağlayın.

3. Her bir renk için 220 ohm dirençleri kullanarak RGB LED'nin katot bacaklarını GND'ye bağlayın.

4. Elektret mikrofon modülünü breadboard'a yerleştirin ve GND, VCC ve OUT pinlerini Arduino'ya bağlayın. OUT pini Arduino'nun A0 pinine (Analog 0) bağlanmalıdır.


Yazılım:

1. Arduino IDE'yi açın ve Arduino'yu bilgisayara bağladığınız portu seçin.

2. Aşağıdaki kodu kullanarak RGB LED'yi müzikle senkronize eden bir program yazın:



#define LED_PIN_RED 9 #define LED_PIN_GREEN 10 #define LED_PIN_BLUE 11 #define MIC_PIN A0 int redValue = 0; int greenValue = 0; int blueValue = 0; void setup() { pinMode(LED_PIN_RED, OUTPUT); pinMode(LED_PIN_GREEN, OUTPUT); pinMode(LED_PIN_BLUE, OUTPUT); } void loop() { int micValue = analogRead(MIC_PIN); // LED'lerin parlaklığını ve renklerini mikrofon değerine bağlı olarak ayarla redValue = map(micValue, 0, 1023, 0, 255); greenValue = map(micValue, 0, 1023, 0, 255); blueValue = map(micValue, 0, 1023, 0, 255); analogWrite(LED_PIN_RED, redValue); analogWrite(LED_PIN_GREEN, greenValue); analogWrite(LED_PIN_BLUE, blueValue); delay(10); }

Yukarıdaki kod, üç farklı pin kullanarak RGB LED'nin kırmızı, yeşil ve mavi bileşenlerini kontrol eder. Mikrofonun değerine bağlı olarak LED'lerin parlaklığı ve renkleri değişir. map() fonksiyonu kullanılarak mikrofon değeri 0-1023 aralığından 0-255 aralığına dönüştürülür.

Bu şekilde harici bir kütüphane kullanmadan basit bir şekilde Arduino ile Müzik Kontrollü RGB LED projesini gerçekleştirebilirsiniz. Umarım bu size yardımcı olur! Başka bir sorunuz varsa sormaktan çekinmeyin.

Sonuç:

Bu blog yazısında, Arduino kullanarak müzik kontrollü bir RGB LED ışık gösterisi yapmayı öğrendik. Müziğin ritmine ve ses seviyesine bağlı olarak LED'lerin renkleri değişiyor, böylece görsel olarak etkileyici bir deneyim sunuyor. Bu proje, Arduino'yu

Arduino ile Engelden Kacan Robot Yapımı

Giriş:

Arduino, hem yeni başlayanlar için hem de deneyimli makerlar için eğlenceli ve yaratıcı projeler yapabileceğiniz bir mikrokontrolör platformudur. Bu blog yazısında, Arduino kullanarak kendi kendine hareket eden ve engelden kacan bir robot yapmayı öğreneceğiz. Robotumuz, ultrasonik sensör kullanarak etrafını algılayacak ve engellere karşı hareket edecektir. Proje için ihtiyacımız olan malzemeleri ve yapım aşamalarını detaylı bir şekilde anlatacağız.


Arduino ile engelden kacan robot (Created with AI)
Arduino ile engelden kacan robot


Malzemeler:

- Arduino UNO

- Robot şasi (veya uygun herhangi bir parca)

- DC motorlar (en az iki adet)

- Tekerlekler

- Ultrasonik sensör (HC-SR04)

- Motor sürücü kartı

- 9V pil ve pil kablosu

- Jumper kabloları


Devre Bağlantısı:

1. Arduino UNO'yu USB kablosu ile bilgisayara bağlayın.

2. Motor sürücü kartını Arduino'ya bağlamak için jumper kabloları kullanın. Motor sürücü kartının sağladığı talimatları takip edin.

3. DC motorları ve tekerlekleri robot şasisine takın. Motorlarınızın nasıl bağlanması gerektiğini robot şasi üreticisinin talimatlarına göre ayarlayın.

4. Ultrasonik sensörü breadboard'a yerleştirin ve jumper kabloları ile Arduino'ya bağlayın. ECHO pini Arduino'nun 2. pinine (D2) ve TRIGGER pini Arduino'nun 3. pinine (D3) bağlanmalıdır.


Yapım Aşamaları:

1. Arduino IDE'yi açın ve Arduino'yu bilgisayara bağladığınız portu seçin.

2. İhtiyacınıza göre DC motorlar için kontrol kodunu yazın. Örneğin, motorların ileri, geri ve durma durumlarını kontrol etmek için `forward()`, `backward()` ve `stop()` fonksiyonlarını oluşturabilirsiniz.

3. Ultrasonik sensörün okuma kodunu yazın. Sensörden gelen veriyi okuyarak yakındaki engelleri algılayacak ve robotun hareketini buna göre kontrol edeceksiniz. Örneğin, engel tespit edildiğinde robotu durdurabilir veya farklı bir yöne yönlendirebilirsiniz.

4. Motor kontrolü ve sensör okumasını birleştirerek ana kontrol kodunu oluşturun. Sensör verilerine dayanarak robotun engellere karşı hareketini kontrol edin.

5. Kodunuzu Arduino'ya yükleyin ve robotunuzu güç kaynağına bağlayarak test edin. Robotun düzgün bir şekilde çalışıp çalışmadığını gözlemleyin ve gerekirse kodu ayarlayın.

Kodlar:


// Motor bağlantı pinleri
const int motorAPin1 = 2;
const int motorAPin2 = 3;
const int motorBPin1 = 4;
const int motorBPin2 = 5;

// Ultrasonik sensör bağlantı pinleri
const int trigPin = 6;
const int echoPin = 7;

// Engelden kaçmak için minimum mesafe (cm)
const int engelMesafe = 20;

void setup() {
  // Motor kontrol pinlerini çıkış olarak ayarla
  pinMode(motorAPin1, OUTPUT);
  pinMode(motorAPin2, OUTPUT);
  pinMode(motorBPin1, OUTPUT);
  pinMode(motorBPin2, OUTPUT);

  // Ultrasonik sensör pinlerini ayarla
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // Engelden kaçınma işlemi
  if (engelVar()) {
    geriGit();
    delay(500);
    don();
    delay(500);
  } else {
    ileriGit();
  }
}

// Robotu ileri doğru hareket ettir
void ileriGit() {
  digitalWrite(motorAPin1, HIGH);
  digitalWrite(motorAPin2, LOW);
  digitalWrite(motorBPin1, HIGH);
  digitalWrite(motorBPin2, LOW);
}

// Robotu geri doğru hareket ettir
void geriGit() {
  digitalWrite(motorAPin1, LOW);
  digitalWrite(motorAPin2, HIGH);
  digitalWrite(motorBPin1, LOW);
  digitalWrite(motorBPin2, HIGH);
}

// Robotu durdur
void dur() {
  digitalWrite(motorAPin1, LOW);
  digitalWrite(motorAPin2, LOW);
  digitalWrite(motorBPin1, LOW);
  digitalWrite(motorBPin2, LOW);
}

// Robotu sola dön
void solaDon() {
  digitalWrite(motorAPin1, HIGH);
  digitalWrite(motorAPin2, LOW);
  digitalWrite(motorBPin1, LOW);
  digitalWrite(motorBPin2, HIGH);
}

// Robotu sağa dön
void sagaDon() {
  digitalWrite(motorAPin1, LOW);
  digitalWrite(motorAPin2, HIGH);
  digitalWrite(motorBPin1, HIGH);
  digitalWrite(motorBPin2, LOW);
}

// Engel tespiti
bool engelVar() {
  // Ultrasonik sensörden mesafe ölçümü yap
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long sure = pulseIn(echoPin, HIGH);
  int mesafe = sure / 58;

  // Mesafe engelMesafe değerinden küçükse engel vardır
  if (mesafe < engelMesafe) {
    return true;
  } else {
    return false;
  }
}

Sonuç:

Bu blog yazısında, Arduino ile kendi kendine hareket eden bir robot yapmayı öğrendik. Robotumuz, ultrasonik sensör kullanarak etrafını algılayıp engellere karşı hareket edebiliyor. Proje için gerekli malzemeleri ve adımları paylaştık. Kendi robotunuzu yaparak, Arduino'nun gücünü keşfedebilir ve daha karmaşık projelere ilerleyebilirsiniz.


Not: Bu proje için verilen adımlar temel bir başlangıç noktasıdır. Robotunuzun tasarımını, hareket algoritmasını veya kontrol mekanizmasını özelleştirebilirsiniz. Hayal gücünüzü kullanarak daha ilginç ve karmaşık projeler geliştirebilirsiniz.


Umarım bu blog yazısı size ilham verir! Başka sorularınız varsa sormaktan çekinmeyin.

Arduino Potansiyometre ile RGB Led Kullanma

Uzun bir aradan sonra tekrar selamlar. Uzun zamandır işten okuldan fırsat bulup yazı yazamıyordum. En son yazımda RGB led üzerinde durmuşum. Şimdi bu konuyu biraz daha ileriye taşıyıp  potansiyometre yardımı ile RGB led kullanacağız. Daha detaya inmeden potansiyometre hakkında bir kaç şey yazmak istiyorum.

Potansiyometre Nedir ?

Potansiyometre aslında bir dirençtir. Normal dirençten farkı ise ayarlanabilir olmasıdır. 





Malzemeler:
- Arduino UNO
- RGB LED
- 3 adet 220 ohm direnç
- Potansiyometre (10k ohm)
- Breadboard (deney tahtası)
- Jumper kabloları

Devre Bağlantısı:
1. Arduino UNO'yu USB kablosu ile bilgisayara bağlayın.
2. Breadboard üzerindeki bağlantıları aşağıdaki gibi yapın:

   - Arduino UNO'nun 5V pinini breadboard'ın kırmızı hat (power rail) tarafına bağlayın.
   - Arduino UNO'nun GND pinini breadboard'ın mavi hat (ground rail) tarafına bağlayın.
   - RGB LED'nin uzun bacağını (anot) breadboard'ın kırmızı hat tarafına bağlayın.
   - RGB LED'nin kırmızı, yeşil ve mavi bacaklarını sırasıyla 220 ohm dirençlerle breadboard'ın mavi hat tarafına bağlayın.
   - Her bir dirençten çıkan uçları, potansiyometrenin sırasıyla VCC, GND ve Sinyal (signal) pinlerine bağlayın.
   - Potansiyometrenin Sinyal pini, RGB LED'nin kırmızı, yeşil ve mavi bacaklarına bağlı olan dirençlerin ortak noktasına bağlanmalıdır.
   

Kod:
Aşağıda Arduino IDE'ye yapıştırmanız gereken kodu bulabilirsiniz:



    // RGB LED'nin bacaklarını tanımlayalım
    int redPin = 9;
    int greenPin = 10;
    int bluePin = 11;

    // Potansiyometrenin bağlı olduğu pin
    int potPin = A0;

    void setup() {
      // RGB LED'nin bacaklarını çıkış olarak ayarlayalım
      pinMode(redPin, OUTPUT);
      pinMode(greenPin, OUTPUT);
      pinMode(bluePin, OUTPUT);
    }

    void loop() {
      // Potansiyometreden analog değeri okuyalım
      int val = analogRead(potPin);

      // Okunan değeri 0-255 aralığına sınırlayalım
      val = map(val, 0, 1023, 0, 255);

      // RGB LED'nin renklerini güncelleyelim
      analogWrite(redPin, val);
      analogWrite(greenPin, 255 - val);
      analogWrite(bluePin, val);
    }
  
ode></pre>

Yukarıdaki kod, potansiyometreden okunan değeri kullanarak RGB LED'nin renklerini ayarlar. Potansiyometre üzerindeki ayarlamaları değiştirerek LED'nin renklerini farklı kombinasyonlarda deneyebilirsiniz.

Sonuç:
Bu blog yazısında, Arduino ve potansiyometre kullanarak RGB LED'nin renklerini kontrol etmeyi öğrendik. Devre bağlantısı ve Arduino kodu sayesinde potansiyometre ile LED renklerini kolayca değiştirebilirsiniz. Bu projeyi geliştirerek daha karmaşık ışık efektleri oluşturabilir veya başka bileşenlerle entegre edebilirsiniz.

Not: Yukarıdaki devre ve kod örneği, temel bir projeyi anlatmak amacıyla basitleştirilmiştir. Farklı LED tipleri veya potansiyometreler kullanıyorsanız bağlantı ve kodu buna göre ayarlamalısınız.

Umarım bu blog yazısı size yardımcı olur! Başka sorularınız varsa sormaktan çekinmeyin.

Arduino RGB Led Kullanımı - Arduino Örnekleri

Arduino RGB led 
    Merhaba, bu yazıda Arduino ile RGB led kullanımına değineceğiz. RGB led kırmızı, yeşi ve mavi renklerde 3 adet led barındıran led elemanıdır. RGB led kullanırken dikkat etmeniz gereken en önemli husus ledin ortak anot(5v) mı ortak katot(gnd) mi olduğunu bilmektir. Her ikisininde bacak ve iç yapı şemasını aşağıya ekliyorum.

                                                                                               

Malzemeler

1 adet Arduino (örnekte uno kullandım)

1 adet RGB led (örnekte katot kullandım, anot kullanırken GND yerine 5v yada 3V3 e bağlayın)

3 adet direnç(Ben 270 ohm kullandım, 1k ya kadar yolu var, eğer direnç değeri az olursa RGB Led                           bozulabilir)(eğer 5V yerine 3V3 e bağlıyacaksanız gerek yok)

1 adet Breadboard (kullanmadan da yapabilirsiniz ama zor olur )

Jumper yada kablo 

Devre Şeması

Ortak anot RGB de uzun bacak güç girişi olacak ve direnç sadece burada kullanılacak(şemada 1K), ortak katot için ise uzun bacak GND ye gidecek ve 3 adet direnç (270 lik kullandım) renk bacaklaına bağlanacak. 


Ortak Katot Arduino Devresi 
Ortak Anot RGB Arduino devresi
   










Programlama

Devremizi kurduk sıra geldi kodlamaya. Kod yazmaya başlamadan önce RGB ledimizin Anot veya Katot olmasının burada da fark yaratacığını belirtmek isterim. Aşağıda ki kod Anot için olacak ancak siz katot kullanacaksanız ters düşünmeniz gerekecek yani Anot ta HIGH kapatmak için, LOW açmak için kullanılacak, tabi PWM ile işlem yaparken 0 en yüksek değer 255 ise en düşük değer olacak. Aşağıdaki örnek için katot kullanıcıları PWM değeri X(mesela 100) iken 255-X(255-100) yazarsanız da aynı sonucu alırsınız. Anot ile katot ayırt etme işini ürün alırken öğrenmeniz iyi olacak.


int yesil = 9; //yesil bacağın 9. pinde olacağını belirtiyoruz
int mavi = 10; //mavi 10 da
int kirmizi = 11; // kırmızı 11 de
int bekleme = 5;  //renk geçişleri arası beklenecek süreyi yazıyoruz

void setup() {
//pinleri çıkış olarak ayarlıyoruz
  pinMode(yesil, OUTPUT);
  pinMode(mavi, OUTPUT);
  pinMode(kirmizi, OUTPUT);
  
}
void loop() {
 // her bir bacak için ilk değer oluşturuyoruz
 
  int kirmizi_degeri = 255;
  int mavi_degeri = 0;
  int yesil_degeri = 0;
  
  //bir for göngüsü oluşturuyoruz ve i değerini 255 e kadar birer birer artmasında for içindeki görevler yapılacak
  for( int i = 0 ; i < 255 ; i += 1 ){
    yesil_degeri += 2; // yeşil değeri iki iki artacak
    mavi_degeri += 1;  //mavi bir bir azalacak
    kirmizi_degeri -= 1; // kırmızı bir bir azalacak
  
    //daha sonra değerler bacaklara yazılıyor
    analogWrite( yesil, yesil_degeri );
    analogWrite( kirmizi, kirmizi_degeri );
    analogWrite( mavi, mavi_degeri);
    
    // eğer ortak katot ise 
    //analogWrite( yesil, 255 - yesil_degeri); gibi yazılacak
  
    //bekleme süresi kadar bekleniyor
    delay( bekleme );
  }
}


Bir sonraki yazıda RGB ledi potansiyometre ile kullanacağız.

İf Else yapısı ve Karşılaştırma İfadeleri (Arduino Programlama - C/C++ dersleri 4)

İf Else akış diyagramı
Merhaba bu yazıda kod deyince akla en çok gelen ve basit olan yapı olan İf - Else yapısınında bahsedeceğim. Çok bilinen yapı olduğu için kısa bir yazı olacak. İf kelime anlamı olarak "eğer" demek yani bir koşul eğer olursa bunlar olsun demek için kullanılıyor. Else is değil anlamında dır yani bir koşul olmazsa bunlar olsun demek için kullanılır. Birde bu ikisinin birleşimi  Else İf yapısı var, bu yapıda koşul birden fazla duruma sahip olabilirse kullanılıyor  Şimdi bu kalıbı Arduino da nasıl kullanacağımıza bakalım.



  /*arduonik.blogspot.com
  // bu arada tek satır yorum için kullanılırken /* - * /  çok satırlı yorum için kullanılıyor 
  */
  int acik=1; // int türünde ve acik adında bir değişken oluşturuyoruz. Bu değişken daha sonra lambamızı kontrol edecek.
              //led 0 da kapalı, 1 de yanıp sönecek ve diğer durumlarda devamlı yanacak.
              // bu örnek için değeri elle girp kodu arduinoya atacağız daha pc daha da sonra bluetooth  ve internet üzerinden ayarlıyacağız her şey zamanla :) .
  int led = 13; // Arduino üstündeki ledi kullanacağımız için led 13. pin olarak ayarlıyoruz         
  
  void yanip_sonme(int sure){// bir önceki yazıyı hatırlamak amaçlı yanıp sönme işlemini fonksiyon ile yapalım
  digitalWrite(led, HIGH); //ledimize elektrik veriyoruz
  delay(sure);             //sure değeri kadar bekliyoruz
  digitalWrite(led, LOW);  //led elektriğini kesiyoruz
  delay(sure);             // sure kadar bekliyoruz
  }  
  void setup() {   // Bu bölümün ne amaçla kullanıldığını bilmiyorsanız daha önceki yazılara kababilirsiniz
  pinMode(led, OUTPUT); //led pinimizi çıkış olarak ayarlıyoruz
  
  }
  
  void loop() {   // Bu bölümün ne amaçla kullanıldığını bilmiyorsanız daha önceki yazılara kababilirsiniz
  
  if(acik == 0){ //eğer acik değişkeni sıfıra eşitse
    digitalWrite(led, LOW); // led kapalı olsun diyoruz
    }
  else if(acik ==1){ // eğer acik değişkeni 1 ise
    yanip_sonme(650); // yanıp sönme fonksiyonumuzu çalıştırıyoruz ve bekleme değeri için 650 ms diyoruz
    }
    else{                    //diğer durumlar için yapılacakları belirtiyoruz dikkat ettiyseniz burada parantez yok
      digitalWrite(led,HIGH); //acik in 0 ve 1 olmadığı durumlarda led devamlı yanacak
      }
  }

İf else yapısı kullanılmış karanlıkta yanan led örneğini de incelemenizi tavsiye ederim.

Dikkat ettiyseniz yukarıda ki örnekte sadece eşitlik durumları kullanılmış fakat İf - Else yapısı küçük, büyük gibi karşılaştırma yapmaya imkan tanımaktadır. Bu ifadeleri liste halinde ekliyorum.

    == (eşitli)
  • != (eşit değillik)
  • < (küçüklük)
  • > (büyüklük)
  • <= (küçük eşitlik)
  • >= (büyük eşitlik)


Fonksiyonlar İçine Değişken Atama (Arduino Programlama - C/C++ dersleri 3)

Merhaba arkadaşlar bu yazımda daha önce oluşturduğumuz fonksiyonları biraz daha özelleştireceğiz ve parantez içine bir şeyler ekleyip eklediğimiz şeylere göre farklı sonuçlar elde edeceğiz. Tanım biraz karışık gelmiş olabilir farkındayım ama kodlar içindeki açıklamalar size yardımcı olacaktır.


İlk olarak daha önce burada örneğini yaptığımız led uygulamasının basit halini yapacağız sizde Arduinoya ısınmak için bu örneği aşağıdaki yöntemle yaparsanız sizin için çok iyi olur. Takıldığınız yer olursa yorum olarak sormaktan çekinmeyin.

İlk örnekte devre kurmamıza gerek yok direk Arduino kartımızda bulunan ledi kullanacağız.

 
// arduonik.blogspot.com
// Bu örnekte Arduino kartımızda dahili bulunan ve 13. pine bağlı led kullanacağız
int led = 13;  // pinimize "led" adını veriyoruz


void ac_kapa(int bekleme){ //daha sonra "ac_kapa" adında bir fonksiyon oluşturuyoruz ama daha önceki parantez içinin aksine burada bekleme adında bir int değişken var
// fonksiyonu kullanırken bu değişken yerine istediğimiz değeri yazarsak sadece bu fonksiyon içinde kullanılan bekleme değişkenleri yazdığımız değeri alacak
    digitalWrite(led, HIGH);   // ilk başta ledimizi açık duruma getiriyoruz
  delay(bekleme);               // ve bekleme değişkeni kadar bekliyoruz
  digitalWrite(led, LOW);    // ardından ledi kapatiyoruz
  delay(bekleme);            // ve led kapalıyken bekleme değişkeninin değeri kadar bekliyoruz
}  // fonksiyonu kapatmayı unutmayın :)
//kendi fonksiyonumuzdan sonra Setup fonksiyonunu oluşturuyoru
void setup() {

  pinMode(led, OUTPUT);  //led olarak adlandırdığımız 13 nolu pini çıkış pini olarak ayarlıyoruz
}

// Daha sonrada loop fonksiyonuna geçiyoruz
void loop() {
ac_kapa(500);             // ac_kapa fonksiyonunu çalıştırıyoruz ve bekleme değişkenini 500 yapıyoruz yani her iki delay da 500 ms olacak
}

Şimdi bu kodu biraz daha geliştirip açık kalma ve kapalı kalma sürelerini farklı farklı olarak kullanalım

// arduonik.blogspot.com
// Bu örnekte Arduino kartımızda dahili bulunan ve 13. pine bağlı led kullanacağız
int led = 13;  // pinimize "led" adını veriyoruz


void ac_kapa(int bekleme_acik,int bekleme_kapali){ //daha sonra "ac_kapa" adında bir fonksiyon oluşturuyoruz ama daha önceki parantez içinin aksine burada 
//bekleme_acik ve bekleme_kapali adında iki int değişken ekliyoruz
// fonksiyonu kullanırken bu değişkenler yerine istediğimiz değeri yazarsak  bu fonksiyon içinde kullanılan bekleme_acik ve bekleme_kapali değişkenleri yazdığımız değerleri alacak
    digitalWrite(led, HIGH);   // ilk başta ledimizi açık duruma getiriyoruz
  delay(bekleme_acik);               // ve bekleme_acik değişkeni kadar bekliyoruz
  digitalWrite(led, LOW);    // ardından ledi kapatiyoruz
  delay(bekleme_kapali);            // ve led kapalıyken bekleme_kapali değişkeninin değeri kadar bekliyoruz
}  // fonksiyonu kapatmayı unutmayın :)
//kendi fonksiyonumuzdan sonra Setup fonksiyonunu oluşturuyoru
void setup() {

  pinMode(led, OUTPUT);  //led olarak adlandırdığımız 13 nolu pini çıkış pini olarak ayarlıyoruz
}

// Daha sonrada loop fonksiyonuna geçiyoruz
void loop() {
ac_kapa(500,250);             // ac_kapa fonksiyonunu çalıştırıyoruz ve bekleme_acik değişkenini 500, bekleme_kapalı değişkenini 250 yapıyoruz yani her iki delay da farklı olacak
}

Daha öncede dediğim gibi blogta ki örneklerden Trafik Lambası örneğinin devresini kurup kendi yazdığınız foknsiyon ile fonksiyon içine yazılan rengi yakacak bir kod yazmak size bir şeyler katacaktır. Takıldığınız yeri  yorumda sorabilirsiniz.

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 
 } 
}