【STM32 .Net MF开发板学习-15】红外遥控智能小车

简介: 我前段时间写了《用PWM驱动智能小车》和《红外遥控器编码识别》两篇博文,分别介绍了如何用PWM驱动直流电机及红外遥控器编码识别,这一次我们把二者结合起来,用红外遥控器遥控智能小车。

我前段时间写了《用PWM驱动智能小车》和《红外遥控器编码识别》两篇博文,分别介绍了如何用PWM驱动直流电机及红外遥控器编码识别,这一次我们把二者结合起来,用红外遥控器遥控智能小车。

在《红外遥控器编码识别》中,我们用面包板搭建简单的电路,来验证红外接收信号,但是放在小车上是不行的,相关器件我们需要进行焊接,最终完成图如下。

image.png

 

我们把智能小车和红外板拼装在一起,最终完成图如下:
image.png

 

需要注意的是,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

 

【本文相关模块或组件】

(1)、小车底盘

 http://item.taobao.com/item.htm?id=7218838776

(2)、四路直流电机驱动器

http://item.taobao.com/item.htm?id=7218717808

(3)、.NET Micro Framework开发板

 http://item.taobao.com/item.htm?id=7117999726

   注:需要红牛开发板固件在 V1.0.0以上

本文源码: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

相关文章
|
6月前
|
Web App开发 前端开发 调度
一款基于 .NET + Blazor 开发的智能访客管理系统
一款基于 .NET + Blazor 开发的智能访客管理系统
|
8月前
stm32学习 3-2 LED流水灯
stm32学习 3-2 LED流水灯
129 4
|
8月前
stm32学习3-1 LED闪烁
stm32学习3-1 LED闪烁
73 4
|
11月前
|
算法
STM32CubeMX PID差速循迹小车
STM32CubeMX PID差速循迹小车
313 1
STM32CubeMX PID差速循迹小车
|
物联网 程序员 语音技术
STM32智能小车(循迹、跟随、避障、测速、蓝牙、wife、4g、语音识别)总结-3
STM32智能小车(循迹、跟随、避障、测速、蓝牙、wife、4g、语音识别)总结
STM32智能小车(循迹、跟随、避障、测速、蓝牙、wife、4g、语音识别)总结-3
|
传感器 语音技术
STM32智能小车(循迹、跟随、避障、测速、蓝牙、wife、4g、语音识别)总结-1
STM32智能小车(循迹、跟随、避障、测速、蓝牙、wife、4g、语音识别)总结
STM32智能小车(循迹、跟随、避障、测速、蓝牙、wife、4g、语音识别)总结-1
|
机器学习/深度学习 人工智能 物联网
【专栏】.NET 技术:开启智能开发的新纪元
【4月更文挑战第29天】本文介绍了.NET技术的起源、核心特性和应用场景。始于2002年,.NET旨在解决开发效率和兼容性问题,发展至今已实现跨平台,包括.NET Core和.NET 5。其核心特性包括跨平台、面向对象、安全可靠、高效性能和易用性。在智能开发领域,.NET应用于人工智能、物联网和智能家居,提供便捷的开发工具和集成其他框架的能力。随着技术演进,.NET将持续在智能开发中发挥关键作用。
63 0
|
机器学习/深度学习 自然语言处理 安全
【专栏】.NET 开发:构建智能应用的关键
【4月更文挑战第29天】本文探讨了.NET开发在构建智能应用中的关键作用,强调了其强大的框架、工具集、高效性能和跨平台支持。通过实例展示了.NET在人工智能、物联网及企业级应用中的应用。同时,指出了.NET开发面临的挑战,如技术更新的学习成本、性能优化、资源管理和安全隐私保护,并提出了应对策略。随着技术进步,.NET将在智能应用领域发挥更大作用,推动创新与便利。
78 0