在程序编写过程中,如果每条命令都是直接书写的话,程序会非常冗余,维护及阅读均会比较困难。
C语言是一种面向过程的编程方法,可以让重复的命令放在一个函数中。在程序的运行过程中,只调用一下函数即可完成各种工作,这会使得代码更简洁,编程也更加方便。
moveRobot()就是一个让小曼进行跑步的函数。其中dir、moveSpeed为moveRobot()函数的两个入口参数,dir代表机器人的运动方向,moveSpeed代表机器人的运动速度。
dir可取数值为0、1、2、3、4,分别代表停止、前进、后退、左转、右转。
moveSpeed在定义时给了默认值255,因此,在调用该函数时,如果不填moveSpeed的值,小曼机器人会以最快速度运动。
void moveRobot(int dir,int moveSpeed=255) {
//参数说明[dir:方向(0:停止;1:前进;2:后退;3:左转;4:右转);
moveSpeed:速度(175—255),默认值为255]
if(dir==0){ //停止
//左电机停止转动
analogWrite(myMotorL[0],0);
analogWrite(myMotorL[1],0);
//右电机停止转动
analogWrite(myMotorR[0],0);
analogWrite(myMotorR[1],0);
}
else if(dir==1){ //前进
//左电机逆时针旋转
analogWrite(myMotorL[0],0);
analogWrite(myMotorL[1],moveSpeed);
//右电机顺时针旋转
analogWrite(myMotorR[0],0);
analogWrite(myMotorR[1],moveSpeed);
}
else if(dir==2){ //后退
//左电机顺时针旋转
analogWrite(myMotorL[0],moveSpeed);
analogWrite(myMotorL[1],0);
//右电机逆时针旋转
analogWrite(myMotorR[0],moveSpeed);(www.xing528.com)
analogWrite(myMotorR[1],0);
}
else if(dir==3){ //左转
//左电机顺时针旋转
analogWrite(myMotorL[0],moveSpeed);
analogWrite(myMotorL[1],0);
//右电机顺时针旋转
analogWrite(myMotorR[0],0);
analogWrite(myMotorR[1],moveSpeed);
}
else if(dir==4){ //右转
//左电机逆时针旋转
analogWrite(myMotorL[0],0);
analogWrite(myMotorL[1],moveSpeed);
//右电机逆时针旋转
analogWrite(myMotorR[0],moveSpeed);
analogWrite(myMotorR[1],0);
}
}
定义了moveRobot()函数后,在编写控制机器人运动的程序时会非常方便,例如要控制机器人前进,只需要调用moveRobot()函数,并传入方向、速度参数,
moveRobot(1,255);
如下程序,机器人前进3秒,后退3秒,最后停止,
moveRobot(1,255); //前进
delay(3000);
moveRobot(2,255); //后退
delay(3000);
moveRobot(0); //停止
这就是直流电机的魅力,有了它,小曼步法敏捷,无论是加速跑还是减速缓行,亦或是前进后退,能都“信足拈来”。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。