查看: 330|回复: 3

[未解决] 四驱小车转向

[复制链接]
发表于 2019-11-13 21:55 | 显示全部楼层 |阅读模式
遇到的问题:前进和后退都没有问题,左转后右转有一侧的两个轮子像是硬滑过去一样,怎么解决
我使用的硬件:
主板:MEGA2560
驱动板:双通道电机驱动DBH-1
电机:50GB-775(12V)直流电机
6c38a11ad9b06b7cdda281b97ce2169.jpg 68475b4bb943eeedf0d4d9e976ddecf.jpg

程序:

kittenblock中小学创客名师推荐的图形化编程软件

#define IN1 2
#define IN2 3
#define ENA 4

#define IN3 5
#define IN4 6
#define ENB 7

#define IN5 8
#define IN6 9
#define ENC 10

#define IN7 11
#define IN8 12
#define END 13
void go_forward();
void turn_left();
void turn_right();
void go_back();
void setup() 
{
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  pinMode(IN5, OUTPUT);
  pinMode(IN6, OUTPUT);
  pinMode(IN7, OUTPUT);
  pinMode(IN8, OUTPUT);
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(ENC, OUTPUT);
  pinMode(END, OUTPUT);
  Serial.begin(9600); 
 }
void loop() {
  while(Serial.available()) 
  {
    char c=Serial.read();
    Serial.println(c);
    switch(c)
    {
       case '0':
       stop_s();delay(100);break;
       case '1':
       go_forward(80,80);delay(100);break;
       case '2':
       turn_left(80,120);delay(100);break;
       case '3':
       go_back(80,80);delay(100);break;
       case '4':
       turn_right(120,80);delay(100);break;
           }
    }
}
void stop_s()
{
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,LOW);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,LOW);  
  digitalWrite(IN5,LOW);
  digitalWrite(IN6,LOW);
  digitalWrite(IN7,LOW);
  digitalWrite(IN8,LOW);   
  }
void go_forward(int L,int R)
{
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);  
  digitalWrite(IN5,HIGH);
  digitalWrite(IN6,LOW);
  digitalWrite(IN7,LOW);
  digitalWrite(IN8,HIGH); 
  analogWrite(ENA, L);
  analogWrite(ENB, R);
  analogWrite(ENC, L);
  analogWrite(END, R);
}
void turn_left(int L,int R)
{
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);  
  digitalWrite(IN5,LOW);
  digitalWrite(IN6,HIGH);
  digitalWrite(IN7,LOW);
  digitalWrite(IN8,HIGH); 
  analogWrite(ENA, L);
  analogWrite(ENB, R);
  analogWrite(ENC, L);
  analogWrite(END, R);
  
}
void turn_right(int L,int R)
{
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);  
  digitalWrite(IN5,HIGH);
  digitalWrite(IN6,LOW);
  digitalWrite(IN7,HIGH);
  digitalWrite(IN8,LOW); 
  analogWrite(ENA, L);
  analogWrite(ENB, R);
  analogWrite(ENC, L);
  analogWrite(END, R);
}
void go_back(int L,int R)
{
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);  
  digitalWrite(IN5,LOW);
  digitalWrite(IN6,HIGH);
  digitalWrite(IN7,HIGH);
  digitalWrite(IN8,LOW); 
  analogWrite(ENA, L);
  analogWrite(ENB, R);
  analogWrite(ENC, L);
  analogWrite(END, R);
}


求各位大神告知怎么解决,需要用PID调速吗?


发表于 2019-11-14 08:54 | 显示全部楼层
四轮小车,两路电机驱动,本来就是“滑”着转弯的,无解。
看你的布局,不会是一辆高速小车,如果想精确移动,建议上麦克纳姆轮吧
 楼主| 发表于 2019-11-14 12:52 | 显示全部楼层
上海老王 发表于 2019-11-14 08:54
四轮小车,两路电机驱动,本来就是“滑”着转弯的,无解。
看你的布局,不会是一辆高速小车,如果想精确移 ...

我看网上有四驱小车可以原地转弯的呀
发表于 2019-11-14 13:30 | 显示全部楼层
caowenguan 发表于 2019-11-14 12:52
我看网上有四驱小车可以原地转弯的呀

对呀,四轮小车,左侧两轮电机一路供电,右侧两轮电机一路供电,一边向前另一边向后,就是原地转弯啊。
但因为结构简单,没有差速器,车轮本身也没有角度变化,所以必定有轮子是在地上滑动的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

Blynk与m5stack basic以及uiflow的交互玩法
Blynk与m5stack basic以及
Blynk与m5stack basic以及uiflow的交互玩法 [准备工作我们假设玩家已经熟悉下面的准备
Arduino Ter什么时候上市购买
Arduino Ter什么时候上市
一直没人问 那我就来问问好了 深爱 Arduino 但目前的开发板资源有限 简单的就比如现有
blinker无法对ESP8266下发指令
blinker无法对ESP8266下发
blinker端的数据键名称是与代码对应的,连接wifi特显示arduino在线,但按键的话把8266
helloWifi上传出错
helloWifi上传出错
板子:Node mcu 已下载Blinker库,已下载对应ESP8266库(图二) 问题描述:编译出错
APP
APP
哪位大佬有这款 App ,求apk
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表