Ana Sayfa Arduino Arduino C# Projeleri ve Uygulamaları Arduino ve C# Haberleşmesi ile Led Yakma – 1.Ders
Herkese merhabalar! Projelerinizi bilgisayar üzerinden kendi tasarladığınız bir arayüzle kontrol etmek ister misiniz? Bu yazıda sizlerle yeni bir seriye başlıyoruz. Seri haberleşme yardımıyla ve C# kullanarak oluşturduğumuz arayüzlerle projelerimizi kontrol etmeyi ve veri okumayı öğreneceğiz. Geliştirdiğimiz arayüzlerle Arduino projelerimizi çok daha eğlenceli hale getireceğiz.
Seri İletişim Nedir?
En basit tanımıyla seri iletişim dijital bilginin tek bir hat üzerinden ardı sıra taşınmasıdır, yani seri iletişimde bir kerede sadece bir bit iletilir. Paralel iletişimde ise tüm bitler aynı anda transfer edilir. Bu yüzden seri iletişimi tek bir kablo hattı ile sağlayabilirken paralel iletişimde her bit için ayrı bir kablo hattı gerekir. Bunun sonucu olarak da seri iletişim, maliyeti bakımından daha avantajlıdır.
Paralel ve Seri İletişim
Seri iletişimde alıcı doğru haberleşme sağlamak için iletim hızını, karakter uzunluğunu ve başlangıç bitiş bitlerini bilmek zorundadır. Örneğin; Arduino’da serial monitör kullanırken tanımladığımız 9600 baud değeri de alıcı makineye iletim hızını tanıtmak içindir. Bu sayede alıcı, gelen veriyi bizim gönderdiğimiz hızda okur ve yanlış bir okumanın önüne geçilmiş olur.
Arduino’da seri iletişim, üzerindeki seri iletişim birimi (UART) vasıtasıyla sağlanır. Arduino’ya her kod yükleyişimizde seri iletişimi en az bir kere kullanmış oluruz. Bilgisayarla devamlı iletişim sağlamak için de Serial.begin(9600) komutuyla seri iletişimi başlatırız; Serial.print(), Serial.println() komutları ile bilgisayarımıza veri göndeririz. Serial.read() komutu ile de bilgisayarımızdan veri okuruz. Bu konuyla ilgili dersimize ve daha detaylı bilgiye buraya tıklayarak ulaşabilirsiniz.
Seri Haberleşme ile Led Yakma
Arduino öğrenmeye başladığımız ilk derslerde yapmış olduğumuz led yakma uygulamasını yapacağız. Led yakma uygulaması yaptığımız Arduino dersine buraya tıklayarak ulaşabilirsiniz. Devremizi bu uygulamadaki ile aynı olacak şekilde kuruyoruz. O uygulamadan farklı olarak ledi seri port ekranı üzerinden gönderdiğimiz komutlarla aç-kapa yapacağız.
Aşağıdaki kodu Arduino’ya yüklüyoruz.
Gördüğünüz gibi oldukça basit bir kod. Kodumuzu yükledikten sonra seri port ekranını açıyoruz ve ledi kontrol etmeye başlıyoruz.
Arduino Seri Port Ekranı
Devrenizi ve kodunuzu bozmayın, yazının devamında C# ile oluşturduğumuz bir arayüz üzerinden seri porta veriler göndererek ledi kontrol edeceğiz. C# kısmında derleyici olarak Visual Studio kullanacağımız için işe Visual Studio kurulumunu yaparak başlıyoruz.
Bu seride tasarlayacağımız arayüzleri oluştururken ve kodlarken Visual Studio kullanacağız. Bu yüzden öncelikle bilgisayarımıza derleyicimizi kurmamız gerekiyor.
Seri boyunca Visual Studio 2017 kullanacağız. Farklı sürümlerle de projelerinizi yapabilirsiniz. Kurulum için Visual Studio’nun web sitesine gidiyoruz. Siteye gitmek için tıklayın.
Visual Studio 2019 Yükleme Penceresi
Bu sayfada Visual Studio’nun 2019 sürümünün yükleme penceresi ile karşılaşacaksınız. Eski bir sürümü indirmek için pencereyi aşağıya kaydırarak “Eski Sürümler” sekmesine geliyoruz.
Bu sekmeye tıkladığınızda 2010’dan itibaren yayımlanmış tüm Visual Studio sürümlerine ulaşabilirsiniz.
Visual Studio Geçmiş Sürümler
Halihazırda Visual Studio’nun bir sürümü ile çalışanlar kullandıkları sürüm ile devam edebilirler. 2019 veya 2017 sürümünden birini kurabilirsiniz, çalışmanızı engelleyecek bir fark olmayacaktır.
Bilgisayarınıza inen Visual Studio yükleyicisine çift tıklayarak yükleme işlemini başlatın. Kurulum işleminin başında “İş Yükleri” sekmesinde dil paketleri ve platformlardan seçim yapmanız istenecektir. Buradan “Evrensel Windows Platformu Geliştirme” ve “.NET masaüstü geliştirme” seçeneklerini seçiyoruz. Bunun haricinde kullanacağınız veya ilginizi çeken farklı platformları da seçebilirsiniz. Sağ alttan yükleme boyutunu görebilirsiniz. Platformları seçtikten sonra yükleme işlemine başlıyoruz.
C# Form Uygulaması Oluşturma
Proje oluşturmak için “Başlangıç Sayfası” içindeki “Yeni Proje” kısmını kullanabileceğimiz gibi Dosya > Yeni > Proje tıklayarak yeni bir proje oluşturabiliriz.
Açılan penceredeki listeden Visual C# > Windows Forms Uygulaması seçiyoruz, ardından proje ismini ve proje dosyalarını kaydedeceğimiz alanı belirliyoruz.
Yeni Proje Oluşturma Penceresi
“Tamam”a tıkladıktan sonra aşağıdaki gibi bir pencere ile karşılaşacaksınız. Proje ile ilgili her şeyi burada yürüteceğiz. Aşağıdaki görselde bazı alanların açıklaması yer alıyor.
C# Form Uygulaması Paneller
C# ile Arduino Projemize Arayüz Tasarlayalım
C# Form Arayüzü
Ledi seri port ekranı üzerinden seri haberleşme ile açıp kapamayı gördük. Şimdi işin C# kısmına geçiyoruz. Bundan sonrası için de seri haberleşmeden faydalanacağız. Sadece Arduino IDE’sindeki seri port ekranını değil de kendi tasarladığımız arayüz üzerinden bunu gerçekleştireceğiz. Arayüz üzerine eklediğimiz araçlar yardımıyla projelerimizi kontrol edeceğiz.
Proje oluşturarak işe başlıyoruz.Projemizi oluşturduktan sonra Araç Kutusu’ndan 1 ComboBox, 1 Label, 2 Button ve 1 SerialPort’u form içine sürüklüyorum. Bunları Araç Kutusu’ndaki arama kısmına yazarak kolaylıkla bulabilirsiniz. Neden bu nesneleri kullandığımızı açıklamak gerekirse: ComboBox’ı Arduino’nun bağlı olduğu portu seçerken kullanacağız. Bunu kodla da tanımlayabilirdik ancak port değişikliği durumundan etkilenmemek adına bu şekilde yapıyoruz. Label’ı led durumunu görmek, 2 butonu da ledi açıp kapatmak için kullanacağız. SerialPort, form üzerinde görünen bir araç değildir, seri iletişimi sağlamak için onu da projemize dahil ediyoruz. Tüm bu nesneleri görseldeki hale gelecek şekilde düzenliyorum.
Eklediğimiz nesnelerin görünümü ve özellikleri ile ilgili değişimleri nesnenin üzerine tıkladığımızda sağ altta çıkan “Özellikler” penceresinden yapıyoruz. Buradan zevkinize göre düzenleme yapabilirsiniz.
Özellikler ikonun yanındaki şimşek işareti “Olaylar” sekmesini temsil eder. Örneğin; “Click”, kullanıcının seçili nesneye tıklaması olayıdır. Bu olayın sonucunda gerçekleşecek değişikliği kodlar ile belirleriz.
Arayüz tasarımımızı yaptık, şimdi kod kısmına geçiyoruz. Formun hemen üzerinde iki sekme bulunur. “Form1.cs*” sekmesine geçiş yaptığınızda bir takım kod satırları sizi karşılayacak.
Kod kısmında işe kodun en üstündeki kütüphaneler kısmına “using System.IO.Ports;” kod satırını ekleyerek başlıyorum. Bu sayede seri haberleşme için gerekli olan IO.Ports kütüphanesini projeme dahil etmiş oldum.
Kodumuzda Kütüphanelerin Yer Aldığı Kısım
Form1_Load alanına seri portları string tipinde bir diziye tanımlayan, ardından da bu portları comboBox1 nesneme ekleyen bir kod yazdım. Bu sayede form yüklendiğinde seri portlar comboBox1 içinde seçilebilir hale gelmiş olacak.
Bundan sonra nesnelerim üzerindeki olaylar sonucu gerçekleşecek kodları yazmam gerekiyor. Butona tıkladığımda gerçekleşecek değişiklikleri yazarak başlıyorum. Tasarım sekmesine gelerek nesnelere çift tıkladığınızda otomatik olarak kod bölümüne gelirsiniz. Burada açılan alanda yazdığımız değişiklikler butona tıkladığımızda gerçekleşecek.
Hatırlarsanız ledi Arduino seri port ekranı üzerinden “1” ve “0” gönderek kontrol etmiştik. Bu sefer “1” ve “0” gönderme işleminin butonlara tıkladığımda gerçekleşmesini istiyorum. button1_Click alanına “serialPortWrite(“1″);” kod satırını ekliyorum. Bu sayede Button1’e tıkladığımızda seri port üzerinden Arduino’ya “1” göndermiş olacağız. Butona tıklanıldığında diğer butonu pasif hale getiren ve label1’e “Led Açık” yazdıran kodlarımı da ekliyorum. Aynı işlemlerin tersini button2_click için uyguluyorum.
ComboBox1‘de seçtiğimiz portu serialPort1’in port ismine atıyoruz. Ardından da seri portu açacak kodumuzu ekliyoruz.
comboBox” kod alanı
Son olarak da formu kapattığımızda seri portun da kapanması için gereken kod satırını ekliyorum.
Kodumuzun son hali aşağıdaki gibi oluyor. “Başlat” butonuna tıklayarak kodumuzu çalıştırıyoruz.
comboBox1.Items.Add(port); //Seri portları comBox1' ekleme
serialPort1.Write("1");    //Seri porta "1" gönder
label1.Text = "Led Açık";  //Label1'e "Led Açık" yaz
button2.Enabled = true;    //Button2'yi tıklanabilir hale getir
button1.Enabled = false;   //Button1'i tıklanamaz hale getir
serialPort1.Write("0");    //Seri porta "0" gönder
label1.Text = "Led Kapalı";//Label1'e "Led Kapalı" yaz
button1.Enabled = true;    //Button1'i tıklanabilir hale getir
button2.Enabled = false;   //Button2'yi tıklanamaz hale getir
serialPort1.PortName = comboBox1.SelectedItem.ToString(); //comboBox1'de seçili olan portu port ismine ata
serialPort1.Open(); //Seri portu aç
if (serialPort1.IsOpen) serialPort1.Close();  //Eğer port açıksa kapat
Artık ledimizi kendi tasarladığımız arayüz üstünden kontrol edebiliyoruz. Bu yazının sonuna geldik. Serinin devamındaki yazılarda da farklı projeleri tasarladığımız arayüzler üzerinden kontrol etmeye devam edeceğiz. Form üstünde yapabileceğimiz farklı geliştirmeleri öğrenerek projelerimizi çok daha keyifli bir hale getirmeye çalışacağız. Sizlerin de bu seri hakkındaki düşüncelerinizi yorumlarda bekliyoruz. Bir sonraki yazıda görüşünceye dek, hoşça kalın. 🙂
Önceki YazıArduino İle Hareket (PIR) Sensörü Kullanımı – Hırsız Alarmı Yap!
Sonraki YazıArduino ve C# ile Veri Okuma ve Kaydetme – 2. Ders
Arduino Türk Batu 17 Mayıs 2019 at 21:35