Bluetooth Kontrollü Araç Uygulaması

Görselde bluetooth modülün RX ve TX pinlerinin SoftwareSerial.h kütüphanesi kullanılarak
8 ve 7 numaralı pinlere bağlanması gösterilmiştir. Modülün TX ucu Arduino’nun RX (8. pin) ucuna, modülün RX ucu Arduino’nun TX (7. pin) ucuna bağlanmalıdır. Ancak modülün TX ucundan
çıkan 3,3 V Arduino RX ucunda lojik 1 olarak kabul edilirken Arduino’nun TX ucundan çıkan 5 V
modülün RX ucuna doğrudan uygulandığında bozulmasına neden olacaktır. Bu nedenle
Arduino’nun TX ucundan çıkan 5 V’u 3,3 V’a düşürmek için gerilim bölücü dirençler
kullanılmalıdır.

Motor sürücüde ENA ve ENB uçlarındaki jumper takılı bırakılarak diğer dört girişten analogWrite
fonksiyonuyla PWM verilmiştir.

Devreye enerji verildiğinde bluetooth modülle haberleşmek için Android telefondan bluetooth
bağlantısı açılarak hc-05 cihazı bulunur. Varsayılan şifre “1234” veya “0000”dır. Android telefondan veri gönderebilmek için play storedan “Arduino bluetooth controller” benzeri uygulamalar
kullanılır (Görsel 3.77) veya MIT app invertor ile akıllı telefon uygulaması yapılır Görselde
Telefondan gönderilen karakterlere göre aracın yönü belirlenir.

#include <SoftwareSerial.h> // Arduino IDE ile gelir. Kurulum gerektirmez.
SoftwareSerial bluetooth(8, 7); // RX, TX (Arduino tarafında.)
const byte IN1 = 10, IN2 = 9, IN3 = 6, IN4 = 5; // PWM pinleri. (enA ve enB'de jumper takılı).
char karakter;
byte hiz = 255; // Başlangıç hızı.

void setup() {
  bluetooth.begin(9600); // Bluetooth iletişimi başlat.
}
void loop() {
  if (bluetooth.available()) { // Veri geliyorsa...
    karakter = bluetooth.read(); // Gelen karakteri karakter değişkenine ata.
    if (karakter == 'a') { // ileri.
      analogWrite(IN1, hiz);
      analogWrite(IN2, 0);
      analogWrite(IN3, hiz);
      analogWrite(IN4, 0);
    } else if (karakter == 'b') { // Geri.
      analogWrite(IN1, 0);
      analogWrite(IN2, hiz);
      analogWrite(IN3, 0);
      analogWrite(IN4, hiz);
    } else if (karakter == 'c') { // Sol.
      analogWrite(IN1, hiz);
      analogWrite(IN2, 0);
      analogWrite(IN3, 0);
      analogWrite(IN4, hiz);
    } else if (karakter == 'd') { // Sağ.
      analogWrite(IN1, 0);
      analogWrite(IN2, hiz);
      analogWrite(IN3, hiz);
      analogWrite(IN4, 0);
    } else if (karakter == 'e') { // Dur.
      analogWrite(IN1, 0);
      analogWrite(IN2, 0);
      analogWrite(IN3, 0);
      analogWrite(IN4, 0);
    }
  }
}

#include <SoftwareSerial.h> // Arduino IDE ile gelir. Kurulum gerektirmez.
SoftwareSerial bluetooth(8, 7); // RX, TX (Arduino tarafında.)
const byte IN1 = 10, IN2 = 9, IN3 = 6, IN4 = 5; // PWM pinleri. (enA ve enB'de jumper takılı).
char karakter;
int hiz = 255; // Başlangıç hızı.

void setup() {
  bluetooth.begin(9600);
}
void loop() {
  if (bluetooth.available()) { // Veri geliyorsa...
    karakter = bluetooth.read(); // Gelen karakteri karakter değişkenine ata.
    if (karakter == 'a') { // ileri.
      analogWrite(IN1, hiz);
      analogWrite(IN2, 0);
      analogWrite(IN3, hiz);
      analogWrite(IN4, 0);
    } else if (karakter == 'b') { // Geri.
      analogWrite(IN1, 0);
      analogWrite(IN2, hiz);
      analogWrite(IN3, 0);
      analogWrite(IN4, hiz);
    } else if (karakter == 'c') { // Sol.
      analogWrite(IN1, hiz);
      analogWrite(IN2, 0);
      analogWrite(IN3, 0);
      analogWrite(IN4, hiz);
    } else if (karakter == 'd') { // Sağ.
      analogWrite(IN1, 0);
      analogWrite(IN2, hiz);
      analogWrite(IN3, hiz);
      analogWrite(IN4, 0);
    } else { // Yön karakterleri gelmediyse...
      String veri = bluetooth.readString(); // 0 - 255 arası karşılığı olan gelen karakterleri oku.
    int hiz = veri.toInt(); // Gelen metni integer veri tipine dönüştür.

    }
  }  else  { // Dur.
    analogWrite(IN1, 0);
    analogWrite(IN2, 0);
    analogWrite(IN3, 0);
    analogWrite(IN4, 0);
  }
}

Kütüphanesiz kodlar. Bluetooth modülü 0 ve 1 nolu pinlere bağlı. Program yüklerken pinleri çıkarın.

const byte IN1 = 10, IN2 = 9, IN3 = 6, IN4 = 5; // PWM pinleri. (enA ve enB'de jumper takılı).
char karakter;
byte hiz = 255; // Başlangıç hızı.

void setup() {
  Serial.begin(9600); // Bluetooth iletişimi başlat.
}
void loop() {
  if (Serial.available()) { // Veri geliyorsa...
    karakter = Serial.read(); // Gelen karakteri karakter değişkenine ata.
    if (karakter == 'a') { // ileri.
      analogWrite(IN1, hiz);
      analogWrite(IN2, 0);
      analogWrite(IN3, hiz);
      analogWrite(IN4, 0);
    } else if (karakter == 'b') { // Geri.
      analogWrite(IN1, 0);
      analogWrite(IN2, hiz);
      analogWrite(IN3, 0);
      analogWrite(IN4, hiz);
    } else if (karakter == 'c') { // Sol.
      analogWrite(IN1, hiz);
      analogWrite(IN2, 0);
      analogWrite(IN3, 0);
      analogWrite(IN4, hiz);
    } else if (karakter == 'd') { // Sağ.
      analogWrite(IN1, 0);
      analogWrite(IN2, hiz);
      analogWrite(IN3, hiz);
      analogWrite(IN4, 0);
    } else if (karakter == 'e') { // Dur.
      analogWrite(IN1, 0);
      analogWrite(IN2, 0);
      analogWrite(IN3, 0);
      analogWrite(IN4, 0);
    }
  }
}

Benzer Temrinler & Yazılar

  • Servo Motor Uygulaması

    Servo, kapalı çevrim (geri besleme) kontrol sistemi anlamına gelir. Kapalı çevrim kontrol sistemi,istenen sonucu elde etmek yani motorun hızını ve yönünü ayarlamak için geri besleme sinyalinikullanır. Görselde servo motor geri besleme blok şeması ve kontrol ünitesi görülmektedir.DC motor, dişliler aracılığıyla çıkış miline bağlıdır ki bu mil potansiyometrenin milidir. Potansiyometre,motorun mevcut konumunun hedef konumla karşılaştırıldığı servo…

  • ASCII

    //void setup() { Serial.begin(9600); Serial.println("ASCII Tablosu"); for (byte i = 33; i < 127; i++) { Serial.write(i); //Karakteri yaz. Serial.print(", dec: "); //Onluk karşılığını yaz. Serial.print(i); Serial.print(", hex: "); Serial.print(i, HEX); //Onaltılık karşılığını yaz. Serial.print(", oct: "); Serial.print(i, OCT); //Oktal karşılığını yaz. Serial.print(", bin: "); Serial.println(i, BIN); //İkilik karşılığını yaz. } } void loop() {…

  • Isı Sensörü Uygulaması

    Aşağıda LM35 sıcaklık sensörü pin yapısı ve uygulama devresi görülmektedir. LM35 sıcaklık sensörü 4-20 V’la beslenebilmektedir. Çıkış ucu ise 25 °C’de 250 mV gerilimvermektedir. Bu değer her 1 °C’de 10 mV değişim gösterir. 10 bitlik analog giriş 0-5 V için 0-1023 arası değer almaktadır. Analog girişteki gerilim (5/ 1023)*A0 işlemiyle volt cinsinden bulunur. Volt değeri…

  • Uzaktan Kontrollü Araba Uygulaması

    Görseldeki joystick modülünün 10 bitlik ADC’de aldığı değerler verilmiştir. Görselde joystick modülünün pin yapısı görülmektedir. Görsel 3.84’teki verici ve Görsel 3.85’teki alıcı devrelerinde birer adet nRF24L01+ modül kullanılarak kablosuz iletişim uygulaması yapılmıştır. nRF24L01+ modülü Arduino ile haberleşirken SPI protokolünü kullanır. Joystickle x ve y ekseninde 0-1023 arasında okunan değerler map() foksiyonuyla -255 ile 255 arası…

  • Alev Dedektörü Devresi

    Alev sensörleri ortamda alev algıladığında uyarı sinyali verir. Alev sensörü 760 nm – 1100 nm arasındaki dalga boyuna sahip ışığı (kızılötesi ışınım) tespit etmek için kullanılır. Görselde alev sensörü pin yapısı, Görseldeki ise alev dedektörü devresi görülmektedir. A0: Analog veri çıkışı. GND: Toprak pini. +: 3,3 V-5 V besleme. D0: Dijital veri çıkışı. const byte buzzer…

  • LCD Uygulaması

    Görseldeki LCD uygulamasında V0 ucuna bağlı dirençle ekran parlaklığı ayarlanmıştır. Bupine potansiyometre bağlanarak da LCD ekranın parlaklığı ayarlanabilir. LCD kütüphanesi dâhilîkütüphanelerde mevcuttur. Menülerden “Taslak  Library Ekle  LiquidCrystal” seçilerek kütüphane taslakta kullanılır. Aşağıdaki program LCD ekrana “Merhaba dünya.” yazdırmaktadır. Buprogramın bir örneğine menülerden “Dosya  Örnekler  LiquidCrystal  HelloWorld” adımlarını izleyerek de ulaşılır….

Bir Yorum Yazın

E-posta adresiniz yayınlanmayacaktır. Gerekli alanlar * ile işaretlenmiştir.