OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2874|回复: 12

求大神看看我的循迹程序有什么问题

[复制链接]

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-8-7
在线时间
7 小时
发表于 2018-8-7 22:26:58 | 显示全部楼层 |阅读模式
2金钱
小白初学32写了个循迹小车程序,但是实现不了循迹功能,弄了好久不知道问题出在哪,求助各位大神帮忙看一下什么问题

#include "delay.h"
#include "pwm.h"
#include "key.h"
#include "iopz.h"
#include "xd.h"

void KEY_TS1(void);         //起始速度初始化
void GPIO_init(void);
void HWXJ(void);            //红外循迹初始化
u8 flag=1,F,Z;

int main(void)
{   
    delay_init();            
  GPIO_init();               
    KEY_Init();
    TIM3_PWM_Init(1439,0);      //不分频。PWM频率=72000/(1439+1)=50Khz
    while(flag)
    {
      KEY_TS1();           //按键设置起始速度:快,慢
    }
  while(1)
    {   
        HWXJ();                 
    }
}

//* 按键控制起始速度 *//
void KEY_TS1(void)
{      
    if(KEY0==0)            //KEY0高速模式
    {
        delay_ms(5);
        if(KEY0==0){
      TIM_SetCompare1(TIM3,1400);
            TIM_SetCompare2(TIM3,1400);
            flag=0,Z=1;
        while(!KEY0);
        }
    }
   
    if(KEY1==0)             //KEY1低速模式
    {
        delay_ms(5);
        if(KEY1==0){
          TIM_SetCompare1(TIM3,1000);
            TIM_SetCompare2(TIM3,1000);
            flag=0,Z=0;
        while(!KEY1);
        }
    }
}

//* 红外循迹 *//
void HWXJ(void)
{
      if((HW0==1)&&(HW1==1)&&(HW2==1)&&(HW3==1))    //停止
        {
             TIM_SetCompare1(TIM3,0);
             TIM_SetCompare2(TIM3,0);
        }
        if((HW0==1)&&(HW1==1)&&(HW2==0)&&(HW3==1))    //前进
        {
          if(Z){                             //高速
               TIM_SetCompare1(TIM3,1200);
           TIM_SetCompare2(TIM3,1200);
      }
        else {                             //低速
           TIM_SetCompare1(TIM3,1000);
           TIM_SetCompare2(TIM3,1000);
        }
        if((HW0==0)&&(HW1==1)&&(HW3==1))     //中左转
        {
               TIM_SetCompare1(TIM3,1300);
               TIM_SetCompare2(TIM3,0);
        }
        if((HW0==1)&&(HW1==0)&&(HW3==1))     //小左转
        {
               TIM_SetCompare1(TIM3,1100);
               TIM_SetCompare2(TIM3,0);
        }            
        if((HW0==0)&&(HW1==0)&&(HW3==1))     //大左转
        {
               TIM_SetCompare1(TIM3,0);
               TIM_SetCompare2(TIM3,1430);
        }        
        if((HW0==1)&&(HW1==1)&&(HW3==0))     //小右转
        {
               TIM_SetCompare1(TIM3,0);
               TIM_SetCompare2(TIM3,1100);
        }
    }
}
HW0对应左边第一根红外管,以此类推,另HW2为中间正前方的红外管,比其他四根管子突出一点,

因为右边第二个的红外管坏了,所以暂时只弄了小右转,电机用的是直流电机

最佳答案

查看完整内容[请看2#楼]

谢谢大佬,问题解决了,硬件出的问题
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-8-7
在线时间
7 小时
 楼主| 发表于 2018-8-7 22:26:59 | 显示全部楼层
323232 发表于 2018-8-8 15:14
什么都不给它检测   停止都进不去吗?那你看看传感器是不是检测到0没检测到1     会不会弄反?

谢谢大佬,问题解决了,硬件出的问题
回复

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-8-7
在线时间
7 小时
 楼主| 发表于 2018-8-7 22:42:49 | 显示全部楼层
void GPIO_init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB, ENABLE);         //使能PC,PB端口时钟
       
        //电机负转引脚//
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_4;                           
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;        
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);                                          //推挽输出,IO口速度为50MHz
  GPIO_ResetBits(GPIOC,GPIO_Pin_1|GPIO_Pin_4);                                                  //PC.1 输出低
       
        //红外管引脚//
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;         
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;            
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;       
  GPIO_Init(GPIOB, &GPIO_InitStructure);                 //上拉输入,IO口速度为50MHz  
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-8-8 01:04:09 | 显示全部楼层
调试找问题。你这样发一堆代码就想解决问题,劝你别发。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-8 08:43:58 | 显示全部楼层
多调试!巨简单的东西,不就处理传感器的值吗....
猪猪熊呢?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-8 08:45:15 | 显示全部楼层
323232 发表于 2018-8-8 08:43
多调试!巨简单的东西,不就处理传感器的值吗....

你的现象是什么?为什么你的传感器引脚是上拉输入?告诉我为什么上拉?
猪猪熊呢?
回复

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-8-7
在线时间
7 小时
 楼主| 发表于 2018-8-8 11:51:12 | 显示全部楼层
323232 发表于 2018-8-8 08:45
你的现象是什么?为什么你的传感器引脚是上拉输入?告诉我为什么上拉?

现象就是传感器没有起到控制转弯的效果,引脚我的红外传感器检测到黑线是低电平,没检测到是高电平,所以设置为浮空与上拉区别应该不大吧,我也试过浮空,但是效果差不多
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-8 12:24:59 | 显示全部楼层
podo 发表于 2018-8-8 11:51
现象就是传感器没有起到控制转弯的效果,引脚我的红外传感器检测到黑线是低电平,没检测到是高电平,所以 ...

把黑线放到传感器旁边看引脚有没有输入信号,就是你说的低电平,先排除传感器问题
猪猪熊呢?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-8 12:28:35 | 显示全部楼层
调试看看你写的这些if   进去没有,      单独试试你写的PWM程序能不能运行
猪猪熊呢?
回复

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-8-7
在线时间
7 小时
 楼主| 发表于 2018-8-8 14:49:37 | 显示全部楼层
323232 发表于 2018-8-8 12:28
调试看看你写的这些if   进去没有,      单独试试你写的PWM程序能不能运行

传感器我检测过是能用的,有输入信号,其他语句都没错,调试时就是循迹里的if语句进不去,我现在在想循迹是不是不能用if来写?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-8 15:14:34 | 显示全部楼层
什么都不给它检测   停止都进不去吗?那你看看传感器是不是检测到0没检测到1     会不会弄反?
猪猪熊呢?
回复

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-8-7
在线时间
7 小时
 楼主| 发表于 2018-8-8 15:31:31 | 显示全部楼层
323232 发表于 2018-8-8 15:14
什么都不给它检测   停止都进不去吗?那你看看传感器是不是检测到0没检测到1     会不会弄反?

没有弄反,我用万用表检测过,停止也进不去
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-8-9 01:33:50 | 显示全部楼层
看数据手册!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-13 10:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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