|
本帖最后由 wqvbqjywyg 于 2012-1-18 15:22 编辑
首先 这个贴是求助贴。也为了能把论坛潜水的高手,能引出来,做几个教程。
因为看见群里的高手有发过调查的贴子,说想出教程。不知道是不是NXC没人用,还是这个软件本身有缺点。用的人,好像很少的样子。
我求助群里的高手,能发几个教程,让我们学的轻松一点。
OnFwd()是马达前进。里面有两个参数“OUT_AC”是输出的端口,还有一个参数是马达的速度。但经过测试,无法精确的直线前进。昨天看,NXC快速入门一书,里面有一个关于RCX的教程,改编如下。
MotorRotationCount()这个函数是测马达转动的角度.Float() 函数是马达惯性停止。程序的大概意思是如果A马达的角度大于C马达,那么C继续走A绶停, 如果C马达的角度大于A马达,那么A继续走C绶停。如果没有发生这两种情况,就说明,A马达和C马达,走的速度是一样的,那么,它们两个同时前进。
task main()
{
while (true)
{
if(MotorRotationCount(OUT_A) < MotorRotationCount(OUT_C))
{ OnFwd (OUT_A, 60);Float(OUT_C);}
else if (MotorRotationCount(OUT_A) > MotorRotationCount(OUT_C))
{ OnFwd (OUT_C, 60);Float(OUT_A);}
else
{ OnFwd (OUT_AC,60);}
}
}
测式的时候,我也使用NXTG
感觉效果差不多,测试的时候,我按住其中一个马达,另一个马达,也相继的就停了。但NXTG还是灵敏一些,不知道用的什么算法。然后又测试了一个程序,这个程序,区别很大。
NXTG
NXC
task main()
{
SetSensorLowspeed(IN_3);
while (SetSensorUS(IN_3)<20)
{
if(MotorRotationCount(OUT_A) < MotorRotationCount(OUT_C))
{ OnFwd (OUT_A, 60);Float(OUT_C);}
else if (MotorRotationCount(OUT_A) > MotorRotationCount(OUT_C))
{ OnFwd (OUT_C, 60);Float(OUT_A);}
else
{ OnFwd (OUT_AC,60);}
}
Off(OUT_AC); //精确停止,和Float()功能相反。
}
放在地上,明显发现,NXTG走的很平稳,而NXC则是左右晃,好像是在判断超声波。感觉NXTG的算法应该是很精妙了。然后才打的包,想超过,还是很难的呀。
|
|