极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13716|回复: 5

APC通信 控制小车 程序怎么写?

[复制链接]
发表于 2013-4-23 21:40:23 | 显示全部楼层 |阅读模式

玩arduino 也不久,就弄了个小车学习学习
我这个小车4电机单独控制4个轮子,我把左边的两个电机接在一起,右边也一样。
现在传感器还没安装。我的思路是:先用方向杆(见下图)控制它要行使的方向,油门杆来控制速度;但是结果和理想的不一样,请大家来看看


                                                              这是我小车的APC无线模块

                                                        我的小车
                                                                           
                                                                          
                                 小车前部的板子是用来保护传感器的

                                                                                 
                                                                      我自己做的遥控器其中中间红色的是
                                                                          

                                                            
                                                       遥控器的反面
小车的程序:
int Speed;
void goStraight(int Speed)
{
  analogWrite(8,Speed);
  digitalWrite(9,LOW);
  analogWrite(10,Speed);
  digitalWrite(11,LOW);
}
void turnLeft(int Speed)
{
  analogWrite(8,Speed);
  digitalWrite(9,LOW);
  digitalWrite(10,LOW);
  analogWrite(11,Speed);
}
void turnRight(int Speed)
{
  digitalWrite(8,LOW);
  analogWrite(9,Speed);
  digitalWrite(10,Speed);
  analogWrite(11,LOW);
}
void Stop()
{
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);
  digitalWrite(10,LOW);
  digitalWrite(11,LOW);
}
void goBreak(int Speed)
{
  digitalWrite(8,LOW);
  analogWrite(9,Speed);
  digitalWrite(10,LOW);
  analogWrite(11,Speed);
}
int comtemp;
void setup()
{
  pinMode(8,OUTPUT);//定义控制小车行走管脚
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(2,INPUT);
  pinMode(3,INPUT);
  pinMode(4,INPUT);
  pinMode(5,INPUT);
  pinMode(6,INPUT);
  pinMode(7,INPUT);
  Serial.begin(9600);
}
void loop()
{
  if(Serial.available())
    {
      comtemp=Serial.read();
      switch(comtemp)
      {
        case 'g':
          {
            goStraight(comtemp);
            Serial.println("goStrigh");
            break;
          }
        case 'b':
          {
            goBreak(comtemp);
            Serial.println("goBack");
            break;
          }
        case's':
          {
            Stop();
             Serial.println("goStop");
            break;
          }
         case 'l':
           {
            turnLeft(comtemp);
             Serial.println("turnLeft");
            break;
            }
        case'r':
            {
            turnRight(comtemp);
             Serial.println("turnRigh");
            break;
            }
      }
    }
}

遥控器的程序:
int xpotPin = A4;
int ypotPin = A3;         
int gopotPin = A5;

int xval=0;  
int yval=0;
int goval=0;


void setup()
{
   Serial.begin(9600);

}

void loop ()                     
{

xval = analogRead(xpotPin);  
yval = analogRead(ypotPin);  
goval = analogRead(gopotPin);  

    if(xval<=500)
    {
    Serial.print("l");
    Serial.print(goval*0.225);
    }
    if(xval>=600)
    {
      Serial.print("r");
      Serial.print(goval*0.255);
    }
      if(yval<=500)
    {
    Serial.print("g");
    Serial.print(goval*0.225);
    }
    if(yval>=600)
    {
      Serial.print("b");
      Serial.print(goval*0.255);
    }
   }
         不知道为什么不能控制速度
       请大家看看,指点指点,感激不尽                                            
         


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-4-24 09:41:45 | 显示全部楼层
LZ有钱啊。。。。
回复 支持 反对

使用道具 举报

发表于 2013-4-26 11:09:07 | 显示全部楼层
弱弱的告诉你说.其实,你的驱动方式都是错的
汽车的驱动方式有转向轮和驱动轮2部分组成
转向轮的2个轮子可以调整方向,驱动轮进行驱动
一般常见的轿车都是前轮驱动,前轮转向 (也就是说前轮可以左右各旋转60度)并且由于发动机前置通过传动轴将动力传导到前轮.
四驱车的方向调整相同,传动是分配到4个轮子.
回复 支持 反对

使用道具 举报

发表于 2013-4-26 11:35:04 | 显示全部楼层
你实现的话,其实有一个简单的方式,就是把前面2个驱动电机通过机构安装在脱机上,9G的舵机基本上就能搞定.
这样程序也简单,至少你不需要计算什么左转需要右轮高于左轮多少的转速.
回复 支持 反对

使用道具 举报

发表于 2013-4-26 11:35:43 | 显示全部楼层
转向也可以用线性的方式控制, 类似与真实的车辆的运转方式.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-26 22:31:00 | 显示全部楼层
darkorigin 发表于 2013-4-26 11:09
弱弱的告诉你说.其实,你的驱动方式都是错的
汽车的驱动方式有转向轮和驱动轮2部分组成
转向轮的2个轮子可 ...

我的这辆车。是4个电机独立的,一个电机控制一个轮。我是把左边的两个电机并联。右边的电机也是如此。就如坦克的运动原理是一样的。如果改用你的思路,那么在车体的结构上的改动太大了,感觉不是很划算,如果以坦克的运动方式的话,我用pwm控制左右电机的转速就可以实现“差速”转弯。我也这样试过了,效果还不错,如果采用现实中的车运动的话,可以采用想瑞萨,或是飞思卡尔的车模。他们是用舵机来控制前轮转向的,
不过还是谢谢你的建议
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 16:10 , Processed in 0.044577 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表