Bu uygulama da Visual Studio programında hazırladığımız arayüzdeki butonlar ile Arduino nun 13. pinine bağlı ledi kontrol edeceğiz ve ledin durumunu da textbox a yazacağız.
Öncelikle Visual Studio programını açıyoruz. Karşımıza çıkan Start Page ekranında Start bölmesinden New Project i seçiyoruz. Windows Form Application ı seçip hedef klasör seçerek projeyi açıyoruz. Arayüz olarak diğer arayüz tasarım programlarına benziyor. Toolbox menüsü altından seri haberleşme için kullanılan Serial Port kontrolünü seçiyoruz.(Toolbox menüsü altındaki elemanlar genellikle kontrol olarak isimlendirilir (Buton kontrolü,Textbox kontrolü gibi).
Bu kontrol Visual Studio tarafından hazırlanmış, seri haberleşme için büyük kolaylık sağlayan bir kontroldür. Kontrolü sürükle bırak ile forma bıraktıktan sonra form da değil formun alt kısmında görünecektir. Yani proje çalıştırıldığında form da görünmeyecektir.
Uygulamadaki amacımız 2 buton kullanarak led kontrolü yapmak. Bu temel bir uygulamadır, ancak bu mantığı bilirseniz arayüzde herhangi bir kontrol ile her işlemi arduino da gerçeleştirebilirsiniz. Visual Studio da her kontrolün sağ kısımda Properties sekmesi vardır. Serial Port a tıklayıp Properties ini açarak bu kontrolün bazı özelliklerini değiştireceğiz. Bu kısımda 2 önemli ayar vardır. BaudRate ve Portname kısımları Arduino programındaki ile aynı olmalıdır. Diğer ayarlara dokunmanıza gerek yoktur.
Uygulama diğer elemanları ekleyerek devam ediyoruz. 2 tane Buton, 1 Label, 1 tane de Textbox ekliyoruz. Görsellik için butonların ve label ın Text ve BackColor özelliklerini değiştiriyoruz.Visual Studio da yaptığımız form tasarımı ve programın kod penceresini açınca gelen ilk kod aşağıda verilmiştir. Biz bu kod parçasına birkaç ekleme yaparak kodu tamamlayacağız.
Arduino üzerindeki ledi kullanacağımız için bir devre şemasına ihtiyaç yoktur. Aşağıda arduino ve visual studio kodlarını görebilirsiniz.
VISUAL STUDIO KODLARI
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace arduino_led_kontrol { public partial class Form1 : Form { public Form1() { InitializeComponent(); serialPort1.Open(); // Seri port açılıyor } private void button1_Click(object sender, EventArgs e) { serialPort1.Write("a"); // seri porta a karakterini yaz textBox1.Text = "Led yandı"; // Textbox1 in Text (yani içinde yazan ifade) yi led yandı yap } private void button2_Click(object sender, EventArgs e) { serialPort1.Write("b"); // seri porta b karakterini yaz textBox1.Text="Led söndü"; // Textbox1 in Text (yani içinde yazan ifade) yi led söndü yap } } }
ARDUINO KODLARI
char veri=0; void setup() { pinMode(13,OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available()){ // Seri haberleşme varsa veri=Serial.read(); // Haberleşmeden gelen bilgiyi veri değişkenine ata if (veri=='a'){ // Gelen veri a karakteri ise digitalWrite(13,1); // Ledi yak } else{ // Gelen veri a değilse digitalWrite(13,0); // Ledi söndür } } }