找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2770|回復(fù): 0
收起左側(cè)

剛學(xué)會(huì)的MSP430F5529lp避障小車(chē),感覺(jué)挺不錯(cuò),順便撈一手幣

[復(fù)制鏈接]
ID:914689 發(fā)表于 2021-8-5 14:25 | 顯示全部樓層 |閱讀模式
這是我用MSP430F5529lp寫(xiě)的避障小車(chē)程序,用了兩個(gè)紅外避障,跑起來(lái)感覺(jué)還行,里面用到了庫(kù)函數(shù),5529的庫(kù)函數(shù)也分享出來(lái)了。
單片機(jī)源程序如下:
#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)//停車(chē)
{
    TA0CCR1=800;
    TA0CCR2=800;
    TA0CCR3=800;
    TA0CCR4=800;
    }
void go(void)//前進(jìn)
{
    TA0CCR1=800;
    TA0CCR2=600;
    TA0CCR3=800;
    TA0CCR4=600;
    }
void tui(void)//后退
{
    TA0CCR1=600;
    TA0CCR2=800;
    TA0CCR3=600;
    TA0CCR4=800;
    }
void zuo(void)//左轉(zhuǎn)
{
    TA0CCR1=800;
    TA0CCR2=700;
    TA0CCR3=800;
    TA0CCR4=600;
    }
void you(void)//右轉(zhuǎn)
{
    TA0CCR1=800;
    TA0CCR2=600;
    TA0CCR3=800;
    TA0CCR4=700;
    }
void zuo1(void)//大幅度左轉(zhuǎn)
{
    TA0CCR1=800;
    TA0CCR2=800;
    TA0CCR3=800;
    TA0CCR4=550;
    }
void you1(void)//大幅度右轉(zhuǎn)
{
    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))//都沒(méi)有檢測(cè)到障礙
    {
        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))//同時(shí)檢測(cè)到障礙
        {
            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檢測(cè)到障礙(左檢測(cè)到障礙)
   {
       zuo1();
        delay_ms(800);
        go();
    }
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//P4.2檢測(cè)到障礙(右檢測(cè)到障礙)
    {
         you1();
        delay_ms(800);
        go();
    }
    else stop();

}

int main(void)
{
     bizhang();
    WDTCTL = WDTPW + WDTHOLD;   // 關(guān)閉看門(mén)狗
    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
屏幕截圖 2021-08-05 141244.png

避障.rar

723.26 KB, 下載次數(shù): 34, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表