Selamat datang di ForSa! Forum diskusi seputar sains, teknologi dan pendidikan Indonesia.

Welcome to Forum Sains Indonesia. Please login or sign up.

Juni 26, 2022, 08:34:45 PM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
  • Total Anggota: 26,754
  • Latest: sainsftw
Stats
  • Total Tulisan: 139,633
  • Total Topik: 10,390
  • Online today: 62
  • Online ever: 441
  • (Desember 17, 2011, 09:48:51 AM)
Pengguna Online
Users: 0
Guests: 66
Total: 66

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

Mau tanya program servo pake C-AVR

Dimulai oleh namasayabudi, Juli 25, 2010, 12:39:42 AM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

namasayabudi

siswa baru mau tanya gan ..
bisa minta tolong .. mungkin agan bepengalaman ..
mau buat gerakan servo yang lambat banget ..
yang biasa gw buat ..

contoh program
gw pake C AVR ..
PORTA.255;
PIRTA.1=1;
delay_us(1850); [nilai A]
PORTA.1=0;
delay_us(18150);

nah si servo di port ini mau di gerakin jadi si 'A' nya berubah jadi 2000 us ..
cuma pengen si stepnya gerakannya lambat banget tiap 10us ato 50us.. gitu .. istilahnya increment delaynya pengen lambat lah .. tau ga ??
gw ga tau programnya .. kalo tau kabarin yah agan2 semua .. pengen bisa ..

gw selama ini masi manual
jadi pake fungsi for

for(i=0;i<50;i++)
{
PORTA.255;
PIRTA.1=1;
delay_us(1850); [nilai A]
PORTA.1=0;
delay_us(18150);
};

for(i=0;i<100;i++)
{
PORTA.255;
PIRTA.1=1;
delay_us(1900); [nilai A]
PORTA.1=0;
delay_us(18100);
};


for(i=0;i<150;i++)
{
PORTA.255;
PIRTA.1=1;
delay_us(1950); [nilai A]
PORTA.1=0;
delay_us(18050);
};


for(i=0;i<200;i++)
{
PORTA.255;
PIRTA.1=1;
delay_us(2000); [nilai A]
PORTA.1=0;
delay_us(18000);
};

nah kalo pake cara yang gw biasa pake ini si servo nya kasar gerakannya .. n kebayang donk program nya sepanjang apa .. hehehe ..
itu aja yang mau di tanya .. thx for attention  .. mudah2an ada yang bisa ngasi solusi ..


0y1k

yang jadi masalah di delay kan??
fungsi delay harus konstan, hehehe
sedikit manipulasi delay, mungkin anda yang mengembangkan
sy belum pernah mainan dengan servo, jd gak tw cara yg halus untuk bergeraknya, bantu dalam manipulasi coding aja yah
:-)

//ini fungsi variabel delay
var_delay_us(int delay) {

char i;

for (i=1;i<=delay;i++)
delay_us(1);
}

//ini untuk menggerakan servo

main() {

char j,k;
int delay1;delay2;

delay1 = 1850;
delay2 = 18150;

for(j=1;j<=4;j++) {

for(k=0;k<200;k++)
{
PORTA.255;
PIRTA.1=1;
var_delay_us(delay1); [nilai A]
PORTA.1=0;
var_delay_us(delay2);
}

delay1 = delay1 + 50;
delay2 = delay2 + 50;
}

}


dicoba deh...
ga perlu coding yg panjang kan??
hehehe
لاَ إِلَـهَ إِلاَّ اللهُ الْعَظِيْمُ الْحَلِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ الْعَرْشِ الْعَظِيْمُ، لاَ إِلَـهَ إِلاَّ اللهُ رَبُّ السَّمَاوَاتِ وَرَبُّ اْلأَرْضِ وَرَبُّ الْع