butona basılmadığında motor durdurma

Başlatan chezque, 12 Ocak 2012, 22:31:01

chezque

arkadaşlar ben bir proje yapıyorum da butonlarla motoru kontrol etmek istiyorum. 2 motor var. ileri geri butonlarım var. ileri dediğimde 2 motor ileri yönde, geri dediğimde de 2 motor geri yönde calısmaya baslıyor. ancak butonlardan elimi çektiğimde durmuyorlar.

if(input(ileri_buton))
{
output_high(motor1_ileri);
output_high(motor2_ileri);
while(!input(ileri_buton));
output_low(motor1_ileri);
output_low(motor2_ileri);
}

if(input(geri_buton))
{
output_high(motor1_geri);
output_high(motor2_geri);
while(!input(geri_buton));
output_low(motor1_geri);
output_low(motor2_geri);
}

şeklinde yazdım kodu. isiste çalıştırınca hata veriyor hiç çalışmıyor motorlar. l298d kullandım motor kontrollerini sağlamak için. else ile de denedim onda da hata verdi.

cer

#1
if(input(ileri_buton))
{
output_high(motor1_ileri);
output_high(motor2_ileri);
}
else if(!input(ileri_buton))
{
output_low(motor1_ileri);
output_low(motor2_ileri);
}

else if(input(geri_buton))
{
output_high(motor1_geri);
output_high(motor2_geri);
}
else if(!input(geri_buton))
{
output_low(motor1_geri);
output_low(motor2_geri);
}

vitruvius

Şu şekilde yapabilirsiniz:

while(input(ileri_buton))
      {         
         output_high(motor1_ileri);
         output_high(motor2_ileri);        
      }


Tabi bunu kesme içinde yazıyorsunuz değil mi? Ana fonksiyonunuzda motor1 ve motor2 çıkışlarını sıfırlamanız lazım.

chezque

cer, senin dediğin şekilde yaptım. bütün butonları else if e bağladım ama bunda da sadece ilk başlangıçtaki if ve else if altındakileri görüyor. diğerleri için bir şey yapmıyor.

vitruvius, kesme içinde yazıyorsun derken? o kısmı anlayamadım kusura bakma. ana fonksiyon altında motor çıkışları low durumda onu yazmıştım da. while ile denedim hiç bir tepki alamadım bu seferde.

chezque

#4
      if(input(buton_ileri)==1)
      {
         output_high(sag_ileri);
         output_high(sol_ileri);
         output_low(sag_geri);
         output_low(sol_geri);
         output_low(sol_isik);
         output_low(sag_isik);
         while(input(buton_ileri)==1);
         output_low(sag_ileri);
         output_low(sol_ileri);
         delay_ms(25);
      }
     
      
      if(input(buton_geri)==1)
      {
         output_high(sag_geri);
         output_high(sol_geri);
         output_low(sag_ileri);
         output_low(sol_ileri);
         output_high(sol_isik);
         output_high(sag_isik);
         while(input(buton_geri)==1);
         output_low(sag_geri);
         output_low(sol_geri);
         output_low(sol_isik);
         output_low(sag_isik);
         delay_ms(25);
      }


hallettim şu şekilde tamamdır arkadaşlar :) teşekkürler.