四驱51红外循迹小车代码
时间: 2023-12-20 08:28:45 浏览: 45
这些引用内容提供了关于基于stm32c8t6芯片的四驱51红外循迹小车代码的一些信息。其中引用提供了一个可用于大学生学院里开设的一些小型智能车比赛的四路循迹的智能小车代码,自己修改小车速度和循迹路数。引用则是作者分享的基于stm32c8t6芯片的循迹小车,作者计划在循迹小车的功能上继续编写红外避障的功能,拓宽小车功能。引用则是一个.h文件,其中定义了一些函数和变量,如motor_init()、CarMove()、CarGo()等,这些函数和变量可以用于控制小车的运动。
综上所述,四驱51红外循迹小车代码是用于控制基于stm32c8t6芯片的小车进行循迹和运动的代码。这些代码可以用于大学生学院里开设的一些小型智能车比赛,也可以用于个人学习和研究。如果你想了解更多关于四驱51红外循迹小车代码的信息,可以参考以上提供的引用内容。
相关问题
51红外循迹小车代码
以下是基于51芯片的红外循迹小车代码,包括寻线和跟随功能:
```c
#include "reg52.h"
#include "delay.h"
sbit Finder_Left = P2^0;
sbit Finder_Right = P2^1;
sbit Flow_Left = P2^3;
sbit Flow_Right = P2^2;
extern char speed_Right;//0~40
extern char speed_Left;//0~40
//寻线功能
void checkWay(){
//左边触线,左转
if(Finder_Left && !Finder_Right){
speed_Right = 40;
speed_Left = 10;
}
//右边触线,左转
else if(Finder_Right && !Finder_Left){
speed_Right = 7;
speed_Left = 40;
}
//车悬空,停止移动
else if(Finder_Right && Finder_Left){
speed_Right = 0;
speed_Left = 0;
}
//直线,直行
else{
speed_Right = 36;
speed_Left = 36;
}
}
//跟随功能
void flow(){
//左边有人,左转
if(Flow_Right && !Flow_Left){
speed_Right = 40;
speed_Left = 5;
}
//右边有人,右转
else if(Flow_Left && !Flow_Right){
speed_Right = 5;
speed_Left = 40;
}
//车悬空,停止移动
else if(Flow_Right && Flow_Left){
speed_Right = 0;
speed_Left = 0;
}
//人在前方,直行
else{
speed_Right = 40;
speed_Left = 40;
}
}
```
c51红外循迹避障小车代码
以下是c51红外循迹避障小车的代码:
```c
//头文件
#include <reg52.h>
#include <intrins.h>
#include "delay.h"
#include "lcd1602.h"
#include "ir.h"
#include "motor.h"
#include "ultrasonic.h"
//宏定义
#define uchar unsigned char
#define uint unsigned int
//函数声明
void init();
void display();
//全局变量
uchar mode = 0; //模式选择
uchar speed = 50; //小车速度
uchar distance = 0; //超声波距离
//主函数
void main()
{
init(); //初始化
while(1)
{
display(); //显示信息
switch(mode)
{
case 0: //循迹模式
if(ir() == 0x1c) //左1右1
left_forward(speed);
else if(ir() == 0x18) //左0右1
left_forward(speed/2), right_stop();
else if(ir() == 0x1e) //左1右0
left_stop(), right_forward(speed/2);
else if(ir() == 0x0c) //左0右0
left_backward(speed/2), right_forward(speed/2);
else if(ir() == 0x1d) //左1右2
left_forward(speed/2), right_backward(speed);
else if(ir() == 0x19) //左2右1
left_backward(speed), right_forward(speed/2);
else if(ir() == 0x1f) //左2右2
left_stop(), right_stop();
break;
case 1: //避障模式
if(ultrasonic() < 30) //前方有障碍物
left_backward(speed), right_forward(speed), delay_ms(500);
else //前方无障碍物
left_forward(speed), right_forward(speed);
break;
}
}
}
//初始化函数
void init()
{
lcd_init(); //LCD1602初始化
ir_init(); //红外循迹初始化
motor_init(); //电机初始化
ultrasonic_init(); //超声波初始化
}
//显示函数
void display()
{
lcd_write_string(0, 0, "Mode: ");
lcd_write_string(6, 0, mode == 0 ? "Track" : "Avoid");
lcd_write_string(0, 1, "Speed: ");
lcd_write_data(speed/10 + '0');
lcd_write_data(speed%10 + '0');
lcd_write_string(6, 1, "Dist: ");
distance = ultrasonic();
lcd_write_data(distance/10 + '0');
lcd_write_data(distance%10 + '0');
}
--相关问题--: