C# ile Arduino Led - Röle Kontrolü


Herkese merhabalar. C# - Arduino uygulamalarının başlangıcı olarak tıpkı Arduino basit led uygulamaları gibi C# üzerinden Arduino'da led yada geniş kapsamda başka cihazları kontrol eden rölelerin kontrolünü ele alacağız. Öncelikle Bunun için C# da hazırladığımız Kontrol arayüzünü açıklayalım.


Yukarıda C# arayüzümüzün görüntüsü var. Yapmak istediğimiz şey 4 farklı ledin veya başka cihazların kullanımını kontrol etmek için gerekli rölelerin bilgisayar üzerinden kontrol edilmesidir. Bu amaçla hazırladığımız arayüzde 4 farklı ON-OFF butonu var. Serial üzerinden Arduinoya bağlanarak bu 4 butun ola farklı led/röleleri kontrol ediyoruz. Programın kodlarını paylaşmadan önce kısaca şunu belirtmek isterim. Görsellik açısından ON-OFF butonları resim olarak yüklenmiştir. Kodların geneli buna göredir. Fakat sizler basit olarak "button" ekleyerek de bu işlemleri yaptırabilirsiniz. Kodları açıklayacağım zaten..


using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ON_OFF // Uygulamamızın Adı
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent(); 
        }

       /* 
       Aşağıdaki kod dizisinde yaptığımız resimlere tıklandığında serial üzerinden ilgili buton resmi için ilgili arduino                pinini tetikleyecek bir String değer göndermek. Aynı zamanda görsellik için her resme tıkladığımızda resimin                    değişip off yada on resminin açılması. Bunuda picture.Box ların görünürlüğünü kontrol eden "visible" özelliği ile            yaptık.Aşağıdaki "pictureBox1_Click" kısmında Serialden String "1" verisi göndererek 1 nolu ledin yanması                      sağlanacaktır.
       */

        private void pictureBox1_Click(object sender, EventArgs e) 
        {
            pictureBox1.Visible = false;
            pictureBox2.Visible = true;
            serialPort1.Write("1");            
        }

        /*
            Aşağıdaki "pictureBox2" ise ilk butonun ON resmidir.  "pictureBox2_Click" ile arduinodaki ilk lede string            "2" gönderilerek ledin kapanması sağlanır. Yine bu tıklama işlemi ile resim değişerek ilk resim OFF ortaya çıkarak             ON resmi kaybolur.   */

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            pictureBox1.Visible = true;
            pictureBox2.Visible = false;
            serialPort1.Write("2");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < System.IO.Ports.SerialPort.GetPortNames().Length; i++)
            {
                comboBox1.Items.Add(System.IO.Ports.SerialPort.GetPortNames()[i]);
            }
        }

        private void pictureBox3_Click(object sender, EventArgs e)
        {
            pictureBox3.Visible = false;
            pictureBox4.Visible = true;
            serialPort1.Write("3");
        }

        private void pictureBox4_Click(object sender, EventArgs e)
        {
            pictureBox3.Visible = true;
            pictureBox4.Visible = false;
            serialPort1.Write("4");
        }

        private void pictureBox6_Click(object sender, EventArgs e)
        {
            pictureBox5.Visible = true;
            pictureBox6.Visible = false;
            serialPort1.Write("6");
        }

        private void pictureBox5_Click(object sender, EventArgs e)
        {
            
            pictureBox5.Visible = false;
            pictureBox6.Visible = true;
            serialPort1.Write("5");
        }

        private void pictureBox7_Click(object sender, EventArgs e)
        {
            pictureBox7.Visible = false;
            pictureBox8.Visible = true;
            serialPort1.Write("7");
        }

        private void pictureBox8_Click(object sender, EventArgs e)
        {
            pictureBox7.Visible = true;
            pictureBox8.Visible = false;
            serialPort1.Write("8");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = comboBox1.Text;
            label6.Text = "Arduino'ya Bağlandı (" + comboBox1.Text + ")";
            serialPort1.Open();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            label6.Text = "COM Port Seç !";
            serialPort1.Close();
        }
       
    }
}

Gönderilen verilere karşılık arduinodaki kodlar da şu şekilde olacaktır.

int gelen;
int Led1=4;
int Led2=5;
int Led3=6;
int Led4=7;

void setup() {

Serial.begin(9600);
pinMode(Led1,OUTPUT);
pinMode(Led2,OUTPUT);
pinMode(Led3,OUTPUT);
pinMode(Led4,OUTPUT);
}
void loop() 
{
  if(Serial.available() >0) // Serial haberleşmenin aktif olup olmadığının kontrolü
    { 
      gelen = Serial.read(); // Serialden gelen veri "gelen" değişkenine yazılır
      if(gelen == '1')  // Gelen verilerin kontrolü yapılarak ilgili ledler yakılır.
      {
        digitalWrite(Led1,HIGH);
      }
      if(gelen == '2')
      {
        digitalWrite(Led1,LOW);
      }
      if(gelen == '3')
      {
        digitalWrite(Led2,HIGH);
      }
      if(gelen == '4')
      {
        digitalWrite(Led2,LOW);
      }
      if(gelen == '5')
      {
        digitalWrite(Led3,HIGH);
      }
      if(gelen == '6')
      {
        digitalWrite(Led3,LOW);
      }
      if(gelen == '7')
      {
        digitalWrite(Led4,HIGH);
      }
      if(gelen == '8')
      {
        digitalWrite(Led4,LOW);
      }
    }
}
C# uygulamanızı kendi arzunuza göre şekillendirip görselleştirebilirsiniz. Yada basit olarak buton koyup da yapabilirsiniz.
İsteyen arkadaşlar için arayüzü paylaşıyorum.
Buradan indirebilirsiniz : C# Led/Röle Kontrol Arayüzü

20 yorum

Click here for yorum
Adsız
admin
Mart 17, 2015 ×

download etmek için link verebilir misiniz

Reply
avatar
mvaslan
admin
Mart 17, 2015 ×

Yazının sonunda link verdim. İyi Çalışmalar

Reply
avatar
Adsız
admin
Temmuz 20, 2015 ×

teşekkür ederim güzel çalışma olmuş.

Reply
avatar
Unknown
admin
Ekim 06, 2015 ×

teşekkürler yaptım oldu:)

Reply
avatar
ibrahim
admin
Kasım 27, 2015 ×

Elinize, emeğinize sağlık.İyi çalışmalar

Reply
avatar
mvaslan
admin
Kasım 27, 2015 ×

Teşekkürler.. İyi çalışmalar.

Reply
avatar
Ocak 11, 2017 ×

Öncelikle çalışmalarınız için çok teşekkür ederim. Program gayet güzel çalışıyor. Emeğinize sağlık. Görsel olarak buton şekilleri çok güzel olmuş.
Müsadeniz olursa bu buton görüntüsünü uygulamalarımda kullanmak istiyorum. bunun kaynak dosyalarını paylaşır mısınız. ? Sonuçta emek verdiniz, paylaşmak istemezseniz saygı duyarım.paylaşmak isterseniz muratcinar07@gmail.com adresine yollayabilirseniz çok sevinirim. iyi çalışmalar.

Reply
avatar
mvaslan
admin
Ocak 12, 2017 ×

Merhaba. Teşekkürler öncelikle. Program içerisindeki butonları ben tasarlamadım internetten buldum. Şu adresteki görsel : http://www.missyuan.net/uploads/allimg/130325/19305VW5-11.jpg

Uygulama içinde bu tarz görseller kullanmak güzel oluyor. İnternette ; User Interface "UI" Design şeklinde aratırsanız çokça güzel görsele ulaşabilirsiniz. Direk nesne araması için "Button Vector" "switch vector" şeklinde de arama yapabilirsiniz. Kolay gelsin.

Reply
avatar
Ocak 12, 2017 ×

Linkler çok işime yaradı. Çok çok teşekkür ederim. :)

Reply
avatar
mvaslan
admin
Ocak 14, 2017 ×

Rica Ederim. Kolay Gelsin :)

Reply
avatar
Ocak 15, 2017 ×

Sizden bi ricam olacak. Bu led kontrolünü yaparken ilk başta bu LED'lerin on veya off olduğunu arduniodan okusak, ( onu c Sharp ta görsek, ona göre c sharp ta on off butonlarımız on veya off olarak ilk konumla başlasa . Ve arada haberleşme gönderilen ve alınan veri char tipinde olsa. Bununla ilgili bir örnek oluşturabilir misiniz? Ben arduniodan okuduğum ve serial.write ('a'); ile gönderdiğim bilgiyi c den bi türlü okuyamadım.

Reply
avatar
mvaslan
admin
Mart 26, 2017 ×

Güldürdün beni Salih :) Herkes kullanabildi sen kullanamamışsın belli ki :)
Bak Kullanıp youtube video atanlar bile var. Alakası Var bence :)

https://www.youtube.com/watch?v=DSWdyzQsOa4

Reply
avatar
mvaslan
admin
Mart 26, 2017 ×

"https://www.youtube.com/watch?v=DSWdyzQsOa4"

Reply
avatar
mvaslan
admin
Mart 26, 2017 ×

Linkteki emotion ı okuyor youtube da "C# ile Arduino Led - Röle Kontrolü" diye ara karşına çıkar..

Reply
avatar
Enes
admin
Mayıs 21, 2017 ×

benim yapmak istediğim aslında gönderdiğiniz programa çok yakın öncelikle emeğiniz için teşekkür ederim. ama anlamadığım bir şey var arayüzde herhangi bir değişiklik yapmak için c# programını nasıl değiştirmemiz gerekiyor. yani c# ile ardino yu nasıl bağdaştırıyoruz.programlama noktasında eksiklerim var o yüzden bazı şeyler tam oturmadı bende... :)

Reply
avatar
Ocak 02, 2018 ×

SerialPort1 dedidiginiz sey tam olarak nedir bende o bolumde hata alıyorum

Reply
avatar
Adsız
admin
Mayıs 15, 2018 ×

baglantı şemalarini atarmisiniz

Reply
avatar
Sami Sönmez
admin
Mayıs 16, 2018 ×

1, 2 ve 3 no'lu ledler ayrı olarak yanıp sonmuyor. Sadece 4. led ile işlem yapınca hepsi yanıp sönüyor. Acaba devrede mi bir yanlışlık yapıyorum? Devre semasını paylasmanız mümkün mü?

Reply
avatar
Unknown
admin
Ekim 15, 2020 ×

merhaba arduino bağlanan değişken bir çıkışı görsel şekilde görmek istiyorum örneğin araba ibresi şeklinde bir logo olsun her değiştiğinde ibre artsın istiyorum acaba hangi program ile eklerim bu görseli arduınoya

Reply
avatar
amatoryazar
admin
Ekim 16, 2023 ×

c# dosyasını paylaşma şansınız var mı ? her şeyi denedim bir türlü yapamadım. dosyayı paylaşırsanız çok sevinirim

Reply
avatar