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 yorumdownload etmek için link verebilir misiniz
ReplyYazının sonunda link verdim. İyi Çalışmalar
Replyteşekkür ederim güzel çalışma olmuş.
Replyteşekkürler yaptım oldu:)
ReplyElinize, emeğinize sağlık.İyi çalışmalar
ReplyTeşekkürler.. İyi çalışmalar.
ReplyÖ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ş.
ReplyMü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.
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
ReplyUygulama 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.
Linkler çok işime yaradı. Çok çok teşekkür ederim. :)
ReplyRica Ederim. Kolay Gelsin :)
ReplySizden 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.
ReplyGüldürdün beni Salih :) Herkes kullanabildi sen kullanamamışsın belli ki :)
ReplyBak Kullanıp youtube video atanlar bile var. Alakası Var bence :)
https://www.youtube.com/watch?v=DSWdyzQsOa4
"https://www.youtube.com/watch?v=DSWdyzQsOa4"
ReplyLinkteki emotion ı okuyor youtube da "C# ile Arduino Led - Röle Kontrolü" diye ara karşına çıkar..
Replybenim 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... :)
ReplySerialPort1 dedidiginiz sey tam olarak nedir bende o bolumde hata alıyorum
Replybaglantı şemalarini atarmisiniz
Reply1, 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ü?
Replymerhaba 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
Replyc# dosyasını paylaşma şansınız var mı ? her şeyi denedim bir türlü yapamadım. dosyayı paylaşırsanız çok sevinirim
ReplyConversionConversion EmoticonEmoticon