You are on page 1of 4

PIC|ULAK İLE BİLGİSAYAR ÜZERİNDEN STEP MOTORU SAĞ VE SOL OLMAK

ÜZERE BELİRLİ AÇILARDA DÖNDÜRME İŞLEMİ

#include <main.h>
 
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
 
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör
frekansı belirtiliyor.
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1)

// Giriş ve çıkış pinlerine isim atanıyor


char islem[20]; //max 20 char tipinde dizi tanımlaıyor.
int a;
void main()
{
PRINTF("\n\r------------------PIC|ULAK---------------"); //
printf("\n\r*-*-*-*-*-*- STEP MOTOR CONTROL -*-*-*-*-*-*-*");
// RECEİVE KISMINA YAZILACAKLAR.
printf("\n\rDERECE ve YÖN GİRİNİZ:"); //

while(1)
{
output_b(0x00); // B portu sıfırlanıyor
islem="null"; // islem değişkeninin içi boş olarak ayarlanıyor.
gets(islem); // yazılan metni islem değişkenine aktar.
puts(islem); // yazılan değeri ekrana yaz
 
printf("\n\rDERECE ve YÖN GİRİNİZ:"); // receive kısmına yazdır.
 
// 360 DERECE SAĞA KOMUTU
 
if (islem[0]=='3' && islem[1] =='6' && islem[2]=='0'&&islem[3]=='R' )
{
for(a=0;a<=11;a++) // 12x4=48 adım atıyor 48x7.5=90 derece sağa hareket
edecek
{
output_b(0b00001001);
delay_ms(10);
output_b(0b00000011);
delay_ms(10);
output_b(0b00000110);
delay_ms(10);
output_b(0b00001100);
delay_ms(10);
 
}
}
 
// 180 DERECE SAĞA KOMUTU
 
if (islem[0]=='1' && islem[1] =='8' && islem[2]=='0'&&islem[3]=='R' )
{
for(a=0;a<=5;a++) // 6x4=24 adım atıyor 24x7.5=90 derece sağa hareket
edecek
{
output_b(0b00001001);
delay_ms(10);
output_b(0b00000011);
delay_ms(10);
output_b(0b00000110);
delay_ms(10);
output_b(0b00001100);
delay_ms(10);
}
}
 
// 90 DERECE SAĞA KOMUTU
 
if (islem[0]=='9' && islem[1] =='0'&&islem[2]=='R' )
{
for(a=0;a<=2;a++) // 3x4=12 adım atıyor 12x7.5=90 derece sağa hareket
edecek
{
output_b(0b00001001);
delay_ms(10);
output_b(0b00000011);
delay_ms(10);
output_b(0b00000110);
delay_ms(10);
output_b(0b00001100);
delay_ms(10);
}
}
 
//60 DERECE SAĞA KOMUTU
 
if (islem[0]=='6' && islem[1] =='0'&&islem[2]=='R')
{
 
for(a=0;a<=1;a++)
{
output_b(0b00001001);
delay_ms(10);
output_b(0b00000011);
delay_ms(10);
output_b(0b00000110);
delay_ms(10);
output_b(0b00001100);
delay_ms(10);
}
}
 
//30 DERECE SAĞA KOMUTU
 
if (islem[0]=='3' && islem[1] =='0'&&islem[2]=='R')
{
for(a=0;a<=0;a++)
{
output_b(0b00001001);
delay_ms(10);
output_b(0b00000011);
delay_ms(10);
output_b(0b00000110);
delay_ms(10);
output_b(0b00001100);
delay_ms(10);
}
}
 
// 360 DERECE SOLA KOMUTU
 
if (islem[0]=='3' && islem[1] =='6' && islem[2]=='0' && islem[3]=='L')
{
for(a=0;a<=11;a++)
{
output_b(0b00001100);
delay_ms(10);
output_b(0b00000110);
delay_ms(10);
output_b(0b00000011);
delay_ms(10);
output_b(0b00001001);
delay_ms(10);
}
}
 
// 180 DERECE SOLA KOMUTU
 
if (islem[0]=='1' && islem[1] =='8' && islem[2]=='0' && islem[3]=='L')
{
for(a=0;a<=5;a++)
{
output_b(0b00001100);
delay_ms(10);
output_b(0b00000110);
delay_ms(10);
output_b(0b00000011);
delay_ms(10);
output_b(0b00001001);
delay_ms(10);
}
}
 
// 90 DERECE SOLA KOMUTU
 
if (islem[0]=='9' && islem[1] =='0' && islem[2]=='L' )
{
for(a=0;a<=2;a++)
{
output_b(0b00001100);
delay_ms(10);
output_b(0b00000110);
delay_ms(10);
output_b(0b00000011);
delay_ms(10);
output_b(0b00001001);
delay_ms(10);
}
}
 
// 60 DERECE SOLA KOMUTU
 
if (islem[0]=='6' && islem[1] =='0' && islem[2]=='L')
{
for(a=0;a<=1;a++)
{
output_b(0b00001100);
delay_ms(10);
output_b(0b00000110);
delay_ms(10);
output_b(0b00000011);
delay_ms(10);
output_b(0b00001001);
delay_ms(10);
}
}
 
// 30 DERECE SOLA KOMUTU
 
if (islem[0]=='3' && islem[1] =='0' && islem[2]=='L')
{
for(a=0;a<=0;a++)
{
output_b(0b00001100);
delay_ms(10);
output_b(0b00000110);
delay_ms(10);
output_b(0b00000011);
delay_ms(10);
output_b(0b00001001);
delay_ms(10);
}
}
}
}

You might also like