0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于CW32的遥控循迹小车

CW32生态社区 来源:CW32生态社区 作者:CW32生态社区 2023-11-17 17:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

例程资料链接如下(群文件也可下载):

BD网盘链接:

https://pan.baidu.com/s/187ePq84u2QjE1bsVPM6i3g?pwd=9jvv

提取码:9jvv

一、实验简介

本实验是使用CW32单片机制作一个入门的遥控循迹小车。遥控采用蓝牙配合手机APP进行遥控。循迹使用一个5路的循迹模块。使用OLED模块进行显示当前小车状态。

二、实验器材

本实验使用到了CW32F030C8小蓝板、智能小车底板、电机驱动模块、OLED模块、DX-BT04-E蓝牙模块、Wch-Link下载调试器、Keil5开发环境。

图片

二、接线图
image.png
image.png
image.png

实验完整接线图:

图片

四、用到的外设

1.串口2:

串口2用于蓝牙模块,使手机和单片机通过蓝牙模块进行串口透传,从 而进行点对点通信

2.高级定时器ATIM:

初始化高级定时器CH1B和CH2B进行PWM波输出,从而达到电机调速目的。

3.基本定时器BTIM1:

初始化基本定时器1,在基本定时器中断服务函数中对循迹模块进行扫描。将扫描的结果保存,以便在循迹模式中使用。

4.IIC1:

IIC1用于外挂OLED显示模块。

五、核心代码

// 基本定时器中断回调函数
// 在回调函数中对循迹模块进行扫描,将循迹模块的状态保存进sensor_data中
void BTIM1_IRQHandler(void)
{
    if (BTIM_GetITStatus(CW_BTIM1, BTIM_IT_OV)) // 判断是否是通道1中断
    {


        BTIM_ClearITPendingBit(CW_BTIM1, BTIM_IT_OV); // 清除中断标志位


        char t = 0x00; // 设置零时变量保存灰度传感器的值


        // 保存灰度传感器的值
        // 采用或运算,检测到黑线将相应的位设置为1
        if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_1))
        {
            t |= 0x08; // 00001000 左边数第一个
        }
        if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_2))
        {
            t |= 0x04; // 00000100 左边数第二个
        }
        if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_3))
        {
            t |= 0x02; // 00000010 左边数以三个
        }
        if (!GPIO_ReadPin(TRACKING_GPIOA, TRACKING_4))
        {
            t |= 0x01; // 00000001 左边数第4个
        }
        if (!GPIO_ReadPin(TRACKING_GPIOC, TRACKING_5))
        {
            t |= 0x10; // 00010000 左边数第5个
        }
        sensor_data = t; // 将灰度传感器的值赋值给sensor_data
    }
}


// 串口1中断处理函数
void UART1_IRQHandler(void)
{
    unsigned char TxRxBuffer;
    if (USART_GetITStatus(CW_UART1, USART_IT_RC) != RESET)
    {
        USART_ClearITPendingBit(CW_UART1, USART_IT_RC); // 清除中断标志位
        TxRxBuffer = USART_ReceiveData_8bit(CW_UART1);  // 将接收到的数据放入TxRxBuffer


        USART_RX_BUF[rxIndex] = TxRxBuffer; // 将接收到的数据放入缓冲区


        if (rxIndex < USART_REC_LEN - 1) // 做数据长度的限制,留一个字节用于结束字符或者溢出检测
        {
            // 接收到的字符包含 n 或者 r 结束接收
            if (USART_RX_BUF[rxIndex - 1] == 'n' || USART_RX_BUF[rxIndex - 1] == 'r')
            {
                USART_RX_BUF[rxIndex] = '�'; // 在最后一个字节加上空字符,表示字符串结束
            }
            else
            {
                rxIndex++;
            }
        }
        rxIndex = 0; // 清除数据标志
        flag = 1;    // 清除
    }

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 遥控
    +关注

    关注

    11

    文章

    291

    浏览量

    59438
  • 循迹小车
    +关注

    关注

    42

    文章

    65

    浏览量

    69508
  • CW32
    +关注

    关注

    1

    文章

    324

    浏览量

    1958
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问CW32中的CW是啥意思?

    CW32中的CW是啥意思?
    发表于 02-02 07:10

    基于CW32的蓝牙无刷遥控车案列

    产品应用案例简介: 聚焦CW32,着手PT2432,驱动无刷电机,集成CH571F,赋能蓝牙交互,串联智能终端,形成组合拳,对标外星科技。‍ 开源协议: MIT 一、外观展示 二、电路展示
    发表于 01-15 08:22

    CW32仿真器是什么?

    CW32仿真器是什么
    发表于 01-05 08:04

    CW32芯片有哪些外设接口?

    CW32芯片有哪些外设接口
    发表于 12-29 07:23

    请问CW32芯片的特性有哪些?

    CW32芯片的特性有哪些?
    发表于 12-26 06:14

    请问CW32的SPI时钟频率可调吗?

    CW32的SPI时钟频率可调吗?
    发表于 12-15 06:03

    CW32单片机如何让生活更便捷

    这是一种全新的生活方式,它通过接收并处理传感器的数据,以控制智能马桶的所有功能。感谢CW32单片机,我们可以在日常生活中无缝地融入这种新的科技。 决定我们如何生活的,已经不再只是我们的选择,更是我们
    发表于 12-11 06:11

    CW32时钟运行中失效检测的流程是什么?CW32时钟运行中失效检测注意事项有哪些呢?

    CW32时钟运行中失效检测的流程是什么?CW32时钟运行中失效检测注意事项有哪些?
    发表于 12-10 07:22

    关于CW32 互补PWM 程序调试的疑问求解

    在调试CW32 输出互补PWM 的程序时,发现在线调试时波形输出正常,但是当把程序在下到CW32 自行运行时,波形输出不正常,这是什么原因导致的呢?
    发表于 12-08 07:02

    基于芯源CW32 MCU的LED闪烁示例及代码分析

    最近我在项目中使用了芯源的CW32 MCU,这是一款非常适合物联网和低功耗应用的微控制器。在初步学习和使用中,我做了一个简单的LED闪烁实验,通过这篇帖子给大家分享一下代码及相关的配置步骤。 硬件
    发表于 12-04 06:52

    CW32 MCU温度监测应用

    最近,我在项目中使用CW32 MCU,来实现一个简单的温度监测系统。CW32的灵活性和性能让我在这个应用中得心应手。以下是我的实现过程和代码示例。 应用简介本项目通过连接一个温度传感器LM35来实时
    发表于 12-03 08:03

    cw32 systick怎么用?

    cw32 systick怎么用
    发表于 12-01 08:10

    CW32L012小型机器人控制评估板活动 四足机器人+智能小车 开箱评测

    一、评测前言 非常感谢CW32生态社区,开源分享了许多比较好玩、优质的项目。这次活动都尾声了还能有幸申请购买到 四足机器人+小车-智能小车(套件数量不多)的评测套件,多谢C32生态社区的大力支持
    发表于 11-24 23:44

    CW32 MCU用什么IDE开发?

    推荐使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE开发CW32 MCU应用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM则需要安装CW
    发表于 11-12 07:52

    CW32 MCU有哪些系列?

    目前CW32 MCU有通用高性能MCU、安全低功耗MCU、无线射频MCU等3个系列。其中射频MCU集成了无线收发器,主要包括CW32R031(2.4GHz BLE-Lite)系列和CW32W031(Sub-1G)系列。
    发表于 11-12 07:34