2 istasyon şeklinde 20 d modeliyle veri alıp gönderebiliyorum hiçbir sorun yok. Ancak arduino nano her veri gönderdiğinde , kendisine bağlı olan servo motoru hareket ettiriyor. Tüm pinleri denedim aynı sonucu verdi.
Bağlantı şu şekilde = > Arduino nano – Servo motor(digital pins) besleme dışarıdan 5v – Lora 20d besleme nano’dan 5v.
Araştırdığım forum sitelerinde genelde 2 istemcinin de aynı kütüphaneyi kullanabileceğinden veya nano’nun veri gönderirken pwm pinine yanlış frekans göndermesinden kaynaklı olabilir denmiş, ancak servoyu pwm pininde dahi kullanmazken aynı sonucu alıyorum.
Sizce bu sorunu nasıl çözebilirim ? Zamanınız için teşekkür ederim.
hocam geç cevap için kusura bakmayın
myservo.detach();
lora modülüne gönderim yapmadan önce bu kodu kullanıp sonra tekrar servoyu bağlayabilirsiniz. böyle yapınca sorun ortadan kalkıyor.
myservo.detach(); ResponseStatus rs = e32ttl.sendFixedMessage(0, 44, 23, &data, sizeof(Signal)); Serial.println(rs.getResponseDescription());
hocam video dan tam anlaşılmıyor ama sanki servo bağlantıları yanlış. kod ve bağlantı şemasını gönderebilir misin.
Servo bağlantısı şu şekilde olmalıdır.
Sarı = Sinyal
Turuncu / Kırmızı = 5V
Kahverengi = ortak GND (yani harici besleme varsa arduinonun gnd si ile birleştirilmeli)
örnek bir yazı
Sorun dediğim gibi kütüphane de ortaya çıktı.
// this sketch cycles three servos at different rates #include "LoRa_E32.h" #include "ServoTimer2.h" // the servo library #include <SoftwareSerial.h> // define the pins for the servos #define rollPin 7 SoftwareSerial mySerial( 3 , 4 ); ServoTimer2 servoRoll; // declare variables for up to eight servos LoRa_E32 e32ttl( & mySerial); struct Signal { char type[ 15 ] = "Trying" ; byte temp[ 4 ]; } data; void setup() { Serial.begin ( 9600 ); servoRoll.attach(rollPin); // attach a pin to the servos and they will start pulsing e32ttl.begin(); delay ( 500 ); servoRoll.write(0); } // this function just increments a value until it reaches a maximum int i=0; void loop() { i=i+1; servoRoll.write(180); ResponseStatus rs = e32ttl.sendFixedMessage( 0 , 44 , 23 , & data, sizeof (Signal)); Serial.print(i); Serial.println (rs.getResponseDescription()); delay ( 2000 ); delay(10); }
Bu kod arduino içinde çalışırken, servo sürekli bir hareket sergilemiyor, ancak yine 30 saniyede bir veya 15 saniyede bir, bu sürekli değişiyor, o hareketi yine yapıyor.
Kütüphane link: https://codeload.github.com/nabontra/ServoTimer2/zip/refs/heads/master
#include "LoRa_E32.h" #include <SoftwareSerial.h> #include<Servo.h> Servo servo1; SoftwareSerial mySerial( 3 , 4 ); /* Pinler Arduino Nano Lora E32 433T20d */ LoRa_E32 e32ttl( & mySerial); struct Signal { char type[ 15 ] = "Trying" ; byte temp[ 4 ]; } data; void setup () { Serial.begin ( 9600 ); e32ttl.begin(); delay ( 500 ); servo1.attach(7); } void loop () { ResponseStatus rs = e32ttl.sendFixedMessage( 0 , 44 , 23 , & data, sizeof (Signal)); Serial.println (rs.getResponseDescription()); delay ( 2000 ); }
şu an yanımda servo yok. pazartesi aynı kodu çalıştırıp bakayım.
Sorunun
SoftwareSerial.h
Servo.h
Bu iki kütüphaneden kaynaklandığını düşünüyorum yabancı bazı kaynaklar da doğruluyor.Eve gelince tekrar deneyeceğim.
Merhaba @Mehmet bey tam olarak sorunun videosunu çektim
Videoda servonun gücünü arduino dan aldım ama normalde dışarıdan veriyorum yani besleme ile alakalı bir problem değil.
Streamable Video
acaba “servo Glitching/Jittering” probleminden mi bahsediyorsunuz, hareket ediyor derken. mümkünse kod, devre görseliniz ve eğer olursa hareket dediğiniz durumun videosunu atar mısın (youtube ekleyebilirsin)
şurada çözümle alakalı birvideo var incele istersen
Bağlantılarda bir hata yok @Mehmet bey acemi değilim 🙂 Sanırım kütüphane de bir sorun var servonun bir başka kütüphanesini deneyeceğim.