Bu projemizde arduino ile bilgisayarımız arasında seri haberleşme ile veri iletişimi yapacağız. C# ile yazacağımız bir program vasıtasıyla bilgisayardan arduinoya komutlar göndereceğiz.
Proje Devresi:
Seri Haberleşme:
Arduinoyu usb portundan bilgisayarla haberleştirmek mümkündür. Bunun için arduinoyu kodlarken Serial fonksiyonunu kullanacağız.
Serial.begin(); fonksiyonu seri haberleşmeyi başlatmak için kullandığımız fonksiyondur. Parametre olarak girdiğimiz değer ise baud rate (bir diğer ifadeyle anahtarlama hızı) değeridir. Baud rate; veri iletiminde modülatör çıkışında bir saniyede meydana gelen sembol değişikliğidir. Bunu seri haberleşme hızı olarak da düşünebiliriz. Biz projemizde baud rate değerini 9600 olarak aldık.
Serial.avaible(); seri haberleşme portunun açılıp açılmadığını denetleyen fonksiyondur.
Serial.read(); seri porttan gelen veriyi okuyan fonksiyondur.
Projenin Kaynak Kodu:
int led_pin = 13;
void setup() {
pinMode(led_pin, OUTPUT);
Serial.begin(9600); //seri haberlesmeyi baslar.
}
void loop() {
if(Serial.available())
{
char gelen_bilgi = Serial.read();
if(gelen_bilgi == '1')
{
digitalWrite(led_pin, HIGH);
}
else if(gelen_bilgi=='0')
{
digitalWrite(led_pin, LOW);
}
}
delay(100);
}
C# Uygulaması:
Öncelikle programı açtıktan sonra create a new project diyoruz
Projemize isim veriyoruz ve kaydedeceğimiz yeri ayarlıyoruz bu pencerede başka değişikliğe gerek yok
Programın tasarımı
Forma ekleyeceğimiz nesneler yukarıda resimde görülmektedir
Not: Serialport nesnesi aşağıda görülmektedir mutlaka eklenmelidir.
//toolbox’ın arama kısmına serialport yazarak bulabilirsiniz.
Programın Kodu: Bu koduları label kısmına çift tıklayarak yazıyoruz.
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;
using System.IO.Ports;
namespace ardu1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.PortName = "COM4";
serialPort1.BaudRate = 9600;
serialPort1.Open();
button2.Enabled = false;
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.Write("1");
label1.Text = "LED YANDI";
button1.Enabled = false; //butona tıklandıgında pasif ol
button2.Enabled = true; //butona tıklandıgında aktif ol
}
private void button2_Click(object sender, EventArgs e)
{
serialPort1.Write("0");
label1.Text = "LED SONDU";
button1.Enabled = true;
button2.Enabled = false;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen == true)
serialPort1.Close();
}
}
}
Bazı satırları açıklayalım
Yukarıdaki satırda COM4 alanına kendi port numaranızı yazacaksınız.
Yüklenir yüklenmez seri haberleşme başlasın diyoruz
Yüklenir yüklenmez led sönsün butonu(button2) basılamaz durumda olsun istiyoruz çünkü led zaten sönük kıps.
Form 1 kapandığında seri haberleşmeyi (portu) kapat. Böylelikle form kapatıldığında portu da kapatmış oluyoruz. Kendi kendine çalışıp yorulmasın oncağız .
Buraya erişebilmek için properties penceresinde events bölümüne geliyoruz ve
Burada form closing olayına çift tıklıyoruz ve oraya yazıyoruz
Program özet görseli:
kaynak: sende kod yaz