İçeriğe geç

Kategori: Gömülü Sistemler

Arduino Bluetooth String Okuma | Arduino Bluetooth Read String From Serial

Arduino-Bluetooth Modülü (HC-05) bacak bağlantıları : Arduino-Bluetooth pin connection

Arduino RX(dijital 0 bacağı) – Bluetooth Module TX

Arduino TX(dijital 1 bacağı) – Bluetooth Module RX

 

/*
 *    Arduino Bluetooth String Okuma
 *    Mustafa SOLAK  - www.mustafasolak.com  - 21.04.2019
 *    
 */
 
const byte karakterSayisi = 90;
char alinanKarakterler[karakterSayisi];
boolean yeniVeri = false;
char gelenVeri;

// gerekli ayarlar yapılıyor
void setup() {
  pinMode(13,OUTPUT); 
  Serial.begin(9600);
  Serial.println("Arduino Bluetooth String Okuma İşlemi Başlatıldı");
}

// Ana fonksiyon
void loop() {
  veriOku();
  gelenVeriyiGoster();
  if(strcmp( alinanKarakterler, "ledyak") == 0)
    Serial.println("ledyakilacak");
  delay(1000);
}

void veriOku() {
  static boolean veriAliniyor = false;
  static byte msSayac = 0;
  char veriBaslangicKarakteri = '<';
  char veriBitisKarakteri = '>';
  char gelenKarakter;
 
  while (Serial.available() > 0 && yeniVeri == false) { //  get all bytes from buffer
     gelenKarakter = Serial.read();
  
     if (veriAliniyor == true) {
       if (gelenKarakter != veriBitisKarakteri)   // Eğer hala veri alınıyorsa
       { 
         alinanKarakterler[msSayac] = gelenKarakter;
         msSayac++;

         // Eğer gelen karakter sayısı belirlediğimizden fazla olursa bunu sınırlandırıyoruz.
         // Maksimum bizim const byte karakterSayisi = 90; ile belirlediğimiz 90 karakter olmalı
         if (msSayac >= karakterSayisi) {
           msSayac = karakterSayisi - 1;
         }
       }
       else // veri sonlandırma karakteri > görüldü. en sona \0 sonlandırma karakteri ekliyorum
       {
         alinanKarakterler[msSayac] = '\0';
         veriAliniyor = false;  
         msSayac = 0;
         yeniVeri = true;
       }
     }
     else if (gelenKarakter == veriBaslangicKarakteri) // veri alma işlemi başladı
     {  
       veriAliniyor = true;
     }
   }
}

// bu fonksiyon veriOku() fonksiyonu ile gelmiş olan veriyi gösterir
void gelenVeriyiGoster() {
  if (yeniVeri == true) {
   Serial.println(alinanKarakterler);
   yeniVeri = false;
  }
}

 

Yorum Bırak

Arduino ile Bluetooth Modülü( HC-05) Kullanımı

Arduino ile haberleşme için Bluetooth Terminal programını kurabilirsiniz. Varsayılan bluetooth şifresi 1234 ‘tür.

Program Kodları

char gelenVeri;
void setup() {
  pinMode(13,OUTPUT);
  Serial.begin(9600);
  Serial.println("Arduino Bluetooth Kontrol");
}

void loop() {
  if (Serial.available()>0){
    
    gelenVeri=Serial.read();
    
    if(gelenVeri=='1'){
      digitalWrite(13,1);
      Serial.println("LED Yakildi.");
    }
    
    if (gelenVeri=='0'){
      digitalWrite(13,0);
      Serial.println("LED Sonduruldu." );
    }
  }
  delay(100);
}

 

Alıntıdır : http://robotiktak.com/arduino-ile-hc-06-bluetooth-modul-kullanimi/

Yorum Bırak

CCS C – Mikrodenetleyici Ders Notları

MİKRODENETLEYİCİLER DERSİ NOTLARI

  1. Giriş Çıkış Yönlendirme Komutları

Kullanımı : set_tris_x(değer);           // Portları giriş çıkış yapmak için kullanılır.

Bir pini(bacağı) giriş yapmak için o pine “1”, çıkış yapmak için “0” verilir. A0 pinini giriş yapmak için bu pine 1 vermeliyiz. A0 pinini çıkış yapmak için istersek 0 vermemiz gerekir.

Örnek-1: set_tris_a(0xFF);    // A portuna FF hexadecimal verisini gönderir. Yani A portunu                                         // giriş olarak ayarlar.

Örnek-2 : set_tris_b(0b00001111);  // B portuna binary 00001111 verisini gönderir. Yani B                                                      // portunun sağdaki 4 bitini giriş, soldaki 4 bitini çıkış                                                        // olarak ayarlar.

  1. Yorum Satır(lar)ı Ekleme

Yorum satırları komut olarak algılanmaz. Program içerisinde programın çalışması hakkında açıklamalar eklemek veya yazılan komutların ne anlama geldiğini açıklamak veya kısa hatırlatmalar eklemek için kullanılırlar.

Kullanımı :

// Bu iki sağa eğik slaj karakteri belirlediğiniz satırı yorum satırına dönüştürür.

/*  */ Bu karakterler arasında kalan satır veya satırlar yorum satırı olarak algılanır.

  1. Bir Portun Tamamına Veri Göndermek

Kullanımı : output_x(değer) ;           // Belirtilen porta parantez içinde verilen değeri gönderir.

* Hexadecimal veya binary olarak veri gönderebiliriz.

Örnek-3 : output_b(0x00);    // B portuna hexadecimal 0x00 değerini gönderir. Yani B portunun tüm çıkışlarını 0’a çeker.

Örnek-4 : output_b(0xF0);   // B portuna hexadecimal 0xF0 değerini gönderir. Yani B portunun sağdaki 4 bitine 0, soldaki 4 bitine 1 gönderilmiş olur. Dolayısıyla b portunun sağdaki 4 bitine bağlı olan ledler söner, soldaki 4 bitine bağlı ledler yanar.

Örnek-5 : output_b(0b10101010); // B portuna binary “10101010” değerini gönderir. B portunun tek sayılı bacaklarına bağlı olan ledler sönük, çift sayılı bacaklarına bağlı olan ledler yanık olur.

  1. Tek Bir Pine Veri Göndermek

Kullanımı : output_high(pin_x);       // Belirtilen pini lojik 1 yapar. Yani bağlı olan led yanar.

output_low(pin_x);       // Belirtilen pini lojik 0 yapar. Yani bağlı olan led söner.

output_bit(pin_x, değer);  // Belirtilen bacağa belirtilen değeri gönderir.

output_toggle(pin_x);                        // Belirtilen bacağı 1 ise 0, 0 ise 1 yapar.

Örnek-7 : output_high(pin_B0);       // B0 pinini lojik 1 yapar. Yani B0’a bağlı olan led yanar.

Örnek-8 : output_low(pin_B7);        // B7 pinini lojik 0 yapar.Yani B7’ye bağlı olan led söner

Örnek-9 : output_bit(pin_B5,1);      // B5 pinini lojik 1 yapar.

Örnek-10 : output_bit(pin_B6,0);    // B6 pinini lojik 0 yapar.

Örnek-11 : output_toggle(pin_B3);  // B3 pinini 1 ise 0, 0 ise 1 yapar.

  1. Bir Portun Değerini Okumak

Kullanımı : input_x();           // x ile belirtilen portun değerini okur.

Örnek-12 : input_a();            // A portunun değerini okur.

Örnek-13 : input_b();            // B portunun değerini okur.

Örnek-14 :

int portDegeri;

portDegeri = input_b();          // B portunu okuyup sonucu portDegeri değişkenine atar.

  1. Bir Pinin(Bacağın) Değerini Okumak

Kullanımı : input(pin_x);      // x ile belirtilen pinin durumunu okur.

Örnek-15 :  input(pin_A1)    // A1 pininin değerini okur. (Lojik 1 veya 0)

Örnek-16 : A2 bacağına bir buton bağlı olsun ve bu butona basılı ise B0’a bağlı olan led yansın.

set_tris_a(0x0F);    // A portunu giriş olarak ayarladık.

set_tris_b(0x00);    // B portunu çıkış olarak ayarladık.

output_b(0x00);      // B portunu lojik 0’a çektik.

if( input(pin_A2) )  // Eğer A2 pinine bağlı olan butona basılmışsa;

{

delay_ms(20);             // Buton arkını önleme gecikmesi.

output_high(pin_B0);      // B0 pinini lojik 1 yap. B0’a bağlı                                // olan led yanar.

while( input(pin_A2) );   // Butondan el çekilene kadar bekle.

}

  1. Sağa Kaydırma İşlemi

Kullanımı :  veri = veri >> kaydırma_miktarı;

Örnek-17 :

int a;

a = 0x80;   // a sayısı  = 10000000 ’e eşit.

a = a >> 1; // a sayısı 1 kere sağa kaydırılarak 01000000 oldu.

  1. Sola Kaydırma İşlemi

Kullanımı :  veri = veri << kaydırma_miktarı;

Örnek-18 :

int a;

a = 0x01;   // a sayısı  = 00000001 ’e eşit.

a = a << 1; // a sayısı 1 kere sola kaydırılarak 00000010 oldu.

  1. Zaman Gecikmesi Ekleme

Kullanımı : delay_ms(gecikme_miktarı);

Gecikme miktarı milisaniye cinsinden belirtilir. 1 saniye = 1000 milisaniye. 3 saniye gecikme vermek için 3000 yazmamız gerekir.

Örnek-19 : delay_ms(2000);             // 2 saniye gecikme süresi verildi.

  1. Koşul İfadeleri
  2. if-else İfadesi

Belirlediğimiz şartın doğru olup olmadığını kontrol ederek, doğru olması ve yanlış olması durumunda yapılacak işlemleri belirtir.

Kullanımı :

if ( şart)

{

Şart doğruysa yapılacak işlemler

}

else

{

Şart yanlışsa yapılacak işlemler

}

Örnek-20 : B0 pinine bağlı bir fan olsun ve sıcaklık değeri 50 ve 50’den büyük olduğunda bu fan çalışıp devreye girsin, 50’den küçük olduğunda da fan dursun.

int sicaklik;

sicaklik = 65;  // Sıcaklık değerini bir sensörden aldığımızı düşünelim

if (sicaklik >= 50)  // Sıcaklık 50 ve 50’den büyük ise;

{

output_high(pin_B0); // B0 pinini lojik 1 yap.Yani fanı çalıştır.

}

else // sıcaklık değeri 50’den küçük ise

{

output_low(pin_B0); // B0 pinini 0 yap. Yani fanı durdur.

}

Hazırlayan: Mustafa SOLAK

www.mustafasolak.com

Yorum Bırak