Bu yazımda C# ile oluşturduğumuz arayüz ile Arduino'nun dijital çıkışlarına hükmetmeyi öğreneceğiz. Uygulamamız 2 aşamadan oluşmakta. Önce Arduino'ya yükleyeceğimiz programda hangi çıkışımızı yani ledi AÇIK ve KAPALI duruma getirecek datayı belirleyeceğiz. Daha sonra da C# arayüzünden önce Port'lara bağlanmayı ve butonlara bastığımızda hangi datayı göndereceğimizi kararlaştıracağız.
C# ile ilgilenmenizi öneririm çünkü her defasında LCD bağlamak veya Serial Monitör kullanamayacağımız projeler olabilir. Tüm verileri tek arayüz üzerinden göndermek veya almak zorunda kalabilirsiniz. İnternet üzerinden C# üzerine projeleri veya arayüzü öğrenmeniz size fayda sağlar. Lafı fazla uzatmadan önce Arduino kodlarımızı vermek istiyorum;
int led = 13; // Arduino üzerinde ki Led i kullanacağız
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
if(Serial.available()) //Eğer seri haberleşme açık olursa alttaki komutlar işleyecek.
{int a=Serial.read(); //Seri haberleşme ile okunan verimize a integer değerini verdik.
if(a=='1')
{ digitalWrite(led, HIGH);} // a, 1 olursa yanacak.
else if (a == '0') // a, 0 olursa sönecek.
{digitalWrite(led, LOW);}
}
}
Amacımız önce programı yüklemiş olduğumuz Arduino'nun portuna, C# da yazacağımız arayüz ile bağlanarak LED YAK ve LED SÖNDÜR komutlarını kullanmak.
C# komutlarımız ;
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;
using System.IO.Ports;
namespace ArduinoSerial
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
serialPort1.PortName = comboBox1.Text;
serialPort1.Open();
}
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DataSource = SerialPort.GetPortNames();
}
private void button2_Click(object sender, EventArgs e)
{
serialPort1.Write("0");
label1.Text = "LED KAPALI";
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.Write("1");
label1.Text = "LED AÇIK";
}
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
}
}
}
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;
using System.IO.Ports;
namespace ArduinoSerial
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
serialPort1.PortName = comboBox1.Text;
serialPort1.Open();
}
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DataSource = SerialPort.GetPortNames();
}
private void button2_Click(object sender, EventArgs e)
{
serialPort1.Write("0");
label1.Text = "LED KAPALI";
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.Write("1");
label1.Text = "LED AÇIK";
}
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
}
}
}
Programın çalışabilmesi için Bilgisayarınızda Framework yüklü olması gerekmektedir.
Hiç yorum yok:
Yorum Gönder