|
M2MU4RCPB%`H6RCL68IBOW3.png (45.25 KB, 下載次數(shù): 30)
下載附件
2022-4-16 22:54 上傳
單片機(jī)源程序如下:
void forward(void) //小車前進(jìn)控制函數(shù)
{
IN1 = 1; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN1設(shè)置成高電平
IN2 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN2設(shè)置成低電平
IN3 = 1; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN3設(shè)置成高電平
IN4 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN4設(shè)置成低電平
}
void back(void) //小車后退控制函數(shù)
{
IN1 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN1設(shè)置成低電平
IN2 = 1; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN2設(shè)置成高電平
IN3 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN3設(shè)置成低電平
IN4 = 1; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN4設(shè)置成高電平
}
void stop(void) //小車停止控制函數(shù)
{
IN1 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN1設(shè)置成低電平
IN2 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN2設(shè)置成低電平
IN3 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN3設(shè)置成低電平
IN4 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN4設(shè)置成低電平
}
void left(void) //小車向左轉(zhuǎn)控制函數(shù)
{
IN1 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN1設(shè)置成低電平
IN2 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN2設(shè)置成低電平
IN3 = 1; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN3設(shè)置成高電平
IN4 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN4設(shè)置成低電平
}
void right(void) //小車向右轉(zhuǎn)控制函數(shù)
{
IN1 = 1; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN1設(shè)置成高電平
IN2 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN2設(shè)置成低電平
IN3 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN3設(shè)置成低電平
IN4 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN4設(shè)置成低電平
}
void circle_right(void) //小車向右打轉(zhuǎn)控制函數(shù)
{
IN1 = 1; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN1設(shè)置成低電平
IN2 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN2設(shè)置成高電平
IN3 = 0; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN3設(shè)置成高電平
IN4 = 1; //將電機(jī)驅(qū)動芯片L298N的控制管腳 IN4設(shè)置成低電平
}
void speed_jia(void)
{
if(sudu<17)sudu++;
pwmval_left_init = sudu;
pwmval_right_init = sudu;
}
void speed_jian(void)
{
if(sudu>3)sudu--;
pwmval_left_init = sudu;
pwmval_right_init = sudu;
}
/************************************************************************/
void left_moto(void) //小車左電機(jī)PWM調(diào)速控制函數(shù)
{
if(left_pwm) //如果變量left_pwm為1,執(zhí)行左電機(jī)pwm調(diào)速功能(left_pwm相當(dāng)于一個開關(guān),只有為1時才有pwm調(diào)速功能)
{
if(pwmval_left <= pwmval_left_init) //當(dāng)pwmval_left小于等于pwm_left_init時
{
EN1 = 1;
//將電機(jī)驅(qū)動芯片的EN1管腳設(shè)置成高電平
}
else //當(dāng)pwmval_left小不于等于pwm_left_init時
{
EN1 = 0;
//將電機(jī)驅(qū)動芯片的EN1管腳設(shè)置成低電平
}
if(pwmval_left >= 20) //如果 pwmval_left大于等于20
{
pwmval_left = 0; //將 pwmval_left設(shè)為0
}
}
else // 如果變量left_pwm為0,將電機(jī)驅(qū)動芯片的EN1管腳設(shè)置成低電平 (left_pwm相當(dāng)于一個開關(guān),只有為1時才有pwm調(diào)速功能)
{
EN1 = 0;
}
}
/******************************************************************/
void right_moto(void) //小車右電機(jī)PWM調(diào)速控制函數(shù)
{
if(right_pwm) //如果變量right_pwm為1,執(zhí)行右電機(jī)pwm調(diào)速功能(right_pwm相當(dāng)于一個開關(guān),只有為1時才有pwm調(diào)速功能)
{
if(pwmval_right <= pwmval_right_init) //當(dāng)pwmval_right小于等于pwm_right_init時
{
EN2 = 1; //將電機(jī)驅(qū)動芯片的EN2管腳設(shè)置成高電平
}
else if(pwmval_right > pwmval_right_init) //當(dāng)pwmval_right小不于等于pwm_right_init時
{
EN2 = 0; //將電機(jī)驅(qū)動芯片的EN2管腳設(shè)置成低電平
}
if(pwmval_right >= 20) //如果 pwmval_right大于等于20
{
pwmval_right = 0; //將 pwmval_right設(shè)為0
}
}
else //如果變量right_pwm為0,將電機(jī)驅(qū)動芯片的EN2管腳設(shè)置成低電平 (right_pwm相當(dāng)于一個開關(guān),只有為1時才有pwm調(diào)速功能)
{
EN2 = 0;
}
}
|
|