C# ile Arduino Arasında Servo motor Kontrol

Selam Cumleten herkese Kolay gelsın Arkdaslar ben arduino ya yenı basladım C# Bılgım var ama arduıno fazla yok ve Kendımı gelıstırmek amaclı bır proje yapıyorum Robot kol Dıyelım C# ıle bır arayuz hazırladım serı haberlesmede arduınoya komut yollaya bılıyorum ama motor hep ılerı gıdıyor ıstedıgım gıbı olmuyor amacım arayuzde butona basıldıkca motor ılerlesın ben butona bastıgım zaman hep ılerlıyor herkese tesekkurler yardımları ıcın kolay gelsın arduıno tarafı #include <servo.h>

Servo myservo;

int pos = 0;
int message = 0;
void setup()
{
myservo.attach(9);
Serial.begin(9600);
}

void loop()
{
if(Serial.available()>0)
{
message=Serial.read();
Serial.print(message);
if(message==‘k’)
{

}
}

}

c# tarafı
private void btnileri_Click(object sender, EventArgs e)
{
serialPort1.Write(“k”);
}

</servo.h>

led blink robotu yaptınız mı?

hocam ledler uygulamalar yaptım lcd ıle uygulama yatım bıraz kendımı gelıstırmek amaclı boyle bırsey yeltendım ama burda patladım :S

merhaba c# üzerinden arduino ile 2 servonun kontrolünü yapcam.Aşağıdaki gibi kodları oluşturdum ama sorun şu ki herhangi bir trackBar ı hareket ettirdiğimde iki servo da aynı hareket ediyor normalde biri hareket etmeli nerede yanlış yapıyorum arduino kodu include <servo.h>
Servo myservo1;
Servo myservo2;
int pos1 = 0;
int pos2 = 0;
int k1;
int k2;

void setup() {
Serial.begin(9600);
myservo1.attach(9);
myservo2.attach(8);
}

void loop() {
servo1();
servo2();

}
void servo1(){
if(Serial.available() >0)
{
pos1 = Serial.read();
if(pos1>0)
{
k1=pos1;
}
}

myservo1.write(k1);

}

void servo2(){
if(Serial.available() >0)
{
pos2 = Serial.read();
if(pos2>0)
{
k2=pos2;
}
}

myservo2.write(k2);

}

c# kodu
private void button5_Click(object sender, EventArgs e)
{
serialPort1.PortName = “COM3”; // Arduinonun bağlı olduğu port
serialPort1.Open();
label3.Text = “Bağlandı”; // Butona basılınca serial bağlantı gerçekleşir.
}

    private void trackBar1_Scroll(object sender, EventArgs e)
    {
        // serial bağlantı gerçekleşmişse truckbarın değeri serialden integer olarak gönderilir
        if (serialPort1.IsOpen == true)
        {
            int PWM_deger = trackBar1.Value;
            label5.Text = trackBar1.Value.ToString();
            // int değeri byte a dönüştürme işlemi.
            byte[] b = BitConverter.GetBytes(PWM_deger);
            serialPort1.Write(b, 0, 4);
        }
        else // gerçekleşmemişse hata mesajı verir.
        {
            label3.Text = "Önce Cihaza Bağlan !!";
        }
    }

    private void trackBar2_Scroll(object sender, EventArgs e)
    {
        // serial bağlantı gerçekleşmişse truckbarın değeri serialden integer olarak gönderilir
        if (serialPort1.IsOpen == true)
        {
            int PWM_deger_2 = trackBar2.Value;
            label7.Text = trackBar2.Value.ToString();
            // int değeri byte a dönüştürme işlemi.
            byte[] b_2 = BitConverter.GetBytes(PWM_deger_2);
            serialPort1.Write(b_2, 0, 4);
        }
        else // gerçekleşmemişse hata mesajı verir.
        {
            label3.Text = "Önce Cihaza Bağlan !!";
        }
    }</servo.h>

utku if(message==‘k’) { } k=“”; dersen sorun düzelir sanırıım

yns_mkt void servo1(){ if(Serial.available() >0) { pos1 = Serial.read(); if(pos1>0) iki islemdede degiskeni aynı olarak okuyorsun soyle yap c# serial.write yaarken kol1+deger kol2+deger olarak gonder arduinoda if kontrolu ile substring 4 == “kol1” kontrolunu yap sorunun düzelir

Teşekkürler :slight_smile:

önemli değil :slight_smile:

bu sorunu nasıl çözdünüz arkadaşlar daha açıklayıcı olabilir misiniz bende aynı sorunla uğraşıyorum da..

void loop() { if(Serial.available()>0) { message=Serial.read(); Serial.print(message); if(message==‘k’) { bu kısmı tekrar ettiği için sürekli dönüyor.Yukarıda if(message==‘k’) { } k=“”; yazarak hareketi bir kez yapması sağlanmış.