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

  • Step Motor Uygulaması

    Step motorlar, adımlarla hareket eden DC motorlardır görselde Faz adı verilen gruplar hâlinde organize edilmiş çoklu bobinleri vardır. Her faza sırayla enerji verildiğinde motor her seferindebir adım olacak şekilde döner. Çift kutuplu step motorlar, iki bobinden oluşur ve genellikle bobinbaşına iki olmak üzere dört bağlantıya sahiptir. Tek kutuplu bir step motor elektriksel olarak ikiayrı bobinden…

  • EEPROM.read

    #include <EEPROM.h> byte deger; void setup() { Serial.begin(9600); int hafizaBoyutu = EEPROM.length(); //Kartın hafıza boyutunu al. for (int adres = 0; adres < hafizaBoyutu; adres++) { deger = EEPROM.read(adres); //Analog veriyi 10 ms aralıklarla tüm hafızadan sırayla oku. Serial.print("Adres = "); Serial.print(adres); Serial.print("\t Değer = "); Serial.println(deger); delay(10); } } void loop() { }

  • Sıcaklık Dedektörü Devresi

    Görseldeki LM35 sıcaklık dedektörünün pin yapısı görülmektedir. Görsel 6.2’deki LM35’li sıcaklık dedektörü devresi, ortam sıcaklığı 30 °C’yi aşınca ses ve ışıkla ikaz verir. +V: 5 V besleme. OUT: Analog veri çıkışı. GND: Toprak pini. const byte buzzer = 13, LED = 12; void setup() { Serial.begin(9600); pinMode(buzzer, OUTPUT); pinMode(LED, OUTPUT); } void loop() { int…

  • 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…

  • IR ile Uzaktan Kumanda Uygulaması

    Görselde IR ile uzaktan kumanda uygulaması görülmektedir. Burada kullanılan kumandalarda her tuşun farklı bir kodu vardır. Kullanılmak istenen tuşun kodunu öğrenebilmek için menülerden “Taslak  Library Ekle  Kütüphaneleri Yönet” seçeneğinden arama kutusuna “IRremote” yazılarak “IRremote” kütüphanesi bulunur ve kurulur. Menülerden “Taslak  Library Ekle  IRremote” seçilerek programın başına eklenir. Aşağıdaki program herhangi bir…

  • LDR’yle Analog Giriş Uygulaması

    LDR, ışıkla direnci ters orantılı olarak değişen elemandır. Arduino’nun 5 V gerilimi üzerine uygulanan LDR’nin direnç-gerilim değişiminin anlaşılabilmesi için 10 kΩ’luk bir direnç seri bağlanarakgerilim bölücü oluşturulur. Bağlantı noktasının gerilim değişimi Arduino’nun analog girişineverilir const byte LED = 13; //LED değişkeninin içeriği 13 ile sabitlendi. int LDR; void setup() { pinMode(LED, OUTPUT); Serial.begin(9600); } void…

Bir Yorum Yazın

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