项目相关链接:
1.智能小车L298N驱动
2.智能小车寻迹驱动
3.智能小车蓝牙模块驱动
4.智能小车超声波测距驱动
(一)效果展示
一个只能走的小车是当然不足以称之为智能小车的,我们需要给小车安上一个眼睛。这是第一次作为一个开发者让机器可以听我的话。
(二)寻迹模块驱动
这部分代码用于寻迹 设定为沿白线走
白色(亮色)返回1 黑色(暗色)返回0
remote.h
#ifndef __REMOTE_H
#define __REMOTE_H
#include "sys.h"
#define left GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)//读取PC13状态
#define right GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_14)//读取PC14状态
void remote_Init(void);//IO初始化
#endif
remote.c
#include "stm32f10x.h"
#include "remote.h"
#include "sys.h"
#include "delay.h"
void remote_Init(void) //IO初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能PORTC
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC14,13
}
main.c
//寻迹测试 小车沿白线走
#include "sys.h"
#include "delay.h"
#include "motor.h"
#include "PWM.h"
#include "remote.h"
#include "usart.h"
int main(void)
{
TIM4_PWM_Init(899,0);
delay_init(); //延时函数初始化
Motor_12_Config(); //298电机驱动初始化
remote_Init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
if(right==1&left==1) //在线上
{
Motor_1_PRun();
Motor_2_PRun(); }
if(left==0&right==1) //左出界
{
Motor_right();
delay_ms(5);
}
if(right==1&left==0) //右出界
{
Motor_left();
delay_ms(5);
}
if(right==0&left==0) //前方无路
{
Motor_1_STOP();
Motor_2_STOP()
delay_ms(1000);
}
}
以上代码仅为相应部分,其他代码在其他文章中,请自寻。
如果一个小车都控制不了又怎么去控制自己的人生。