Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

birden fazla motora yön verme

Başlatan yusuffyk, 25 Mart 2012, 17:05:31

justice_for_all

https://rapidshare.com/files/1012257962/motor.rar.html

yazdigim kodu incele istersen proteus dosyasida var icinde calisiyor
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

yusuffyk

eyvallah hocam sağolda yanlız bir ufak problem var, burda bi motoru sağa sola döndürüyorsun taamam da birinci motor dönerken ikinci motora müdahale edemiyoruz, bunun için aklına gelen bir alternatif avr mı? döngülerde bunu yapmak çok zor sabahtan beri düşünüyorum işin içinden çıkamadım ben
http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk

yusuffyk

hocam senin yorumunu yeni gördüm benim sorum iki farklı motora istediğim zamanlarda sağ sol yaptırmak, elimde fazla olduğu için bu işi l293d ile yapmak istiyorum, bütün sistem hazır kodlarla sağlamam lazım bu olayı, şimdiki sistemde basılı tuttuğum sürece çalışıyor ama diğer motorakomut vermek için elimi butondan çekip başka butona basmam lazım ama ben aynı anda iki motoruda kullanabilmeliyim
http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk

micelow

Bu konuda akla gelen ilk fikir basitte olsa 2 işlemci kullanmak ama illaki bir yolu vardır. ikinci fikir ise  l293d yerine alternatif bir sürücü bakmak.Aklıma gelen son fikir ise programda threat kullanmak yani bir porttan gelen veri işlenirken diğer porttanda gelen verileriyide işleme almak böylelikle 1. motor çalışırken 2. motor için vereceğin komutta işleme alınabilir.
"Bir tek şeye ihtiyacımız var çalışkan olmak."

yusuffyk

hocam  threat  nedir, bilmiyorum ama yarın müsait bi zamanda araaştıracağım, olmazsa iki işlemci mantıklı geldi banada o da olmadı sürücüyü değiştirebiliriz, alternatif olması iyi oluyor
ama butonu kontrol ederken başk bir işlem yapmaması kadar saçma bi şey yok, ben while for if falan döngüye soksam onu, başka işlem yaptıramayacağım, ikinci bi işlemci eklesem başka bir işlem için üçüncü işlemci lazım, her taraftan pic fırlayacak arkadaş :D
neyse hocam fikirleriniz için teşekkürler
http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk

justice_for_all

nasil bir mudahele istiyosun tam anlatki ona gore dusunelim.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

yusuffyk

hocam deneme, yanılma, öğrenme yoluyla çalışıyorum, öncelikle şu motorlar butonlara basıldığında iki motor bağımsız olarak çalışabilmeli
daha sonra başka butonlarlada servo motor kontrol edebilmeliyim,
aralarda da lcdde yazı yazabilmeliyim,
tüm bunlar olurken hiçbiri bir diğerini engellememeli, bunun için while falan kullanırsak döngü kısır döngüye giriyor, bir işlem yapılırken diğerleri duruyor ben böyle değilde bir döngü sürerken başka döngülerde yapabilmeliyim
http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk

justice_for_all

benim programimda switch case yapisinda case lere yazdiklarim cogaltilabilir ordan yapabilirsin hangi butonlara basinda durum ne oluyor bunu bulup case bolumune yazman gerek ordan istedigin islemi gerceklestirebilirsin
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

yusuffyk

hocam senin programı simülasyonda denedim, birinci motoru döndürdüğümde diğer butonları görmüyor, yani aynı anda iki butona basınca sadece birini işleme alıyor, ben ikisinide alsın istiyorum
http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk

justice_for_all

iste ben orda case bolumune tek butonla kontrol icin yazdim onlari degistirmen gerek
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

omereliusuk

#25
int x=0;
if input(pin_a0)x|=0x01;
if input(pin_a1)x|=0x02;
if input(pin_a2)x|=0x04;
if input(pin_a3)x|=0x08;
if(x==0x03) x&=0x0c;
if(x==0x0c) x&=0x03;
if(x==0x0f)x=0;

output_bit(pin_b0,bit_test(x,0));
output_bit(pin_b1,bit_test(x,1));
output_bit(pin_b2,bit_test(x,2));
output_bit(pin_b3,bit_test(x,3));


zil çaldı. devamı 2saat sonra. birdüzenleme yapılacak. ihtimaller değerlendirilecek.if((x==0x0f)||(x==0xc0)(x==0x03))x=0;
kodlar değişti.

justice_for_all

#include <16f628a.h>
#fuses XT
#use delay(clock=4000000)


void main () 
{
   int8 durum=0;
   
   output_a(0xFF);
   output_b(0x00);
   set_tris_a(0xFF);
   set_tris_b(0x00);
   while(true) 
   {

      durum=input_a();
      
      output_b(~durum & 0x0f);

   }

}


bu sekilde istedigin gibi kontrol edersin motoru
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

omereliusuk

#27
Alıntı yapılan: justice_for_all - 26 Mart 2012, 15:31:14
#include <16f628a.h>
#fuses XT
#use delay(clock=4000000)


void main () 
{
   int8 durum=0;
   
   output_a(0xFF);
   output_b(0x00);
   set_tris_a(0xFF);
   set_tris_b(0x00);
   while(true) 
   {

      durum=input_a();
      
      output_b(~durum & 0x0f);

   }

}


bu sekilde istedigin gibi kontrol edersin motoru

peki pinler rasgele olursa ne yapacaksın? o zaman işler değişiyor...

yazdığım kodları bir dene istediğin pinlere istediğin çıkışları ve istediklerine de  girişleri bağla.
while(true){
int x=0;
if input(pin_a0)x|=0x01;
if input(pin_a1)x|=0x02;
if input(pin_a2)x|=0x04;
if input(pin_a3)x|=0x08;
if(x==0x03) x&=0x0c;
if(x==0x0c) x&=0x03;
if(x==0x0f)x=0;
output_bit(pin_b0,bit_test(x,0));
output_bit(pin_b1,bit_test(x,1));
output_bit(pin_b2,bit_test(x,2));
output_bit(pin_b3,bit_test(x,3));
}

yusuffyk

justice_for_all hocam tam istediğim gibi oldu sağolasın
omereliusuk hocam senin kodlarda olabilir mantığını öğrenmek için  denedim ama çalıştıramadım hcam bir sürü hata veriyor kodlarda
http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk

omereliusuk

int x=0;
if (!input(pin_a0))x|=0x01;
if (!input(pin_a1))x|=0x02;
if (!input(pin_a2))x|=0x04;
if (!input(pin_a3))x|=0x08;
if(x==0x03) x&=0x0c;
if(x==0x0c) x&=0x03;
if(x==0x0f)x=0;
output_bit(pin_b0,bit_test(x,0));
output_bit(pin_b1,bit_test(x,1));
output_bit(pin_b2,bit_test(x,2));
output_bit(pin_b3,bit_test(x,3));