Proje
Devresi:
Devrede DC
motoru bir transistör ile sürmekteyiz. Servo motorumuzu ise arduinoya doğrudan
bağladık.
Projenin Kaynak Kodu:
C# Uygulaması:
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);
}
}
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();
}
}
}
}
Bu yorum yazar tarafından silindi.
YanıtlaSilBilgisayardan arduinoya bağlanırken usb ile mi yoksa rs232 usb conventer mı kullandınız?
YanıtlaSilarduino USB ile bilgisayara bağlanmıştır.
SilArkadaşlar bu C# programına hareket kaydedici butonu ekleyebilecek arkadaş varmı.Bende 5 servolu program var ama hareketi kaydetme butonu yok.
YanıtlaSilArkadaşlar bu C# programına hareket kaydedici butonu ekleyebilecek arkadaş varmı.Bende 5 servolu program var ama hareketi kaydetme butonu yok.
YanıtlaSil