找回密码
 注册
关于网站域名变更的通知
查看: 425|回复: 2
打印 上一主题 下一主题

MSP430F5529lp避障小车

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-9-28 13:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
这是我用MSP430F5529lp写的避障小车程序,用了两个红外避障,跑起来感觉还行,里面用到了库函数,5529的库函数也分享出来了。+ v( @( g4 E8 J/ a) V# v8 t
单片机源程序如下:, u* S% N* [* |& e3 g- q
#include <msp430.h>
! |9 h* B* n/ M) G% _/ Y4 o#include<msp430f5529.h>
& l8 y! U/ v2 J, [  K! h#include <USER/driverlib.h>6 w/ l: z' U+ p* ^  B: B
#include "USER/gpio.h"4 K* q4 y$ F, [
#define CPU_F ((double)8000000)   //外部高频晶振8MHZ8 H; x: d7 p7 z/ v! [/ }
#define delay_us(x) __delay_cycles((long)x): F7 V( ^2 B! F3 K8 ^. x
#define delay_ms(x) __delay_cycles((long)(x*1000.0))
4 P# F9 L% G4 B  M% v0 r/ g( q/ i
/**% @; X$ c7 p; [( c& l
* main.c& Q- d3 G# O  \( f9 D* t
*/
) R& G; Y6 B+ `7 u  ]; C" S$ nvoid stop(void)//停车+ k$ }6 y) R" P  ]' g+ b
{
7 k: ^3 g) Z, l7 A    TA0CCR1=800;
& f: ]9 ]* L# k( H% m, B/ a" O    TA0CCR2=800;
0 G& Z5 H1 o. q2 e0 ?/ x    TA0CCR3=800;2 h/ e& f( ], L1 E8 _
    TA0CCR4=800;
3 l9 o1 M% |  O    }
) B, X& a+ n9 yvoid go(void)//前进
  @) N: W% n5 _3 e! R% a! n{; F! `1 J& u% M1 n! [( T2 M
    TA0CCR1=800;, P" G) u- d3 Q' ]
    TA0CCR2=600;
' H+ T* r1 g8 y% \    TA0CCR3=800;" z4 E) _5 j1 S1 }- [
    TA0CCR4=600;
+ o5 x0 D5 P/ k" I    }
, Q' _3 `" y/ @- o' Qvoid tui(void)//后退
% D+ D' {& M6 J( d{
# x* n5 k8 A& W5 \% T! ?    TA0CCR1=600;
; B( W7 u1 m4 l: U    TA0CCR2=800;
6 ?. S' E2 [4 ?2 v  U/ b    TA0CCR3=600;' T6 G$ m# O/ W  A% \9 G# I
    TA0CCR4=800;
( J2 m. G% g+ d5 @    }  R7 G' D( {& ]1 r7 c3 d
void zuo(void)//左转
9 B0 U, R, r- M7 K! T8 e{
+ Y2 S! P. ?4 ]1 E    TA0CCR1=800;
4 H' c$ o! c0 l$ [$ m' l, r* w    TA0CCR2=700;( l7 N9 s! X4 U5 Z2 s! Y: w
    TA0CCR3=800;' z" {0 t! \4 u1 {5 c
    TA0CCR4=600;0 u+ b! j0 W7 K$ t+ x
    }
3 r) k+ t/ l& ~. k/ i! ?8 W: Nvoid you(void)//右转5 J2 O" R$ b1 g0 f6 Q  e2 L
{
/ H: ]0 V0 G/ e& l8 t* \! {. h$ m    TA0CCR1=800;, F( m; @! u1 x4 x  l- L  `
    TA0CCR2=600;( {# R% K) e6 Q9 b/ x5 u0 {8 c. L
    TA0CCR3=800;
6 ]8 j6 G: W" p    TA0CCR4=700;
) F7 [  r9 n, Q+ t2 G    }
, G4 @8 f6 F% m5 z( Avoid zuo1(void)//大幅度左转
1 l, `2 C& y7 Q; d/ s: a{
* O6 o& [9 W! I7 ]    TA0CCR1=800;$ u# X6 q$ y. Q9 _1 Q6 E5 I# v
    TA0CCR2=800;
. x4 g5 b: L9 M( }  ?    TA0CCR3=800;
  V5 F4 \2 {. A1 o$ C/ Z2 S" ^% i    TA0CCR4=550;
1 ?+ i1 b- j- ]+ V+ @( f, t% U- B    }
3 k0 q1 s& v, s2 A6 hvoid you1(void)//大幅度右转- J. x8 [- @2 Z0 Y- d& b; Z
{
( f0 K6 [$ h9 V6 K    TA0CCR1=800;% {2 H' d, g, `  x
    TA0CCR2=550;3 b: x1 p5 p" _. O% R
    TA0CCR3=800;
3 w( t/ _* S3 |( P) C( l8 F; W' q* e    TA0CCR4=800;- y5 v8 G; X6 R' B
    }7 x9 B- [: i2 {0 I+ l- H! {
3 |" M- [4 I, s# X. g- r& n
void bizhang(void)* _1 }: y3 Y5 j3 L
{) j5 P; K4 I6 m/ ]1 U  ^
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1);# e9 P! {7 s' Y0 k
    GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2);" l! f" T/ ^; p! T4 ~
    if(GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1)&&GPIO_INPUT_PIN_HIGH==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//都没有检测到障碍) H! R; U8 [3 Q2 y% Q& \8 v# {0 I8 {
    {
8 y# C* C  L( J6 b6 m1 w/ H  ^  P        go();% n: [1 v: o- @% y1 B& ~
    }
) p2 ]0 i0 j+ {  B# \. a+ W; ~7 h6 c3 g& h    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN1) && GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue (GPIO_PORT_P4, GPIO_PIN2))//同时检测到障碍' X! H0 m- _9 R' m. d- [
        {2 U$ z( ?9 T2 s1 K
            stop();
- _; U6 w. F3 j* r            delay_ms(1000);* u' z1 ^$ w& n, [8 H7 X& ]6 Q/ A
            tui();4 A* u6 t4 n2 T8 @( b1 @: L5 k9 P
            delay_ms(2000);; B; A8 L) t4 F0 D* u1 q! i* k9 Y. o
            you();
$ c. _+ E8 ~/ ~% u7 A. Z            delay_ms(1200);
( A5 [0 b7 {0 s. ^. R            go();! Z/ M8 f: j- e3 W5 i4 {8 c) N; C

) m& p* z: ~/ ^# N8 ?5 }* z        }2 ]) H0 |. e1 u% o  v
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN1))//P4.1检测到障碍(左检测到障碍)
6 u7 `; e$ H# i3 x8 w  V- d; e   {0 u0 a2 h: d2 O$ p
       zuo1();5 _2 O' m! c% I& q
        delay_ms(800);5 W; j: g0 N- N* G$ j, g+ P. l
        go();
( F$ `2 N7 }+ H% t) ]7 t1 ^* t    }3 W5 S: G5 {( G5 |# e- Y9 |8 X
    else if(GPIO_INPUT_PIN_LOW==GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN2))//P4.2检测到障碍(右检测到障碍)
# e; b& t; Z  y9 m$ O5 E. ?% U0 r    {
0 j3 |/ @9 C: [+ _         you1();0 Q- a5 l8 F6 U1 N  k  `$ t+ J
        delay_ms(800);
" b: d# \, T- K        go();+ f5 ^+ `& p! e/ S+ B/ C/ g, H  T; F
    }6 U3 _0 }6 a: B8 H
    else stop();; W1 g9 y  J, ]8 h: l/ P
0 W+ h! |: o8 t
}
4 ^3 V& S  u6 a* @# K6 ^% q4 C
" y7 D7 Y' i, Cint main(void)
' N+ Z' K. h; w7 z, d# h{/ N1 [3 c8 v+ L7 N
     bizhang();
# p/ G8 A2 {+ G, D    WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗% ~/ U& C- F! o: j# n* @* E7 D; @  T
    P1SEL|=(BIT2+BIT3+BIT4+BIT5);; v6 C9 I/ K9 ]' k
    P1DIR|=(BIT2+BIT3+BIT4+BIT5);
" h( w& ^7 I* y2 a    P1OUT&=~(BIT2+BIT3+BIT4+BIT5);9 `! g3 Y1 k( r7 _
( l, N3 ]) p  }* K3 T6 q
    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN1);3 w; T4 ?) z) G9 N
    GPIO_setAsInputPin (GPIO_PORT_P4, GPIO_PIN2);
9 e4 i$ M& O; g/ m0 F1 h8 i  ~5 `  v8 `
    TA0CCR0=1000;* X: M/ ]/ \4 s7 d+ ?% x9 x
    TA0CCTL1=OUTMOD_7;3 l6 v0 ^6 J3 b; z
    TA0CCTL2=OUTMOD_7;& D$ X$ u/ m* Q$ O, J1 C
    TA0CCTL3=OUTMOD_7;( o# g5 c, y- w# w: x
    TA0CCTL4=OUTMOD_7;
; I) a: @# l" g+ ?/ }: M, I- j5 |6 G8 o4 n. w
    TA0CTL=TASSEL_2+MC_1;" c& e. s; B' B; m
$ |7 _: T0 c: q
    while(1)% o8 g( d- a8 J* S3 H+ T
    {
/ e& i; z& ]& _0 X. a        bizhang();3 t! @% {5 d+ _* {$ X" s
    }8 D9 G& @2 }8 d
( ^+ k' {9 ?& F6 G9 {' C
}0 [6 V9 n7 |  f( z* a7 n# U3 i
; X. n: z9 O$ q1 J8 _. K0 Q

该用户从未签到

2#
发表于 2021-9-28 14:26 | 只看该作者
路径是怎么设置的2 T; k3 ~  Z- x8 ~

该用户从未签到

3#
发表于 2021-9-28 16:47 | 只看该作者
学习了  感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-4 11:09 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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