Arduino & C# - Seri Haberleşme İle Servo Motor ve DC Motor Dönderme - Elektrik Elektronik Projeleri

Post Top Ad

4 Mart 2015 Çarşamba

Arduino & C# - Seri Haberleşme İle Servo Motor ve DC Motor Dönderme

Bu projede Arduino ve bilgisayar arasında seri haberleşme bağlantısı kuracağız. Bu bağlantı ile bilgisayardan servo motor ve DC motoru birlikte kontrol edeceğiz.
Proje Devresi: 
Devrede DC motoru bir transistör ile sürmekteyiz. Servo motorumuzu ise arduinoya doğrudan bağladık.

Projenin Kaynak Kodu:
#include <Servo.h>

Servo servoMotor;
int servoPin=3;
int dcMotor = 6;
int gelenVeri=0;
int hiz;
int aci;
int k;

void setup(){
  Serial.begin(9600);
  servoMotor.attach(servoPin);
}

void loop(){
  if(Serial.available() >0)
  {
    gelenVeri = Serial.read();
    if(gelenVeri>0){
      k=gelenVeri;
    }
  }
 
  if(k>=200 && k<=250){
    hiz= map(k, 200, 250, 0, 225);
    analogWrite(dcMotor, hiz);
  }
  else if (k>=0 && k<=180){
    aci=k;
    servoMotor.write(aci);
  }
}         

C# Uygulaması:
Yazdığımız bu basit arayüz ile tracbar değerlerini arduinoya seri haberleşme ile göndermekteyiz. Burada verilerimiz nümerik veri (sayı) olduğundan, verileri byte’a çevirip göndermekteyiz.
  • 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 DCveServoMotor
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            trackBar1.Enabled = false;
            trackBar2.Enabled = false;
            label9.Text = "0";
            label10.Text = "%0";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort1.PortName = textBox1.Text;
                serialPort1.BaudRate = 9600;
                serialPort1.Open();
                if (serialPort1.IsOpen)
                {
                    trackBar1.Enabled = true;
                    trackBar2.Enabled = true;
                    label8.Text = "Porta Bağlanıldı";
                }
            }
            catch
            {
                label8.Text = "Porta Bağlanılamadı";
            }
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen == true)
            {
                int tr1Deger = trackBar1.Value;
                byte[] b1 = BitConverter.GetBytes(tr1Deger);
                serialPort1.Write(b1, 0, 4);
                label9.Text = Convert.ToString(trackBar1.Value - 90);
            }
        }

        private void trackBar2_Scroll(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen == true)
            {
                int tr2Deger = trackBar2.Value;
                byte[] b2 = BitConverter.GetBytes(tr2Deger);
                serialPort1.Write(b2, 0, 4);
                label10.Text = "%" + Convert.ToString((trackBar2.Value - 200) * 2);
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                byte[] b3 = BitConverter.GetBytes(90);
                serialPort1.Write(b3, 0, 4);
                byte[] b4 = BitConverter.GetBytes(200);
                serialPort1.Write(b4, 0, 4);

                serialPort1.Close();
            }
        }
    }

}

Proje dosyalarını indirmek için tıklayınız...

5 yorum:

  1. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  2. Bilgisayardan arduinoya bağlanırken usb ile mi yoksa rs232 usb conventer mı kullandınız?

    YanıtlaSil
  3. Arkadaşlar bu C# programına hareket kaydedici butonu ekleyebilecek arkadaş varmı.Bende 5 servolu program var ama hareketi kaydetme butonu yok.

    YanıtlaSil
  4. Arkadaşlar bu C# programına hareket kaydedici butonu ekleyebilecek arkadaş varmı.Bende 5 servolu program var ama hareketi kaydetme butonu yok.

    YanıtlaSil

Post Top Ad