找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2044|回复: 0
打印 上一主题 下一主题
收起左侧

刚学会的MSP430F5529lp避障小车,感觉挺不错,顺便捞一手币

[复制链接]
跳转到指定楼层
楼主
这是我用MSP430F5529lp写的避障小车程序,用了两个红外避障,跑起来感觉还行,里面用到了库函数,5529的库函数也分享出来了。
单片机源程序如下:
#include <msp430.h>
#include<msp430f5529.h>
#include <USER/driverlib.h>
#include "USER/gpio.h"
#define CPU_F ((double)8000000)   //外部高频晶振8MHZ
#define delay_us(x) __delay_cycles((long)x)
#define delay_ms(x) __delay_cycles((long)(x*1000.0))

/**
* main.c
*/
void stop(void)//停车
{
    TA0CCR1=800;
    TA0CCR2=800;
    TA0CCR3=800;
    TA0CCR4=800;
    }
void go(void)//前进
{
    TA0CCR1=800;
    TA0CCR2=600;
    TA0CCR3=800;
    TA0CCR4=600;
    }
void tui(void)//后退
{
    TA0CCR1=600;
    TA0CCR2=800;
    TA0CCR3=600;
    TA0CCR4=800;
    }
void zuo(void)//左转
{
    TA0CCR1=800;
    TA0CCR2=700;
    TA0CCR3=800;
    TA0CCR4=600;
    }
void you(void)//右转
{
    TA0CCR1=800;
    TA0CCR2=600;
    TA0CCR3=800;
    TA0CCR4=700;
    }
void zuo1(void)//大幅度左转
{
    TA0CCR1=800;
    TA0CCR2=800;
    TA0CCR3=800;
    TA0CCR4=550;
    }
void you1(void)//大幅度右转
{
    TA0CCR1=800;
    TA0CCR2=550;
    TA0CCR3=800;
    TA0CCR4=800;
    }

void bizhang(void)
{
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1);
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2);
    if(GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1)&&GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//都没有检测到障碍
    {
        go();
    }
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1) && GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2))//同时检测到障碍
        {
            stop();
            delay_ms(1000);
            tui();
            delay_ms(2000);
            you();
            delay_ms(1200);
            go();

        }
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1))//P4.1检测到障碍(左检测到障碍)
   {
       zuo1();
        delay_ms(800);
        go();
    }
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//P4.2检测到障碍(右检测到障碍)
    {
         you1();
        delay_ms(800);
        go();
    }
    else stop();

}

int main(void)
{
     bizhang();
    WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗
    P1SEL|=(BIT2+BIT3+BIT4+BIT5);
    P1DIR|=(BIT2+BIT3+BIT4+BIT5);
    P1OUT&=~(BIT2+BIT3+BIT4+BIT5);

    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN1);
    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN2);

    TA0CCR0=1000;
    TA0CCTL1=OUTMOD_7;
    TA0CCTL2=OUTMOD_7;
    TA0CCTL3=OUTMOD_7;
    TA0CCTL4=OUTMOD_7;

    TA0CTL=TASSEL_2+MC_1;

    while(1)
    {
        bizhang();
    }

}

屏幕截图 2021-08-05 141313.png (32.1 KB, 下载次数: 128)

屏幕截图 2021-08-05 141313.png

屏幕截图 2021-08-05 141244.png (85.32 KB, 下载次数: 130)

屏幕截图 2021-08-05 141244.png

避障.rar

723.26 KB, 下载次数: 33, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表