高级会员
- 积分
- 620
- 金钱
- 620
- 注册时间
- 2016-10-20
- 在线时间
- 74 小时
|
发表于 2017-7-11 20:26:50
|
显示全部楼层
void xu1(u8 a1,u8 b1,u8 c1,u8 d1)
{
A1(a1);B1(b1);C1(c1);D1(d1);
}
void xu2(u8 a2,u8 b2,u8 c2,u8 d2)
{
A2(a2);B2(b2);C2(c2);D2(d2);
void forward(u16 tt)//7.2度
{
xu1(1,0,0,0);
xu2(1,0,0,0);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(0,0,0,1);
xu2(0,0,0,1);
delay_us(tt*100);
}
void backwards(u16 tt)
{
xu1(0,0,0,1);
xu2(0,0,0,1);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(1,0,0,0);
xu2(1,0,0,0);
delay_us(tt*100);
}
void turn_left(u16 tt)
{
xu1(0,0,0,0);
xu2(1,0,0,0);
delay_us(tt*100);
xu2(0,1,0,0);
delay_us(tt*100);
xu2(0,0,1,0);
delay_us(tt*100);
xu2(0,0,0,1);
delay_us(tt*100);
}
void turn_left_2(u16 tt)
{
xu1(0,0,0,1);
xu2(0,0,0,0);
delay_us(tt*100);
xu1(0,0,1,0);
delay_us(tt*100);
xu1(0,1,0,0);
delay_us(tt*100);
xu1(1,0,0,0);
delay_us(tt*100);
}
void turn_right(u16 tt)
{
xu1(1,0,0,0);
xu2(0,0,0,0);
delay_us(tt*100);
xu1(0,1,0,0);
delay_us(tt*100);
xu1(0,0,1,0);
delay_us(tt*100);
xu1(0,0,0,1);
delay_us(tt*100);
}
void turn_right_2(u16 tt)
{
xu1(0,0,0,0);
xu2(0,0,0,1);
delay_us(tt*100);
xu2(0,0,1,0);
delay_us(tt*100);
xu2(0,1,0,0);
delay_us(tt*100);
xu2(1,0,0,0);
delay_us(tt*100);
}
/*变量n为旋转角度参数,需根据实际情况调节*/
void turn_left_15(u16 tt) //左转15度
{
u8 n;
for(n=0;n<4;n++)
{
xu1(0,0,0,1);
xu2(1,0,0,0);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(1,0,0,0);
xu2(0,0,0,1);
delay_us(tt*100);
}
}
void turn_right_15(u16 tt) //右转15度 目的:使物块放置的更靠中心些
{
u8 n;
for(n=0;n<3;n++)
{
xu1(1,0,0,0);
xu2(0,0,0,1);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(0,0,0,1);
xu2(1,0,0,0);
delay_us(tt*100);
}
}
void turn_left_45(u16 tt) //左转45度
{
u8 n;
for(n=0;n<12;n++)
{
xu1(0,0,0,1);
xu2(1,0,0,0);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(1,0,0,0);
xu2(0,0,0,1);
delay_us(tt*100);
}
}
void turn_right_45(u16 tt) //左转45度
{
u8 n;
for(n=0;n<12;n++)
{
xu1(1,0,0,0);
xu2(0,0,0,1);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(0,0,0,1);
xu2(1,0,0,0);
delay_us(tt*100);
}
}
void turn_left_90(u16 tt) //左转转90度
{
u8 n;
for(n=0;n<29;n++)
{
xu1(0,0,0,1);
xu2(1,0,0,0);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(1,0,0,0);
xu2(0,0,0,1);
delay_us(tt*100);
}
}
void turn_right_90(u16 tt) //右转90度
{
u8 n;
for(n=0;n<29;n++)
{
xu1(1,0,0,0);
xu2(0,0,0,1);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(0,0,0,1);
xu2(1,0,0,0);
delay_us(tt*100);
}
}
void turn_left_135(u16 tt) //左转135度
{
u8 n;
for(n=0;n<41;n++)
{
xu1(0,0,0,1);
xu2(1,0,0,0);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(1,0,0,0);
xu2(0,0,0,1);
delay_us(tt*100);
}
}
void turn_right_135(u16 tt) //右转135度
{
u8 n;
for(n=0;n<42;n++)
{
xu1(1,0,0,0);
xu2(0,0,0,1);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(0,0,0,1);
xu2(1,0,0,0);
delay_us(tt*100);
}
}
void turn_left_180(u16 tt) //左转180度
{
u8 n;
for(n=0;n<56;n++)
{
xu1(0,0,0,1);
xu2(1,0,0,0);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(1,0,0,0);
xu2(0,0,0,1);
delay_us(tt*100);
}
}
void turn_right_180(u16 tt) //右转180度
{
u8 n;
for(n=0;n<56;n++)
{
xu1(1,0,0,0);
xu2(0,0,0,1);
delay_us(tt*100);
xu1(0,1,0,0);
xu2(0,0,1,0);
delay_us(tt*100);
xu1(0,0,1,0);
xu2(0,1,0,0);
delay_us(tt*100);
xu1(0,0,0,1);
xu2(1,0,0,0);
delay_us(tt*100);
}
}
void stop(void)
{
xu1(0,0,0,0);
xu2(0,0,0,0);
这是小车的左右两个步进电机的控制程序,(仅供参考),,,要想更直观的观察A B C D四个相的0 1变化 可通过L298N电机驱动板(绿板)上面的四个指示灯来看。 |
|