Arduino & C# - Seri Haberleşme İle Led Yakma Söndürme - Elektrik Elektronik Projeleri

Post Top Ad

2 Aralık 2014 Salı

Arduino & C# - Seri Haberleşme İle Led Yakma Söndürme

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 = 13;
int gelenVeri;

void setup() {             
  pinMode(led, OUTPUT);
  Serial.begin(9600); 
}

void loop() {
  if(Serial.available()){
    gelenVeri=Serial.read();
    if(gelenVeri=='1'){
      digitalWrite(led, HIGH);
    }
    else if (gelenVeri=='0'){
      digitalWrite(led, LOW);
    }
  }
}

C# Uygulaması:

  • Programın tasarımı:
Forma ekleyeceğimiz nesneler yukarıda resimde görülmektedir.
  • Programın Kodu:

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 SeriHaberlemeIleLedYakma
{
    public partial class Form1 : Form
    {
        bool ledDurum = false;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            yakButton.Enabled = false;
            sondurButton.Enabled = false;
            baglanButton.Enabled = false;
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            comboBox1.Text = comboBox1.SelectedText;
            baglanButton.Enabled = true;
        }

        private void baglanButton_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort1.PortName = comboBox1.Text;
                serialPort1.BaudRate = 9600;
                serialPort1.Open();

                if (serialPort1.IsOpen)
                {
                    label1.Text = "Porta Bağlanıldı";

                    if (ledDurum == false)
                    {
                        yakButton.Enabled = true;
                    }
                    else {
                        sondurButton.Enabled = true;
                    }
                }
            }
            catch
            {
                label1.Text = "Porta Bağlanılamadı";
                serialPort1.Close();
                yakButton.Enabled = false;
                sondurButton.Enabled = false;
            }
        }

        private void yakButton_Click(object sender, EventArgs e)
        {
            serialPort1.Write("1");
            sondurButton.Enabled = true;
            yakButton.Enabled = false;
            ledDurum = true;
        }

        private void sondurButton_Click(object sender, EventArgs e)
        {
            serialPort1.Write("0");
            yakButton.Enabled = true;
            sondurButton.Enabled = false;
            ledDurum = false;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPort1.IsOpen) {
                serialPort1.Write("0");
                serialPort1.Close();
            }
        }
    }
}

9 yorum:

  1. Tesekkurler paylasım icin , elinize saglık.

    C# programında comboBox 1 de ilk olarak port tipinin ne oldugu tanıtılması gerekli

    YanıtlaSil
  2. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  3. bir şey sorabilir miyimmmm

    YanıtlaSil
  4. İKİ PROJEYİ CALIŞTIRMA İMKANIMIZ VARMI İNT KAYNAK BULAMADIM

    YanıtlaSil
  5. İlk önce merhaba ve elinize sağlik harika olmuş ve bisey sorabilirmiyim . ben 11.sinif otomasyon ögrencisiyim ve Bilgisayar kontrol dersinde performans icin Led ilgili proje ve http://oguzhanyesilyurt.blogspot.com.tr/2015/12/arduino-ornekleri-3-switch-case-komutu.html burdski devreye yapcamda burdaki C# kodlarini kullansam çalisirmi yada fazla ledle karaşimsek yaparmisiniz rica etsem

    YanıtlaSil
    Yanıtlar
    1. kodları bahsettiğiniz projede denemeden bilemeyiz. Şu aralar işlerimin yoğunluğundan blogdaki yorumlara bile zamanında cevap veremiyorum. Kusura bakmayın. internette bu konuyla alakalı uygulamalar bulabilirsiniz. Onlara bi bakmanızı tavsiye ederim.

      Sil

Post Top Ad