Arduino & C# Haberleşmesi ve Led Yakma

Bu yazımda Arduino ile C# seri haberleşmesini gerçekleştireceğiz ve hazır seri haberleşmeyi gerçekleştirmişken de bir led yakıp söndüreceğiz.

C# arayüzünde LED’i yakıp söndürmek için iki buton, durum bilgisi için bir label ve görsellik için bir de picturebox kullandık.

Şimdi kod kısmına bakalım. Öncelikle Arduino seri haberleşmeyi sağlamak için kütüphanemize port ile ilgili kütüphanemizi ekliyoruz.

using System.IO.Ports;

Ardından “public partial class Form1 : Form” alanına Led durum ve SeriPort’u tanıtıyoruz.

bool LEDdurumu = false;
SerialPort seriPort;

public Form1() alanına SeriPort’u ekleyip, bilgisayarımızda bağlı olan port ismini ve hızını giriyoruz.

InitializeComponent();
seriPort = new SerialPort();
seriPort.PortName = "COM3";
seriPort.BaudRate = 9600;
seriPort.Open();

Görsellik açısından form yüklendiğinde label nesnesinin görünürlüğünü kapatıyoruz.

labelleddurum.Visible = false;

Form kapandığı anda seri portu kapatan kodumuzu Form1_FormClosing alanına yazıyoruz.

if (seriPort.IsOpen) seriPort.Close();

Led’i yak butonuna tıkladığımızda Led’in yanmasını ve diğer işlemleri gerçekleştirmesini sağlayan kodları aşağıda sıraladık. Seri Port’a 1 yazdırarak Led’i yakıyoruz. Label nesnesini aktif ediyoruz. Label nesnesine led yanınca bununla ilgili mesajı yazdırıyoruz. Led’i Yak butonunu devre dışı bırakarak Led’i Söndür butonunu aktif ediyoruz. Led durumu doğru yani Led yanıyor. Görsellik açısından picturebox nesnesine bir yeşil bir de gri icon ekleyerek real-time olarak Led’in yanıp yanmama durumu ekranımızdan da görebiliyoruz. Bunun için örnekte de olduğu gibi Image.File kodunu kullandım, iki iconu da .png uzantısı olarak projenin bulunduğu dosyaya ekleyerek dosya yolunu gösterdim. Yeşil olan görsel aktif oluyor.

seriPort.Write("1");
labelleddurum.Visible = true;
labelleddurum.Text = "LED Yanıyor...";
buttonyak.Enabled = false;
buttonsondur.Enabled = true;
LEDdurumu = true;
pictureBoxled.Image = Image.FromFile("C:/Users/fvarli/Documents/Visual Studio 2015/Projects/ArduinoLedYakma/ArduinoLedYakma/bin/yesil.png");

Led’i söndür butonuna tıkladığımızda Led’in sönmesini ve diğer işlemleri gerçekleştirmesini sağlayan kodları aşağıda sıraladık. Seri Port’a 0 yazdırarak Led’i söndürüyoruz. Label nesnesini aktif ediyoruz. Aslında az önce Led’i yakarken aktif etmiştik, pek de gerek yok buna. Label nesnesine led sönünce bununla ilgili mesajı yazdırıyoruz. Led’i Söndür butonunu devre dışı bırakarak Led’i Yak butonunu aktif ediyoruz. Led durumu yanlış yani Led yanmıyor. Image.File kodunu kullanarak gri olan görseli aktif ediyoruz.

seriPort.Write("0");
labelleddurum.Visible = true;
labelleddurum.Text = "LED Söndü...";
buttonyak.Enabled = true;
buttonsondur.Enabled = false;
LEDdurumu = false;
pictureBoxled.Image = Image.FromFile("C:/Users/fvarli/Documents/Visual Studio 2015/Projects/ArduinoLedYakma/ArduinoLedYakma/bin/gri.png");

Şimdi de Arduino kodlarımıza gelelim.

void setup alanında pin çıkışını 8 olarak belirledim.

pinMode(8, OUTPUT);
Serial.begin(9600);

void loop alanında, seri bağlantı mevcut ve 1 olarak okursa pin çıkış 8’i Hıgh yap, değilse LOW yap kodlarımızı aşağıdaki gibi yazıyoruz.

if(Serial.available())
{
int a=Serial.read();
if(a=='1')
{
digitalWrite(8,HIGH);
}
else if(a=='0')
{
digitalWrite(8,LOW);
}
}

Son olarak Arduino Mega ile yaptığımız uygulamanın devre bağlantı şemasını Fritzing programında çizelim.

Programın Çalışması

Posted in Arduino, C#, Genel and tagged , .

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir