📄 [原创]循线算法原理与实践.htm
字号:
<BR>* 说明: 该函数放在定时器或者主循环里面用于产生软PWM*
<BR>********************************************************/
<BR>void SpeedPWM(char PWMLine) <BR>{
<BR> char PWMLine_L = PWMLine;
<BR>char PWMLine_R = PWMLine;
<BR>static char PWMCount_L = 0;
<BR>static char PWMCount_R = 0;
<BR><BR>char Temp = 0;
<BR><BR>if (FollowLineEnable == True) <BR>{
<BR> Temp = (char)fabs((float)CG_X);
<BR> if (AdcValueFlag == 0)
<BR> {
<BR> Temp = 0;
<BR> } <BR> else <BR> {
<BR> if (CG_X <0)
<BR> {
<BR> if ((Temp<<4) <= PWMLine_R)
<BR> {
<BR> PWMLine_R -= ((Temp<<5)+Temp<<2);
<BR> } <BR> else
<BR> {
<BR> PWMLine_R = 0;
<BR> } <BR> }
<BR> else <BR> {
<BR> if ((Temp<<4) <= PWMLine_L)
<BR> {
<BR> PWMLine_L -= (Temp<<5);
<BR> } <BR> else
<BR> {
<BR> PWMLine_L = 0;
<BR> } <BR> } <BR> }
<BR>} <BR><BR>PWMCount_L ++; <BR>PWMCount_R ++;
<BR>if (PWMCount_L > Fastest) <BR>{
<BR> PWMCount_L = Stop; <BR>}
<BR>if (PWMCount_R > Fastest) <BR>{
<BR> PWMCount_R = Stop; <BR>}
<BR><BR>if (PWMCount_L < PWMLine_L) <BR>{
<BR> switch (GoDirection)
<BR> {
<BR> case Front:
<BR> Motor_Left_GoFront;
<BR> break;
<BR> case Back:
<BR> Motor_Left_GoBack;
<BR> break;
<BR> case Left:
<BR> Motor_Left_GoFront;
<BR> break;
<BR> case Right:
<BR> Motor_Left_GoBack;
<BR> break;
<BR> case Stop:
<BR> Motor_Left_Stop_Free;
<BR> break;
<BR> } <BR>} <BR>else <BR>{
<BR> Motor_Left_Stop_Free; <BR>}
<BR><BR>if (PWMCount_R < PWMLine_R) <BR>{
<BR> switch (GoDirection)
<BR> {
<BR> case Front:
<BR> Motor_Right_GoFront;
<BR> break;
<BR> case Back:
<BR> Motor_Right_GoBack;
<BR> break;
<BR> case Left:
<BR> Motor_Right_GoBack;
<BR> break;
<BR> case Right:
<BR> Motor_Right_GoFront;
<BR> break;
<BR> case Stop:
<BR> Motor_Right_Stop_Free;
<BR> break;
<BR> } <BR>} <BR>else <BR>{
<BR> Motor_Right_Stop_Free; <BR>} <BR>}
<BR><BR><BR>/********************************************************
<BR>* 函数说明:获取偏离轨迹线的数值 *
<BR>* 输入: 表明寻线状态的字节 *
<BR>* [说明] *
<BR>* 通过类质心算法获取当前机器人偏离轨迹线的量 *
<BR>* - 表示偏左 + 表示偏右 *
<BR>********************************************************/
<BR>signed char GetCG_X(unsigned char AdcValues) <BR>{
<BR>signed char a = 0;
<BR>signed char Temp = 0;
<BR>signed char Totals = 0;
<BR>for (a = 0;a<8;a++) <BR>{
<BR> if ((AdcValues <<a)>>7)
<BR> {
<BR> Temp += ((-7)+ (a<<1));
<BR> Totals++; <BR> } <BR>}
<BR><BR>if (Totals ==0) <BR>{
<BR> return 0; <BR>}
<BR><BR> return (Temp / Totals);
<BR>} <BR><BR>函数调用GetCG_X函数,用来获取CG_X,CG_X直接在PWM输出函数里面指导机器人的运动。
<BR><BR>以上方法的好处是,提供了一个比例调节循线动作的可能。支持多传感器的情况,尤其适合线性CCD类的线性数据的处理。为机器人提供了一个相对完整的视觉,不可能出现无法识别的情况,而且,这种情况可以使机器人在不加修改程序的情况下直接在在白线循线和黑线循线状态下切换。
<BR></FONT></TD></TR>
<TR>
<TD class=f03
style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: #ffffff 0.5pt solid"
vAlign=bottom bgColor=#d1d9e2>__________________________<BR><IMG
src="[原创]循线算法原理与实践.files/armok01129547.jpg"> </TD></TR>
<TR>
<TD class=f03
style="BORDER-RIGHT: #ffffff 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: #bbbbbb 0.5pt solid; BORDER-BOTTOM: #bbbbbb 0.5pt solid"
align=left width="19%" bgColor=#d1d9e2><IMG height=1 src=""
width=7>2005-10-26,17:46:44 </TD>
<TD class=f03
style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: #bbbbbb 0.5pt solid"
vAlign=top width="81%" bgColor=#d1d9e2 ?>
<TABLE width="100%">
<TBODY>
<TR>
<TD align=left><IMG height=1 src="" width=7> <A class=tt4
href="http://www.ouravr.com/bbs/user_information.jsp?user_name=Gorgon Meducer"
target=_blank>资料</A> <IMG height=1 src="" width=7> <A class=tt4
href="mailto:Embedded_Zhuoran@hotmail.com">邮件</A> <IMG height=1
src="" width=7> </TD>
<TD align=right><IMG height=1 src="" width=2> <IMG height=1 src=""
width=2> <IMG height=1 src="" width=2> <IMG height=1 src="" width=2>
<IMG height=1 src="" width=2> <IMG height=1 src="" width=2> <SPAN
class=f01>编辑</SPAN> <IMG height=1 src="" width=7> <SPAN
class=f01>删除</SPAN> <IMG height=1 src="" width=7> <IMG height=1
src="" width=7> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=0
cellPadding=6 width="100%" border=0>
<TBODY>
<TR>
<TD class=f03
style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: #bbbbbb 0.5pt solid; BORDER-BOTTOM: #bbbbbb 0.5pt solid"
vAlign=top align=left width="19%" bgColor=#e8e8e8 rowSpan=2>【5楼】 <FONT
color=#000000>ljpfjfj </FONT><BR>积分:<FONT
color=#000000>136</FONT><BR>派别:<FONT color=#000000></FONT><BR>等级:<FONT
color=#000000>------</FONT><BR>来自:<FONT color=#000000></FONT><BR></TD>
<TD class=f03
style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none"
vAlign=top width="81%" bgColor=#e8e8e8><FONT color=#000000>好文章.</FONT>
</TD></TR>
<TR>
<TD class=f03
style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: #bbbbbb 0.5pt solid"
vAlign=bottom bgColor=#e8e8e8> </TD></TR>
<TR>
<TD class=f03
style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: #bbbbbb 0.5pt solid; BORDER-BOTTOM: #bbbbbb 0.5pt solid"
align=left width="19%" bgColor=#e8e8e8><IMG height=1 src=""
width=7>2005-10-29,07:37:39 </TD>
<TD class=f03
style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: #bbbbbb 0.5pt solid"
vAlign=top width="81%" bgColor=#e8e8e8 ?>
<TABLE width="100%">
<TBODY>
<TR>
<TD align=left><IMG height=1 src="" width=7> <A class=tt4
href="http://www.ouravr.com/bbs/user_information.jsp?user_name=ljpfjfj"
target=_blank>资料</A> <IMG height=1 src="" width=7> <SPAN
class=f01>邮件</SPAN> <IMG height=1 src="" width=7> </TD>
<TD align=right><IMG height=1 src="" width=2> <IMG height=1 src=""
width=2> <IMG height=1 src="" width=2> <IMG height=1 src="" width=2>
<IMG height=1 src="" width=2> <IMG height=1 src="" width=2> <SPAN
class=f01>编辑</SPAN> <IMG height=1 src="" width=7> <SPAN
class=f01>删除</SPAN> <IMG height=1 src="" width=7> <IMG height=1
src="" width=7> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=0
cellPadding=6 width="100%" border=0>
<TBODY>
<TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -