中级会员
- 积分
- 238
- 威望
- 193
- 贡献
- 41
- 兑换币
- 14
- 注册时间
- 2010-10-10
- 在线时间
- 2 小时
|
我们把小车分5种状态:前进、后退、左转、右转、停止
1、 前进代码
static void MoveForward()
{
Lc.Write(true);
pwm.Start(PWM.Channels.CH1, 1, PWM.Mode.PWM1); //PA6
Rc.Write(true);
pwm.Start(PWM.Channels.CH2, 1, PWM.Mode.PWM1); //PA7
}
2、 后退代码
static void MoveBack()
{
Lc.Write(false);
pwm.Start(PWM.Channels.CH1, 99, PWM.Mode.PWM1); //PA6
Rc.Write(false);
pwm.Start(PWM.Channels.CH2, 99, PWM.Mode.PWM1); //PA7
}
3、 左转代码
static void MoveLeft()
{
Lc.Write(false);
pwm.Start(PWM.Channels.CH1, 99, PWM.Mode.PWM1); //PA6
Rc.Write(true);
pwm.Start(PWM.Channels.CH2, 1, PWM.Mode.PWM1); //PA7
}
左转代码有两种实现方法,一种是左轮静止,右轮正转,另一种是左轮倒转,右轮正传,这种转圈的速度更快,当然也可以让两轮都正传,左轮转的慢,右轮转的快,也可以进行左转弯。
4、 右转代码
static void MoveRight()
{
Lc.Write(true);
pwm.Start(PWM.Channels.CH1, 1, PWM.Mode.PWM1); //PA6
Rc.Write(false);
pwm.Start(PWM.Channels.CH2, 99, PWM.Mode.PWM1); //PA7
}
右转处理代码和左转恰好相反。
5、 停止代码
static void MoveStop()
{
Lc.Write(false);
pwm.Start(PWM.Channels.CH1, 0, PWM.Mode.PWM1); //PA6
Rc.Write(false);
pwm.Start(PWM.Channels.CH2, 0, PWM.Mode.PWM1); //PA7
pwm.Stop(PWM.Channels.CH1);
pwm.Stop(PWM.Channels.CH2);
}
红外遥控器我们也没有必须识别全部的按钮编码,我们仅识别5个按键即可,前后左右和确认键。
1、声明红外控制类,并绑定相关处理事件
IRController IR = new IRController(3, (int)GPIO_NAMES.PB12);
IR.IREvent += new IRController.IREventHandler(IR_Click);
2、红外事件处理函数
static void IR_Click(byte[] buff, DateTime time)
{
IRData.Key key = IRData.GetKey(buff);//编码识别
if (key != IRData.Key.None)
{
switch (key)
{
case IRData.Key.Forward:
MoveForward();
break;
case IRData.Key.Left:
MoveLeft();
break;
case IRData.Key.Right:
MoveRight();
break;
case IRData.Key.Back:
MoveBack();
break;
case IRData.Key.Stop:
MoveStop();
break;
}
}
}
相关博文:
(1)红外遥控器编码识别 http://blog.csdn.net/yefanqiu/archive/2010/09/25/5906170.aspx
(2)用PWM驱动智能小车 http://blog.csdn.net/yefanqiu/archive/2010/09/05/5865279.aspx
(3)红外遥控智能小车 http://blog.csdn.net/yefanqiu/archive/2010/09/28/5912938.aspx |
|