我前段时间写了《用PWM驱动智能小车》和《红外遥控器编码识别》两篇博文,分别介绍了如何用PWM驱动直流电机及红外遥控器编码识别,这一次我们把二者结合起来,用红外遥控器遥控智能小车。
在《红外遥控器编码识别》中,我们用面包板搭建简单的电路,来验证红外接收信号,但是放在小车上是不行的,相关器件我们需要进行焊接,最终完成图如下。
我们把智能小车和红外板拼装在一起,最终完成图如下:
需要注意的是,PWM信号输出时,对红外接收信号有比较大的干扰,所以尽可能让两路信号离的远一些,杜邦线质量也要好一些。
我们把小车分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;
}
}
}
程序编写完毕后,部署到开发板上,拿起遥控器我们就可以遥控小车运行了,相关控制视频如下:
http://video.sina.com.cn/v/b/38689146-1804832611.html
本文源码:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/IRCarTest.rar
MF快速参考: .NET Micro Framework 快速入门
MF中文讨论组:http://space.cnblogs.com/group/MFSoft/
微软官方论坛:MSDN微软中文技术论坛(.NET Micro Framework)
开发板简明手册:http://blog.sina.com.cn/s/blog_6b938f630100kh0k.html
【低价开发板】http://item.taobao.com/item.htm?id=7117999726
分享到:
相关推荐
STM32_Nano开发板--原理图 很完整 不错,欢迎下载
STM32F407开发板-标准例程-寄存器版本。有59个例子。涉及所有试验。
两块STM32,一个做主机一个做从机,能够实现主机发送数据以及主机读取从机数据。通过串口调试,以及LED灯来提示工作状态。
STM32F407开发板作为客户端进行网络通信,解压即用
普中STM32-PZ6806L开发板资料光盘结构 | |---1--用户必看 | |--KEIL5安装教程 | |--普中ARM仿真器使用说明 | |--普中PZ6806L开发板入门教程 | |---2--开发板原理图 | |--彩屏原理图-----------------对应...
此资源是《基于探索者stm32f407开发板ucos-iii+lwip1.4.1的tcp server并发服务器解决例程》配套的源码压缩包
安富莱_STM32-V7开发板资料
安富莱_STM32-V5开发板_RL-TCPnet网络教程
FS-MP1A开发板是基于ST(意法半导体)公司的STM32MP1系列微处理器而设计的开发板,该系列处理器提供了集成 Arm® Cortex®-A7 和 Cortex®-M4 两种内核的异构架构,在实现高性能且灵活的多核架构以及图像处理能力基础...
教程 1、stm32单片机之开发板介绍教程 1、stm32单片机之开发板介绍教程 1、stm32单片机之开发板介绍教程 1、stm32单片机之开发板介绍教程 1、stm32单片机之开发板介绍教程 1、stm32单片机之开发板介绍教程 1、stm32...
阿波罗STM32F767开发板立场实验51到65部分,实验51 FPU测试(Julia分形)实验,实验52 DSP测试实验,实验53 手写识别实验,实验54 T9拼音输入法实验,实验55 串口IAP实验,实验56 USB读卡器(Slave)实验,实验57 USB...
STM320518-单片机开发板uCOS-III V3.03.01系统移值源码
安富莱_STM32-V7开发板_用户手册,含BSP驱动包设计,手册详细。
stm32f030青峰开发板代码,定时器,GPIO,RTC,看门狗,uart,PWM等等例程
STM320518-单片机开发板uCOS-II V2.92.07系统移值源码
stm32f411开发板详细说明手册 Programming-with-Stm32-Getting-Started-with-the-Nucleo.pdf
STM32 开发板 烧写器安装课件 HL-1 STM32智能小车教程 烧写器驱动安装
STM32F401 官方开发板原理图 NUCLEO STM32F401 官方开发板原理图 NUCLEO
嵌入式_优质嵌入式项目之低功耗STM32F411开发板设计_原理图+PCB源文件+例程+驱动
STM32F407IGT6开发板-STM32F407IGT6开发板原理图.pdf