Arduino, Servo ve TouchOSC (iPhone ya da iPad)
  • Merhaba,

    http://karimbaali.com/tutorials/arduinoprocessing/control-servos-with-iphone/

    Su adreste gosterilen islemi gerceklestirmeye calisiyorum. Elimde bir adet Arduino Uno, iki adet servo motor ve TouchOSC calistirabilecegim cihazlar var. Asil niyetim servolari kinect ile kontrol etmekti ama bendeki Kinect USB portlarina baglanmadi ve ben gerekli adaptoru bulamadim. (Kinect AUX deniyor sanirim)

    Su anda kurmak istedigim sistem iPhone uzerinde calistirdigim TouchOSC uzerinde yaratmis oldugum iki adet fader, iki servo motoru kontrol edecek sekilde.

    Yukaridaki linkte detaylica anlatilmis. Su anda elimde breadboard olmadigi icin kod icerisinde 9 ve 10uncu pinler aktif edilmis ben sadece bir motoru 9uncu pine bagliyorum.

    Yarin bir breadboard alip iki motoru da baglayacagim ama sorunun bu oldugunu dusunmuyorum.

    Bunun haricinde yukarida yazan her seyi birebir uyguladim. OSC libraryim yuklu, daha once iPhone, Processing ve Arduino haberlestirerek LED yakip sondurmeyi basarabildim. Servo baglantilari tamam; Sweep ornek kodunu calistirdigimda Servo hareket ediyor.

    Nereyi es geciyor olabilirim?
  • Arduino kodundaki if(Serial.available() > 0){ char message = Serial.read(); 'nin hemen ardına Serial.println(message); yazıp serialdan veri geliyor mu kontrol eder misin? Çalıştırdıktan sonra serial monitoru açıp sliderları hareket ettirerek değişiklik var mı görebilirsin. Sonucuna göre problemin kaynağını bulur ona göre bir şeyler düşünürüz.

    Bir de processing kodunu IDE'de açıp serial monitorden Servo1 ve Servo2 değerleri fadelerdeki değişime göre nasıl değişiyor veya değişiyor mu bakar mısın?

    iPhone'dan bilgisayara veri gitmiyor olabilir, bilgisayardan Arduino'ya gitmiyor olabilir. Yukarıdaki ikisinde de veri görünmüyorsa iPhone'den bilgisayara veri gitmiyor demektir. Ağ ayarlarını düzgün yapman lazım.
  • Cevabiniz icin tesekkur ederim.

    Orijinal gonderideki yorumlarda bahsedilen sira ile (Arduino code, Processing code, TouchOSC sync) seklinde tekrar denedim. Arduino icinde actigim koda, soylediginiz Serial.println(message); satirini ekledim.

    iPhone uzerinden sliderlari oynattigimda hic bir degisiklik olmadi.

    http://i45.tinypic.com/5bry85.png

    Processing kodunu calistirdigimda, surekli renk degistiren bir uygulama basliyor.

    3. paragrafta bahsettigini IDE'de acma kavramini bilmiyorum. Nasil yapabilirim?

    Bu arada, Ableton kullanarak canli performanslarim esnasinda sikca TouchOSC kurulumu yapiyorum, TouchOSC ile Mac birbirlerini goruyorlar, rahatca template transferi yapiyorlar.

    Anlamadigim noktalardan birisi de, Arduino kodunu cihaza yukledikten sonra Processingi acmadan once Arduinoyu kapamali miyim, acik mi birakmaliyim?
  • Açılan Arduino serial monitorun sağ alt köşesindeki baudratenin 9600 olması lazım. 9600 yapsan da bir şey görülmez gerçi; Arduino'ya veri gelmiyor.

    Problem ya iPhone tarafında ya da processing tarafında. myRemoteLocation = new NetAddress("169.254.180.77",9000); Buradaki IP'nin böyle kalmaması gerekiyor. Kendi IP'n olacak şekilde ayarladın mı?

    IDE'de açmak dediğim Processingin programlama ortamında açmayı kastetmiştim, zaten öyle yapmışsın. Arka plan renginin sürekli değişmesinin sebebi background(random(255), random(255), random(255)); satırı, önemli değil, işlevi yok zaten. IP'lerde bir sıkıntı olmadığına, bağlantı kurulduğuna emin misin? Bilgisayarının IP'sini yazdın değil mi?

    Bir de Processing kodunda String addr = theOscMessage.addrPattern(); 'nin hemen altına println("Deneme1: " + value1); println("Deneme2: " + value2); satırlarını ekleyip iphoneda oynayınca Deneme1 ve Deneme2 değerleri değişiyor mu bir bak.

    Hangi sırayla açıldığı farketmez. Yeter ki hepsi de çalışma esnasında açık olsun.
  • Ahmet bey merhaba, eve yeni girdim simdi soylediklerinizi denedim.

    IP'yi dogru sekilde ayarlamamistim, oncelikle onu duzelttim; tesekkur ederim.

    Dediginiz gibi gerekli satirin altina verdiginiz satiri yerlestirdim. Su anda iPhone'dan sliderlari oynattigim zaman Processing uzerinde su ifadeler akiyor:


    Deneme1: 0
    Deneme2: 0
    Deneme1: 0
    Deneme2: 0
    Deneme1: 0
    Deneme2: 0
    Deneme1: 0
    Deneme2: 0
    Deneme1: 0
    Deneme2: 0
    Deneme1: 0
    Deneme2: 0
    Deneme1: 0

    Sanirim iPhone bu durumda baglanti konusunda sikinti yasamiyor.

    Ama motor kesinlikle oynamiyor.
  • Bu iPhone'nin hosta veri göndermediğini gösteriyor. Veri gönderseydi o Deneme1, Deneme2 değerleri farklılık gösterirdi. Deneme 1, Deneme2 iPhone'den gelen değerler. O değerleri Processing Arduino'ya aktarıyor. Değerler 0 geldiği için de hareket olmuyor.
  • Peki ben bu durumda hangi noktada problemi aramaliyim? Acaba TouchOSC templatei yaratirken bir yanlis yapmis olabilir miyim?
  • Daha onceki denemelerimde iPhone kullanmistim. Simdi iPad ile denedim ve bir motoru calistirdim.

    Sanirim problem yarattigim TouchOSC templateinde idi. iPad icin yenisini yaratmak zorunda kaldim ve simdi calisiyor.

    Yardimlariniz icin cok tesekkurler.
  • Simdi soyle bir sorun cikiyor;

    RXTX uucp_lock() /var/lock/LK.008.011.038 is there
    gnu.io.PortInUseException: Unknown Application
    at gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354)
    at processing.serial.Serial.(Unknown Source)
    at processing.serial.Serial.(Unknown Source)
    at sketch_130108a_KARIM.setup(sketch_130108a_KARIM.java:37)
    at processing.core.PApplet.handleDraw(PApplet.java:2117)
    at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:193)
    at processing.core.PApplet.run(PApplet.java:2020)
    at java.lang.Thread.run(Thread.java:680)
    Exception in thread "Animation Thread" java.lang.RuntimeException: Error inside Serial.()
    at processing.serial.Serial.errorMessage(Unknown Source)
    at processing.serial.Serial.(Unknown Source)
    at processing.serial.Serial.(Unknown Source)
    at sketch_130108a_KARIM.setup(sketch_130108a_KARIM.java:37)
    at processing.core.PApplet.handleDraw(PApplet.java:2117)
    at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:193)
    at processing.core.PApplet.run(PApplet.java:2020)
    at java.lang.Thread.run(Thread.java:680)

    Hatali kod satiri olarak surayi gosteriyor;

    myPort = new Serial(this, Serial.list()[0],9600);

    Arduino'ya uploaddan baslayarak en bastan tum islemi yaptigimda tekrar calisiyor, bir on saniye sonra motorlar zorlanmaya benzer bir ses cikartip tepkisiz hale geliyorlar.

    Edit; bastan baslamaya arduinodan degil, arduinoyu USB portuna takip cikarmaktan baslamam gerekiyor. Sorun iki motoru ayni anda calistirmaya baslayinca oluyor. Ikisi bagli iken ve tek tek hareket ediyorlarken sorun yok. Acaba external 5V adaptor mu baglamam gerekir Arduinoya?
  • Sorun Arduino'ya guc veren USB kablosunu daha kisa ve daha kalin bir kablo ile degistirerek cozulmustur.

    Yardimlariniz icin tekrar tesekkur eder basligin benzer sorunlar yasayan arkadaslara yardimci olmasini dilerim.
  • Servoların 5V'larını dışarıdan vermen gerekiyor, Arduino'nun 5V'undan değil. Arduino'dan max 150 mA çekilebilir, üstü kartı yakar. İkisi birden hareket edince kartın sapıtması normal. O hata da hostun serialdan Arduino'yu görmemesinden dolayı ortaya çıkıyor. Aynısını bir kaç kere daha yaparsan yeni kart alman gerekir.
  • Rica ederim.
  • Ahmet bey, su anda sistem oldukca stabil hale geldi, kısa USB kablosu ıle aynı hatayı almıyorum ve uzun sure stabil olarak calisiyor. Buna ragmen adaptorsuz calistirmak karta zarar verecek midir?

    Vermis oldugum linkte de gosterilen semada breadboard üzerinden Arduinonun 5Vundan enerji alınmıs.
  • Su an iPad'de yarattigim faderlari cektigim miktar kadar servo motorlar devir aliyorlar. Ben tekrar 0 noktasina getirene kadar da donmeye devam ediyorlar.

    Bunun yerine, faderda biraktigim konuma gore kendisini belirli bir aciya konumlandiracak bir kodu nasil yazabilirim?

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.