Seri Port Üzerinden Arduino Kontrolü


Seri port ekranından bir değer girerek bilgisayarımızdan arduinomuzu kontrol edebiliriz. Bunun nasıl olduğunu anlayabilmek için bir örnek tasarlayalım. Programda sıfırdan sonsuza kadar birer birer sayma işlemi yapalım. Sayma işlemini seri port ekranında göstereceğiz. Sonra seri port ekranında istenilen bir değer girildiğinde o andaki değeri eeprom hafızasına kaydedilmesini sağlayacağız. Daha sonra enerji kesilip arduino tekrar başlatıldığında eeproma kaydettiğimiz değerden saymaya devam etmesini sağlayacağız. Hatta kaydettiğimiz sayının hangisi olduğunu yine seri port ekranında gösterelim.
Şimdi bu özelliği kullanabilmek için seri port kesmesini bilmemiz gerekir. Seri porttan bir değer girdiğimizde ana programdan çıkıp kesme fonksiyonuna geçiş yaparız. Bu fonksiyonda yazdığımız komutlar bittikten sonra ana döngüye geri döneriz. Bunun için “void serailEvent()” komutunu kullanırız. Örneğimizin kodlarını yanlarına açıklama satırları ile aşağıya aktarıyorum.

#include <EEPROM.h>         // EEPROM kütüphanesi eklenir

int adrs = 10;                        // EEPROM da kullanacağımız adresin değeri
int i = 0;                                   // sayma yapacağımız değişken
char kyt = 'kaydet';            // seri porttan girmek istediğimiz değer
char data;                           // seri porttan girdiğimiz değerin tutulduğu değişken

void setup() {                   
  
Serial.begin(9600);        // seril port ile haberleşmenin başlatılması
  i = EEPROM.read(adrs);      // EEPROM da kaydettiğimiz değeri i değişkenine atıyoruz

}

void loop() {                               
Serial.println(i);                         // değişkenimizi seri port ekranında gösteriyoruz

  i=  i+1;                                    // i değişkeni bir artırıyoruz
  delay(300);                               // 300 ms bekletiyoruz

}

void serialEvent()   //Seri port üzeriden veri geldiğinde serialEvent fonksiyonuna geçiş yaparız

{

  while (Serial.available())       // veri alındığı sürece döngü devam eder

  {

   data = char(Serial.read());      // seri port ekranından giriş yaptığımız değer data değişkenine atanır
   if (data == kyt) {       // daha önceden değerini belirlediğimiz “kyt” değişkeni ile data karşılaştırılır
   EEPROM.write(adrs, i);     // eğer if değeri doğru ise gönder dediğimiz andaki i değeri kaydedilir
   Serial.print("kaydedilen i değeri   "); // kaydettiğimiz i değeri ekrana yazdırılır
   Serial.println(i);                                 // kaydettiğimiz i değeri ekrana yazdırılır
    }


  }

}
       



0 yorum:

Yorum Gönder