Servo senkronizasyon modülü

Tam olarak hangi satıra ekleneceğini söyleyebilmem için sizin kodunuzu anlamam lazım. Sizin kodunuzu anlayabilmem için onu bana açıklamanız lazım. Çünkü kodu yazarken neredeyse hiç "remark" kullanmamışsınız. Ama kendiniz yazdığınız için düşünce tarzınızı ve çalışma mantığını anlatabilirsiniz. Kodunuzu anladıktan sonra belki nereye nasıl satırlar ekleneceğini söyleyebilirim. Burada "belki" çok önemli çünkü bu iş için zaman ayırmalıyım ve bu konuda söz vermem imkansız.


Sümer hocam, çok güzel yazmışsınız ama malesef kodu ben yazmadım. Youtube da yayınlanan bir videodan aldım kodları.
Sizden de zaman ayırıp çözmenizi isteyemem tabiki.
İlginiz için çok teşekkür ederim.
 
Sümer hocam, çok güzel yazmışsınız ama malesef kodu ben yazmadım. Youtube da yayınlanan bir videodan aldım kodları.
Sizden de zaman ayırıp çözmenizi isteyemem tabiki.
İlginiz için çok teşekkür ederim.
İşte başından beri derdim bu. Oradan bir devre buradan bir kod alıp "hadi ben kumanda yaptım" yaklaşımına karşıyım. Siz gençler, yapılmış olanı kopyalamak yerine, anlamaya çalışıp kendi özgün kodlarınızı yazmalısınız. Sırf bu copy paste uygulaması nedeniyle orijinal konuya bir şey yazmak gelmedi içimden.
Birazdan koduna nerede ne eklemen gerektiğini yazarım.
 
Kod:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

const uint64_t my_radio_pipe = 0xE8E8F0F0E1LL; //Remember that this code should be the same for the receiver

RF24 radio(9, 10);  //Set CE and CSN pins

// The sizeof this struct should not exceed 32 bytes
struct Data_to_be_sent {
  byte ch1;
  byte ch2;
  byte ch3;
  byte ch4;
  byte ch5;
  byte ch6;
  byte ch7;
};

//Create a variable with the structure above and name it sent_data
Data_to_be_sent sent_data;



void setup()
{
  radio.begin();
  radio.setAutoAck(false);
  radio.setDataRate(RF24_250KBPS);
  radio.openWritingPipe(my_radio_pipe);

  //Reset each channel value
  sent_data.ch1 = 127;
  sent_data.ch2 = 127;
  sent_data.ch3 = 127;
  sent_data.ch4 = 127;
  sent_data.ch5 = 0;
  sent_data.ch6 = 0;
  sent_data.ch7 = 0;
}

/**************************************************/


void loop()
{
  /*If your channel is reversed, just swap 0 to 255 by 255 to 0 below
  EXAMPLE:
  Normal:    data.ch1 = map( analogRead(A0), 0, 1024, 0, 255);
  Reversed:  data.ch1 = map( analogRead(A0), 0, 1024, 255, 0);  */
  int stick1 = analogRead(A0) / 4;
  int stick2 = analogRead(A1) / 4;
  int servo1 = 128 + (stick1 - stick2) / 2;
  int servo2 = (stick1 + stick2) / 2;
  sent_data.ch1 = servo1;
  sent_data.ch2 = servo2;
  sent_data.ch3 = map( analogRead(A2), 0, 1024, 0, 255);
  sent_data.ch4 = map( analogRead(A3), 0, 1024, 0, 255);
  sent_data.ch5 = digitalRead(2);
  sent_data.ch6 = digitalRead(3);
  sent_data.ch7 = map( analogRead(A4), 0, 1024, 0, 255);

  radio.write(&sent_data, sizeof(Data_to_be_sent));
}
 
Farklı kanallardan analogRead() yapacağın zaman, mutlaka önce bir boş okuma yapmalısın. Örneğin A0'ı okudun. A1'i okumadan çnce A1'i okuyup sonucu değerlendirmeyeceksin.

a0 = analogRead(A0);
a1 = analogRead(A1);
a1 = analogRead(A1);

Kısaca her analog okumayı peş peşe iki kez yapmalısın ki doğru okuyasın.
 
Bir kumanda yapma işine girişmeden önce bir kumandanın nasıl bir sinyalle çalıştığını ayrıntılı olarak öğrenmek gerekir. Sonra bu sinyali nasıl oluşturacağın konusu düşünülmelidir ki bu amaçla işlemcinin interrupt ve timer özelliklerini detaylı olarak anlayıp kullanmak gerekir. Yoksa birilerinin yazdığı ne idüğü belirsiz bir library ile cebelleşir durursun. Sadece önün konulanı yersin, kendi istediğini değil ki bu da kötü bir şeydir.
Kumandanda en temel işlev olan trim var mı? Bunun için koda bir şeyler eklemeyi düşünmez misin? Kanalları reverse edebileceğin switchler olsa güzel olmaz mı?
 
Bir kumanda yapma işine girişmeden önce bir kumandanın nasıl bir sinyalle çalıştığını ayrıntılı olarak öğrenmek gerekir. Sonra bu sinyali nasıl oluşturacağın konusu düşünülmelidir ki bu amaçla işlemcinin interrupt ve timer özelliklerini detaylı olarak anlayıp kullanmak gerekir. Yoksa birilerinin yazdığı ne idüğü belirsiz bir library ile cebelleşir durursun. Sadece önün konulanı yersin, kendi istediğini değil ki bu da kötü bir şeydir.
Kumandanda en temel işlev olan trim var mı? Bunun için koda bir şeyler eklemeyi düşünmez misin? Kanalları reverse edebileceğin switchler olsa güzel olmaz mı?
Mükkemmel bir detaysın hocam :) reverse işlemi tabiki harika olur. Yapan kişide 2 adet switch eklemiş durumda. Sanırsam reverse işlemleri için.

Çok teşekkür ederim.
 
Kod:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

const uint64_t my_radio_pipe = 0xE8E8F0F0E1LL; //Remember that this code should be the same for the receiver

RF24 radio(9, 10);  //Set CE and CSN pins

// The sizeof this struct should not exceed 32 bytes
struct Data_to_be_sent {
  byte ch1;
  byte ch2;
  byte ch3;
  byte ch4;
  byte ch5;
  byte ch6;
  byte ch7;
};

//Create a variable with the structure above and name it sent_data
Data_to_be_sent sent_data;



void setup()
{
  radio.begin();
  radio.setAutoAck(false);
  radio.setDataRate(RF24_250KBPS);
  radio.openWritingPipe(my_radio_pipe);

  //Reset each channel value
  sent_data.ch1 = 127;
  sent_data.ch2 = 127;
  sent_data.ch3 = 127;
  sent_data.ch4 = 127;
  sent_data.ch5 = 0;
  sent_data.ch6 = 0;
  sent_data.ch7 = 0;
}

/**************************************************/


void loop()
{
  /*If your channel is reversed, just swap 0 to 255 by 255 to 0 below
  EXAMPLE:
  Normal:    data.ch1 = map( analogRead(A0), 0, 1024, 0, 255);
  Reversed:  data.ch1 = map( analogRead(A0), 0, 1024, 255, 0);  */
  int stick1 = analogRead(A0) / 4;
  int stick2 = analogRead(A1) / 4;
  int servo1 = 128 + (stick1 - stick2) / 2;
  int servo2 = (stick1 + stick2) / 2;
  sent_data.ch1 = servo1;
  sent_data.ch2 = servo2;
  sent_data.ch3 = map( analogRead(A2), 0, 1024, 0, 255);
  sent_data.ch4 = map( analogRead(A3), 0, 1024, 0, 255);
  sent_data.ch5 = digitalRead(2);
  sent_data.ch6 = digitalRead(3);
  sent_data.ch7 = map( analogRead(A4), 0, 1024, 0, 255);

  radio.write(&sent_data, sizeof(Data_to_be_sent));
}


Hocam kodu denedim ve sonuç videoda :) (kanalları değiştirdim sadece, 1 ve 2. kanal gaz kolu çünkü, 3 ve 4 yaptım)
Eline sağlık, koduna sağlık :)

Bu VIDEOYU görmek için izniniz yok. Giriş yap veya üye ol


servoların dönüş açısını arttıramamın sebebi nedir sizce?
 
İşte başından beri derdim bu. Oradan bir devre buradan bir kod alıp "hadi ben kumanda yaptım" yaklaşımına karşıyım. Siz gençler, yapılmış olanı kopyalamak yerine, anlamaya çalışıp kendi özgün kodlarınızı yazmalısınız. Sırf bu copy paste uygulaması nedeniyle orijinal konuya bir şey yazmak gelmedi içimden.
Internette o kadar çok hazır kod var ki abi, insanın kod yazası gelmiyor :lollol::lol:
 
Internette o kadar çok hazır kod var ki abi, insanın kod yazası gelmiyor :lollol::lol:
Evet ama o zaman "ben kumanda yaptım" dediğinde biraz yalan oluyor! Birinin kendi kafasına göre yazdığı kod ile çalışabilmek ve kendi gereksinimlerine uyarlayabilmek için o kodun mantığını çözmen lazım. Onu çözene kadar kendin yazar o arada bir şeyleri de öğrenmiş olursun. Verdiği haz da cabası. İstediğinde de istediğin gibi geliştirirsin.
 
Evet ama o zaman "ben kumanda yaptım" dediğinde biraz yalan oluyor! Birinin kendi kafasına göre yazdığı kod ile çalışabilmek ve kendi gereksinimlerine uyarlayabilmek için o kodun mantığını çözmen lazım. Onu çözene kadar kendin yazar o arada bir şeyleri de öğrenmiş olursun. Verdiği haz da cabası. İstediğinde de istediğin gibi geliştirirsin.
Doğru diyorsun abi :thumbup: Ama işte şu "Google" amca yok mu :) Bizi o kadar hazıra alıştır ki, artık gerekli emeği ve zamanı harcamadan hemen bir şeyler yapalım derdine düşüyoruz :(
 
Doğru diyorsun abi :thumbup: Ama işte şu "Google" amca yok mu :) Bizi o kadar hazıra alıştır ki, artık gerekli emeği ve zamanı harcamadan hemen bir şeyler yapalım derdine düşüyoruz :(
Biz deme. Ben o grupta değilim. Yeni nesil ne yazık ki bu kafada. Tübitak şu bu yarışmalarında da görüyorum. Çocuklar internette ne bulursa ekliyor kenetliyor, İHA yaptım diye ortaya çıkıyor ama neyin ne işe yaradığından bihaber.
Ben de her seferinde Amerika'yı tekrar keşfetsinler demiyorum ama bir şeyi yapacaklarsa önce temelini kavrasınlar ve emek versinler. Bunu yapmazlarsa sadece önlerine konanı yerler hayat boyu...
 
Ben de her seferinde Amerika'yı tekrar keşfetsinler demiyorum ama bir şeyi yapacaklarsa önce temelini kavrasınlar ve emek versinler. Bunu yapmazlarsa sadece önlerine konanı yerler hayat boyu...
Belki de bu planlanarak ve isteyerek yeni nesile empoze ediliyor abi :rolleyes:
 
Biz deme. Ben o grupta değilim. Yeni nesil ne yazık ki bu kafada. Tübitak şu bu yarışmalarında da görüyorum. Çocuklar internette ne bulursa ekliyor kenetliyor, İHA yaptım diye ortaya çıkıyor ama neyin ne işe yaradığından bihaber.
Ben de her seferinde Amerika'yı tekrar keşfetsinler demiyorum ama bir şeyi yapacaklarsa önce temelini kavrasınlar ve emek versinler. Bunu yapmazlarsa sadece önlerine konanı yerler hayat boyu...

Malesef söylediklerinizde haklısınız, bugün herhangi bir konuda sıkışıldığında, "acaba ne idi?" diye bir düşünceye kapıldığınızda, ilk yapılan şey nedir desem, %95 herkes google a bakarım der, hatta %99.

Konu başlığı gereği, oraya yazmak gerekiyordu, yoksa "kumanda yaptımmmm" "Uçak yaptımmm" diye hiçbir zaman demedim :)
İnternetten bakıp yapıyoruz. İşin kod kısmına girmek gibi niyetim yoktu ama bu işten sonra "neden olmasın" düşüncesindeyim. :)