四轮循迹小车基础程序

 本程序硬件使用:

  1. MCU:STC12系列单片机
  2. 驱动:LM298模块
  3. 传感器:四组光电对管传感器,使用数字输出端
  4. 电机:直流减速电机。采用两侧驱动方式
#include "STC12C5A60S2.H"

// 该小车使用LM298模块驱动两侧直流电机
// LM298控制端 端口映射
sbit ENA=P0^0;    //使能端A
sbit ENB=P0^1;    //使能端B
sbit IN1=P1^0;    //四个控制端
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;

// 寻迹光电对管数字输出端 端口映射
// 车头部 共计4个光电对管
sbit LeftOutside=P2^0;    //左外侧
sbit LeftInside=P2^1;     //左内测
sbit RightINside=P2^2;    //右内测
sbit RightOutside=P2^3;   //右外侧

// 两侧电机工作状态宏定义
#define LeftWork {ENA=1;IN1=1;IN2=0;}    //左侧前进
#define RightWork {ENB=1;IN3=3;IN4=0;}   //右侧前进
#define LeftStop {ENA=0;IN1=0;IN2=0;}    //左侧停止
#define RightStop {ENB=0;IN3=0;IN4=0;}   //右侧停止
#define LeftBack {ENA=1;IN1=0;IN2=1;}    //左侧后腿
#define RightBack {ENB=1;IN1=0;IN2=1;}   //右侧停止

//整车工作状态函数

void Forward(){    //前进
	LeftWork;
	RightWork;
}

void Stop(){      //停止
	LeftStop;
	RightStop;
}

void LeftTurnHigh(){    //左转弯 大弯,
	LeftStop;
	RightWork;	
}

void RightTurnHigh(){    //右转弯 大弯
	LeftWork;
	RightStop;
}

void LeftTurnLow(){    //左转弯 小弯
	LeftBack;
	RightWork;
}

void RightTurnLow(){    //右转弯 小弯
	LeftWork;
	RightBack;
}

// 主函数
void main(){
	unsigned char StateFlag=0;    //工作状态标志位
	unsigned char SensorFlag=0;   //传感器状态标志位
    //	StateFlag 	0	没有飞出风险
    //				1	右飞出风险
    //				2	左飞出风险
	while(1){
		SensorFlag=P2 & 0x0f;    //读取传感器状态
		switch (SensorFlag){
            // 全白
			case 0x00:  {        
				if (StateFlag==1) LeftTurnLow();
				else if(StateFlag==2) RightTurnLow();
				else if(StateFlag==0) Forward();
				break;}
		    // 左外压黑线
			case 0x01:	{LeftTurnLow();StateFlag=1;break;}
			// 左内压黑线
			case 0x02:	{LeftTurnHigh();StateFlag=0;break;}
			// 左内外都压黑线
			case 0x03:	{LeftTurnHigh();StateFlag=0;break;}
			// 右内压黑线
			case 0x04:	{RightTurnHigh();StateFlag=0;break;}
			// 右内外都压黑线
			case 0x0c:	{RightTurnHigh();StateFlag=0;break;}
			// 右外压黑线
			case 0x08:	{RightTurnLow();StateFlag=2;break;}
			// 其余状态停车
			case 0x0f:	{Stop();break;}
			
		}		
	}
}

  • 5
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\],这个Arduino四轮循迹小车的组成部分包括:Arduino Nano、L298N电机驱动模块、直流减速电机、万向、亚克力板和TCRT5000寻迹传感器。其中,Arduino Nano是控制主板,L298N电机驱动模块用于控制电机的转动,直流减速电机用于驱动,万向用于增加车辆的灵活性,亚克力板用于搭建车身结构,TCRT5000寻迹传感器用于检测车辆的行驶路径。 根据引用\[2\],L298N电机驱动模块的连线方式可以根据程序中的指示进行连接。例如,ENA=12表示ENA引脚连接到Arduino的12号引脚,OUT1和OUT2分别连接到电机的上下端。具体的连线顺序可能会因为程序的不同而有所差异。 根据引用\[3\],TCRT5000寻迹传感器应该放置在小车的前端,从左到右依次编号为Lb, La, Ra, Rb。这些传感器的VCC引脚连接到Arduino板的5V引脚,GND引脚连接到Arduino板的GND引脚,而A0、A1、A2、A3引脚分别连接到Arduino的A0、A1、A2、A3引脚。 综上所述,这个Arduino四轮循迹小车的组成部分和连线方式可以根据引用中提供的信息进行搭建和连接。 #### 引用[.reference_title] - *1* *2* *3* [Arduino-循迹小车-保姆级教程](https://blog.csdn.net/qq_45882032/article/details/109125648)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值