Unity'den Arduino nasıl kontrol edilir?

Maraza25

Hectopat
Katılım
21 Ekim 2020
Mesajlar
189
Çözümler
1
Daha fazla  
Sistem Özellikleri
Asus ROG Strix G15
Cinsiyet
Erkek
Meslek
Öğrenci
Merhaba ben Unity üzerinden gönderdiğim int değerinin Arduino'da bir servo motoru kontrol etmesini istiyorum nasıl yapabilirim?

Bana sürekli olarak 0 ile 180 arasında int değeri geliyor bende bunu 0, 5sn aralıklarla Arduino'ya göndermek istiyorum ve oradan bir servo motorun açısını değiştirmek istiyorum.

Mümkünse hem Unity kodunu hem de Arduino kodunu örnekleyebilir misiniz?
 
Son düzenleyen: Moderatör:
C#:
using UnityEngine;
using System.IO.Ports;
public class ControlServo : MonoBehaviour {
    SerialPort sp;
    float next_time;
 
    //0 ile 180 arası gelen değer.
    int servo_degree;
 
    void Start () {
        string the_com="";
        next_time = Time.time;
    
        foreach (string mysps in SerialPort.GetPortNames())
        {
            print(mysps);
            if (mysps != "COM1") { the_com = mysps; break; }
        }
        sp = new SerialPort("\\\\.\\" + the_com, 9600);
        if (!sp.IsOpen)
        {
            print(the_com + ", 9600 bps" + " bağlanılıyor");
            sp.Open();
            sp.ReadTimeout = 100;
            sp.Handshake = Handshake.None;
            if (sp.IsOpen) { print("Serial Port açık"); }
        }
    }
    // Update is called once per frame
    void Update() {
        if (Time.time > next_time) {
            if (!sp.IsOpen)
            {
                sp.Open();
                print("Serial Port açık");
            }
            if (sp.IsOpen)
            {
                print("Gönderiliyor: " + servo_degree);
                sp.Write(servo_degree.ToString());
            }
            next_time = Time.time + 0.5;
        }
    }
}
C++:
#include <Servo.h>

int val;
Servo myServo;

void setup() {
     Serial.begin(9600);
     myServo.attach(9); // Servonun bağlı olduğu pin
}
void loop() {
    if (Serial.available() > 0) {
        val = Serial.read();
        myServo.write(val)
    }
    delay(500);
}
Bu şekilde deneyin hocam.
 
Son düzenleme:
Hocam yarın deicem kodunuzu ama buna benzer bir jod yazdığıda ard arda veri gönderdiğimde tıkanıyordu umarı bunda takılmaz teşekkür ederim
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…