找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6134|回复: 3
收起左侧

MSP430F5529入门项目—红外循迹小车程序

[复制链接]
ID:734275 发表于 2020-11-18 20:12 | 显示全部楼层 |阅读模式
小车采用双电机驱动,双路红外循迹,pwm调节占空比以此调速,输于入门级别程序,只涉及i/o口和pwm知识相关知识,可以作为入门练手提升自信。 无标题.png
单片机源程序如下:
  1. // finish 2020/11/3 GaoYuan
  2. #include <msp430f5529.h>

  3. int pwm_l = 20;                                  //给pwm附一个初始值
  4. int pwm_r = 20;
  5. void Keyscan();
  6. int begin=20;


  7. //pwm判断控制
  8. void detect();

  9. int main(void)
  10. {
  11.         WDTCTL = WDTPW + WDTHOLD;              // 关闭看门狗
  12. //初始化
  13.         //motor 正转
  14.           P1DIR |=BIT4+BIT5;//左电机
  15.           P2DIR |=BIT4+BIT5;//右边电机
  16.           P1OUT |=BIT4;
  17.           P1OUT &=~BIT5;
  18.           P2OUT |=BIT4;
  19.           P2OUT &=~BIT5;

  20.           P1DIR |=BIT0;//led
  21.           P4DIR |=BIT7;

  22.           P1DIR |=BIT2+BIT3;//pwm
  23.           P1SEL |= BIT2+BIT3;

  24.           P2DIR &=~(BIT2+BIT3) ;  //left,right detection
  25.           P2OUT |= BIT2+BIT3;
  26.           P2REN |=BIT2+BIT3;

  27.           TA0CCR0 = 124;                       //PWM周期定义

  28.         TA0CTL = TASSEL_1 + MC_1 + TACLR;      //参考时钟选择ACLK,增计数模式,清除TAR计数器

  29.         while(1)
  30.         {
  31.             TA0CCTL1=OUTMOD_7;
  32.             TA0CCTL2=OUTMOD_7;
  33.             detect();
  34.             TA0CCR1=pwm_l;
  35.             TA0CCR2=pwm_r;
  36.             __delay_cycles(30000);
  37.             pwm_r=begin;
  38.             pwm_l=begin;
  39.         }
  40. }


  41. void detect()
  42. {
  43.     {

  44.         if(  (P2IN & BIT2) && ( (P2IN & BIT3)==0) )//右偏
  45.         {
  46.             P4OUT |=BIT7;
  47.             __delay_cycles(10000);
  48.             P4OUT &=~BIT7;//led down 4.7
  49.             pwm_l=pwm_l+20;
  50.         }
  51.     } if( ((P2IN & BIT2) ==0) && (P2IN & BIT3)   )//左偏
  52.         {

  53.             P1OUT |=BIT0;
  54.             __delay_cycles(10000);
  55.             P1OUT &=~BIT0;//led down 1.0
  56.             pwm_r=pwm_r+20;
  57.          }

  58. }

复制代码

car_control.zip (78.17 KB, 下载次数: 117)
回复

使用道具 举报

ID:935312 发表于 2021-7-12 16:40 | 显示全部楼层
为什么循迹有效但小车不动呢
回复

使用道具 举报

ID:954312 发表于 2021-7-21 22:03 | 显示全部楼层
左转端口P2的设置为什么是先设置输入,再定义输出然后再允许上拉电阻?
回复

使用道具 举报

ID:1038285 发表于 2022-7-12 17:00 | 显示全部楼层
控制不了转速
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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