OpenEdv-开源电子网

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

利用灰度的巡线小车不会转弯

[复制链接]

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2019-7-12
在线时间
40 小时
发表于 2019-7-24 10:55:57 | 显示全部楼层 |阅读模式
l298n驱动电机
#include "motor.h"
#include "timer.h"
#include "stm32f10x.h"  
#include "stm32f10x_rcc.h"
#include "delay.h"

void Motor_12_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;  
  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD, ENABLE);
       
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;   //PB6 ×óê1Äüòy½Å    PB7óéê1Äüòy½Å
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        GPIO_SetBits(GPIOD,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6);
       
}

void Go_Ahead(void)
{
        TIM_SetCompare1(TIM4,400);         
        motor_In1=0;
        motor_In2=1;
       
        TIM_SetCompare2(TIM4,400);
        motor_In3=1;
        motor_In4=0;
       

}

void Move_Back(void)
{
        TIM_SetCompare1(TIM4,20);         
        motor_In1=1;
        motor_In2=0;
       
        TIM_SetCompare2(TIM4,20);
        motor_In3=0;
        motor_In4=1;

}

void Turn_Right(void)
{
TIM_SetCompare1(TIM4,400);         
        motor_In1=0;
        motor_In2=1;
       
        TIM_SetCompare2(TIM4,200);
        motor_In3=1;
        motor_In4=0;
       
}

void Turn_Left(void)
{
        TIM_SetCompare1(TIM4,200);         
        motor_In1=0;
        motor_In2=1;
       
        TIM_SetCompare2(TIM4,400);
        motor_In3=1;
        motor_In4=0;
       
}

void Stop_stop(void)
{
        TIM_SetCompare1(TIM4,400);
        motor_In1=0;
        motor_In2=0;
       
        TIM_SetCompare2(TIM4,400);
        motor_In3=0;
        motor_In4=0;


}

主函数
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
#include "motor.h"
#include "adc.h"



/************************************************
ALIENTEKÕ½½¢STM32¿a·¢°åêμÑé9
PWMêä3öêμÑé  
¼¼êõÖ§3Ö£owww.openedv.com
ìÔ±|μêÆì£ohttp://eboard.taobao.com
1Øע΢DÅ1«Öúƽì¨Î¢DÅoÅ£o"ÕyμãÔ-×ó"£¬Ãa·Ñ»ñè¡STM32×êáÏ¡£
1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾  
×÷ÕߣoÕyμãÔ-×ó @ALIENTEK
************************************************/

       
int main(void)
{
               
  u16 adc1;
        u16 adc2;
        u16 adc3;
        delay_init();                     //Ñóê±oˉêy3õê¼»ˉ          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÖD¶ÏóÅÏ輶·Ö×éÎa×é2£o2λÇàÕ¼óÅÏ輶£¬2λÏìó|óÅÏ輶
        uart_init(115200);                 //′®¿ú3õê¼»ˉÎa115200
        LED_Init();                             //LED¶Ë¿ú3õê¼»ˉ
                        
  Adc_Init();                          //ADC3õê¼»ˉ
         
        TIM4_Int_Init(9999,7199);
        TIM4_PWM_Init(899,0);       
       
         
        Motor_12_Config();
         while(1)
         {
                adc1=Get_Adc_Average(ADC_Channel_1,10);  //ÖD
                adc2=Get_Adc_Average(ADC_Channel_5,10);         //óò
                adc3=Get_Adc_Average(ADC_Channel_6,10);         //×ó
                 
        printf("í¨μà1=%d\n,í¨μà2=%d\n,í¨μà3=%d\n",adc1,adc2,adc3);
               
                        
//                 if(adc1<1400&&adc2>1400&&adc3<1400)
//                 {
//                         Go_Ahead();
//                         
//                 }

//                else if(adc1>1400&&adc2<4100&&adc3>1400)
//                {
//                         Turn_Left();
//                }

//                else if(adc1>1100&&adc2>1100&&adc3<1100)
//                {       
//                                Turn_Right();
//                }
//               
//                else if(adc1<1100&&adc2<1100&&adc3<1100)
//                {
//                                Stop_stop();
//               
//                }       

                 
                 
                 
                 
                          if(adc2>1400)
                 {
                         Go_Ahead();
                         
                 }
                 
                                 else if(adc2>1400&&adc3>1400)
                {
                         Turn_Left();
                }
}

                 
         
       
       
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 11:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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