21 Eylül 2025 Pazar

 



Bu programda klavyeden girilen yazı belli bir karaktere kadar okunarak metin olarak seri port ekranına yazdırılır. Seri port arabelleğinde veri varsa okuma işlemine devam eder. Bunu önlemek için "metin" değişkeni sıfırlandı ve port kapatılıp açılarak kalan verilerin silinmesi sağlandı.


Program Kodları:

String metin;

void setup()

{

  Serial.begin(9600);

}


void loop()

{

  if (Serial.available() > 0)

  {

    metin = Serial.readStringUntil('G');

    Serial.println(metin);

    metin='\0';

    Serial.end();

    Serial.begin(9600);

  }

}


_____________________________________________________________________________________________________________________________________________________


 



Bu programda klavyeden girilen yazı metin olarak seri port ekranına yazdırılır.


Program Kodları:

String metin;

void setup()

{

  Serial.begin(9600);

}


void loop()

{

  if (Serial.available() > 0)

  {

    metin = Serial.readString();

    Serial.println(metin);

  }

}


____________________________________________________________________________________________________________________________________________________________


 



Bu uygulamada klavyeden girilen sayılara göre led yakıp-söndürme işlemi yapılır. Uygulamamızda sonlandırma karakteri göndermemek için seri port ekranının altından "satır sonu yok" seçildi.


Program Kodları:

#define kirmizi_led 8

#define sari_led 9

char deger = 0;

void setup()

{

  Serial.begin(9600);

  pinMode(kirmizi_led, OUTPUT);

  pinMode(sari_led, OUTPUT);

  digitalWrite(kirmizi_led, LOW);

  digitalWrite(sari_led, LOW);

  Serial.println("Klavyeden değer girin: (1 veya 2 veya 3)");

}



void loop()

{

  if (Serial.available() > 0)     //seri porta veri geldi mi?

  {

    deger = Serial.read();    //seri portu oku "deger" değişkenine ata.

    switch (deger)

    {

      case '1':

        {

          digitalWrite(kirmizi_led, HIGH);

          Serial.println("Kırmızı Led Yandı");

          break;

        }

      case '2':

        {

          digitalWrite(sari_led, HIGH);

          Serial.println("Sarı Led Yandı");

          break;

        }

      case '3':

        {

          digitalWrite(kirmizi_led, LOW);

          digitalWrite(sari_led, LOW);

          Serial.println("Tüm Led'ler Söndürüldü");

          break;

        }

      default:

        {

          Serial.println("Yanlış Değer Girildi. Lütfen 1,2,3 Değerlerinden Birini Girin");

          break;

        }

    }

  }

}


_________________________________________________________________________________________________________________________________________________________


 



Program, seri port ara belleğine gönderdiğimiz veride 'G' karakterini görene kadar okur. Ekrana yazar. Eğer ara bellekte hala veri varsa okuma işlemine devam edilir. Bunu önlemek için Veri ekrana yazdırıldıktan sonra port aç-kapat yapılarak ara bellek temizlendi ve "gelenveri" dizisi de sıfırlandı. Uygulamamızda sonlandırma karakteri göndermemek için seri port ekranının altından "satır sonu yok" seçildi.


Program Kodları:

char gelen_veri[12];

void setup()

{

  Serial.begin(9600);

}


void loop()

{

  if (Serial.available() > 0)

  {

    Serial.readBytesUntil('G', gelen_veri, 12);

    Serial.print("Gelen Veri= "); Serial.println(gelen_veri);

    delay(1000);


    gelen_veri[0] = '\0';

    Serial.end();

    Serial.begin(9600);

    delay(1000);

  }

}



__________________________________________________________________________________________________________________________________________________________


 



Program, seri port ara belleğine gönderdiğimiz verinin ilk 6 baytını okur. Bir önceki uygulamadaki gibi port ve indis temizleme yapılmadığı için program gönderilen verinin ilk döngüde ilk 6 baytını alır yazdırır. Diğer döngülerde 6 bayt 6 bayt şeklinde veriden kalanları yazdırır. Uygulamamızda sonlandırma karakteri göndermemek için seri port ekranının altından "satır sonu yok" seçildi.


Program Kodları:

char gelenveri[12];

int veri_uzunlugu;

int i;

void setup()

{

  Serial.begin(9600);

}


void loop()

{

  if (Serial.available() > 0)

  {

    veri_uzunlugu = Serial.readBytes(gelenveri, 6);

    Serial.print("Veri Uzunlugu= "); Serial.println(veri_uzunlugu);


    Serial.print("Gelen Veri= ");

    for (i = 0; i < veri_uzunlugu; i++)

    {

      Serial.print(gelenveri[i]);

    }

  }

}


______________________________________________________________________________________________________________________________________________________


 



Program, seri port ara belleğine gönderdiğimiz verinin ilk 6 baytını okur. Eğer ara bellekte hala veri varsa okuma işlemine devam edilir. Bunu önlemek için veri ekrana yazdırıldıktan sonra port aç-kapat yapılarak ara bellek temizlendi ve "gelenveri" dizisi de sıfırlandı. Fakat 6 baytın altında 12 baytın üstünde veri gönderdiğimizde düzgün çalışmıyor. Önceki veriler de geliyor. Bunun sebebi 1 bayt akışını birden fazla okuması olabilir. Uygulamamızda sonlandırma karakteri göndermemek için seri port ekranının altından "satır sonu yok" seçildi.


Program Kodları:

char gelenveri[12];

void setup()

{

  Serial.begin(9600);

}


void loop()

{

  if (Serial.available() > 0)

  {

    Serial.readBytes(gelenveri, 6);     //seri porttan okunan verinin ilk 6 baytını al.

    Serial.println(gelenveri);

    gelenveri[0]='\0';    //diziyi 0. indisten başlayarak temizle.


    Serial.end();       //Seri port kapatıldı.

    Serial.begin(9600);     //Seri port açıldı.

  }

}


_____________________________________________________________________________________________________________________________________________________________


19 Eylül 2025 Cuma

 



Bu uygulamada Arduino seri port ekranı üzerinden veri gönderilir ve seri port ara belleğindeki veri Serial.read() komutuyla bayt bayt okunarak tanımladığımız bir diziye aktarılır. Uygulamamızda sonlandırma karakteri göndermek için seri port ekranının altından "yeni satır" seçildi. static int, static char vb. şekilde tanımlanan değişkenler yerel olarak herhangi bir döngü içerisinde tanımlansa bile void setup() üzerinde tanımlanmış gibi olur. Döngünün her tekrarında ilk verdiğimiz değeri tekrar almaz.


Program Kodları:

const unsigned int maksimum_veri = 12;

void setup()

{

  Serial.begin(9600);

}

void loop()

{

  while (Serial.available() > 0)

  {

    static char veri[maksimum_veri];

    static unsigned int veri_indis_no = 0;

    char okunan_byte = Serial.read();


    if ( okunan_byte != '\n' && (veri_indis_no < maksimum_veri) )

    {

      veri[veri_indis_no] = okunan_byte;

      veri_indis_no++;

    }

    else

    {

      veri[veri_indis_no] = '\0';       //diziyi, belirli indis numarasından itibaren son indise kadar boşalt. son indis dahil. Null yap. diziyi bu şekilde boşaltmazsak sonraki yazdırmada, ilk yazdırdığımız karakterlerden kalanlar olabilir.

      Serial.println(veri);

      veri_indis_no = 0;

    }

  }

}


____________________________________________________________________________________________________________________________________________________


 



Bu uygulamada Arduino seri port ekranı üzerinden veri gönderilir ve yine seri port ekranı üzerinden gönderilen veriyi görebiliriz. Uygulamamızda sonlandırma karakteri göndermek için seri port ekranının altından "yeni satır" seçildi. Serial.read() ile veri okuduğumuzda okuduğumuz alandaki veri silinir. Bu nedenle önce, Serial.available() ile veri uzunluğu okunur sonra Serial.read() ile veri okunur.


Program Kodları:

char veri;

int uzunluk;

void setup()

{

  Serial.begin(9600);

  Serial.println("Klavyeden değer girin:");

}



void loop()

{

  if (Serial.available() > 0)

  {

    uzunluk = Serial.available();

    veri = Serial.read();

    if (veri != '\n') //gelen veri sonlandırma karakteri değilse.

    {

      Serial.print("veri uzunluğu= "); Serial.println(uzunluk);

      Serial.print("veri bilgisi= "); Serial.println(veri);

      delay(1000);

    }

  }

}


______________________________________________________________________________________________________________________________________________________


 



Bu uygulamada Arduino seri port ekranı üzerinden veri gönderilir ve yine seri port ekranı üzerinden gönderilen veriyi görebiliriz. Uygulamamızda sonlandırma karakteri göndermemek için seri port ekranının altından "satır sonu yok" seçildi. Serial.read() ile veri okuduğumuzda okuduğumuz alandaki veri silinir. Bu nedenle önce, Serial.available() ile veri uzunluğu okunur sonra Serial.read() ile veri okunur.


Program Kodları:

int veri;     //veri değişkeni int türünde tanımlandığı için klavyeden girilen harflerin rakamsal karşılıklarını görürüz. Veri değişkeni char türünde tanımlandığı zaman ise klavyeden girilen harfler harf olarak gözükür.

int uzunluk;

void setup()

{

  Serial.begin(9600);

}

void loop()

{

  if (Serial.available() > 0)

  {

    uzunluk = Serial.available();

    Serial.print("veri uzunluğu= "); Serial.println(uzunluk);

  }

  veri = Serial.read();

  Serial.print("veri bilgisi= "); Serial.println(veri);

  delay(1000);

}


_________________________________________________________________________________________________________________________________________________



Arduino Eğitimi Konu - 7

Arduino Eğitimi Konu - 10

Toplam Sayfa Görüntüleme Sayısı

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com