标题:
为什么加了和寻迹相关的单片机代码之后,小车的速度变慢了
[打印本页]
作者:
新人小白
时间:
2022-6-5 10:20
标题:
为什么加了和寻迹相关的单片机代码之后,小车的速度变慢了
为什么加了和寻迹相关的代码之后,小车的速度变慢了?有什么解决的方法吗?
int GraysensorRPin = 18;
int GraysensorLPin = 14;
int motor_01 = 10;
int motor_02 = 6;
int motor_03 = 5;
int motor_04 = 9;
int start_stop_flag = 0;
int stop_num = 0;
int stop_clear_num = 0;
void right();
void left();
void forwards();
void stop();
void setup() {
pinMode(GraysensorRPin,INPUT);
pinMode(GraysensorLPin,INPUT);
pinMode(motor_01,OUTPUT);
pinMode(motor_02,OUTPUT);
pinMode(motor_03,OUTPUT);
pinMode(motor_04,OUTPUT);
}
void loop() {
if(!(digitalRead(GraysensorRPin)) &&digitalRead(GraysensorLPin))
{
right();
}
if(digitalRead(GraysensorRPin) && !(digitalRead(GraysensorLPin)))
{
left();
}
if( (!digitalRead(GraysensorRPin))&& (!digitalRead(GraysensorLPin)))
{
forwards();
}
if(digitalRead(GraysensorRPin) &&digitalRead(GraysensorLPin))
{
stop();
}
if(stop_clear_num == 2)
{
start_stop_flag = 1;
}
}
void stop()
{
if(start_stop_flag)
{
analogWrite(motor_03, 0);
analogWrite(motor_02, 0);
analogWrite(motor_04, 0);
analogWrite(motor_01, 0);
start_stop_flag = 0;
forwards();
}else
{
stop_num++;
}
}
void right()
{
analogWrite(motor_03, 175);
analogWrite(motor_02, 0);
analogWrite(motor_04, 0);
analogWrite(motor_01, 175);
}
void forwards()
{
analogWrite(motor_03, 175);
analogWrite(motor_02, 0);
analogWrite(motor_04, 175);
analogWrite(motor_01, 0);
if(stop_num > 10)
{
stop_num = 0;
stop_clear_num++;
}
}
void left()
{
analogWrite(motor_03, 0);
analogWrite(motor_02, 175);
analogWrite(motor_04, 175);
analogWrite(motor_01, 0);
}
复制代码
作者:
glinfei
时间:
2022-6-6 08:51
我觉得你程序判断上有问题,因该没法循迹。至于循迹时车速慢很正常,你可以加强动力,就是analogwrite那的值大一点呗,它的范围是255以内。
作者:
新人小白
时间:
2022-6-6 14:44
寻迹是能正常寻迹的,只是加了寻迹的代码之后,小车变得比之前的慢
作者:
香菜不是香菜
时间:
2022-6-6 20:17
看样子你这是四个电机,在没加寻迹之前你是四个电机都动,加了寻迹后只有两个电机工作,其实转弯时可以让四个电机都工作的,两个正转,两个反转。
作者:
香菜不是香菜
时间:
2022-6-6 20:20
可以两个电机正转,两个电机反转,这样甚至能实现原地转圈,速度和转向能力也会提高不少。还有就是可如楼上说的调高电压,选用5V电压可能也能解决一部分问题。
作者:
LXJG
时间:
2022-6-6 20:27
调pwm
作者:
glinfei
时间:
2022-6-7 09:09
新人小白 发表于 2022-6-6 14:44
寻迹是能正常寻迹的,只是加了寻迹的代码之后,小车变得比之前的慢
仅仅想速度快点,就把analogWrite(motor_02, 175);中的175调大,距离255还有好大的调节空间。由于循迹时用的是差动法,导致动能损失大,必然会降低速度的。如果转向时,用一边转一边不转方式,这样转向不那么灵敏,但动能损失小点。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1