Arduino ve C# Seri Haberleşme Servo Motor ve DC Motor Kontrolü

Arduino ve C# seri haberleşme ile servo motor ve DC motor kontrolü yaptığımız bu içeriğimiz ile, windows form oluşturmayı. genel kullanım bir transistör ile DC motor kontrolünü, servo motor kontrolünü öğreneceksiniz.

Eğer daha önce windows form ile bir proje yapmadıysanız öncelik buradaki yazımıza bakmanızı öneriyoruz.

Bağlantı Şeması

Arduino ve C# Seri Haberleşme Servo Motor ve DC Motor Kontrolü C# Seri Haberleşme,arduino ve C# Seri Haberleşme

Arduino 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);
  }
}         

Windows Form Kodu

Bu form ile, trackBar üzerinde oluşan değere göre servo motorun açısını veya DC motorun dönüş hızını kontrol edebiliyoruz. Oluşan değer int olduğu için öncelikle bu int değerini byte‘a çeviriyoruz, ardından seri haberleşme ile Arduino geliştirme kartına gönderiyoruz.

Arduino ve C# Seri Haberleşme Servo Motor ve DC Motor Kontrolü C# Seri Haberleşme,arduino ve C# Seri Haberleşme

Forma eklemeniz gereken nesneler:

  • label x 3
  • trackBar x 2
  • serialPort x 1
  • button x 1
  • textBox x 1

Eğer kodu projenize eklemekte zorluk yaşıyorsanız buradan hazır proje dosyalarını indirebilirsiniz.

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();
            }
        }
    }

}

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.