APC通信 控制小车 程序怎么写?
玩arduino 也不久,就弄了个小车学习学习
我这个小车4电机单独控制4个轮子,我把左边的两个电机接在一起,右边也一样。
现在传感器还没安装。我的思路是:先用方向杆(见下图)控制它要行使的方向,油门杆来控制速度;但是结果和理想的不一样,请大家来看看
这是我小车的APC无线模块
我的小车
小车前部的板子是用来保护传感器的
我自己做的遥控器其中中间红色的是http://image.geek-workshop.com/forum/201108/30/175610eeebcg8p7256iggm.jpg
http://image.geek-workshop.com/forum/201108/30/175611z8r833h3prlermo8.jpg
遥控器的反面
小车的程序:
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);
}
}
不知道为什么不能控制速度
请大家看看,指点指点,感激不尽
LZ有钱啊。。。。 弱弱的告诉你说.其实,你的驱动方式都是错的
汽车的驱动方式有转向轮和驱动轮2部分组成
转向轮的2个轮子可以调整方向,驱动轮进行驱动
一般常见的轿车都是前轮驱动,前轮转向 (也就是说前轮可以左右各旋转60度)并且由于发动机前置通过传动轴将动力传导到前轮.
四驱车的方向调整相同,传动是分配到4个轮子. 你实现的话,其实有一个简单的方式,就是把前面2个驱动电机通过机构安装在脱机上,9G的舵机基本上就能搞定.
这样程序也简单,至少你不需要计算什么左转需要右轮高于左轮多少的转速. 转向也可以用线性的方式控制, 类似与真实的车辆的运转方式. darkorigin 发表于 2013-4-26 11:09 static/image/common/back.gif
弱弱的告诉你说.其实,你的驱动方式都是错的
汽车的驱动方式有转向轮和驱动轮2部分组成
转向轮的2个轮子可 ...
我的这辆车。是4个电机独立的,一个电机控制一个轮。我是把左边的两个电机并联。右边的电机也是如此。就如坦克的运动原理是一样的。如果改用你的思路,那么在车体的结构上的改动太大了,感觉不是很划算,如果以坦克的运动方式的话,我用pwm控制左右电机的转速就可以实现“差速”转弯。我也这样试过了,效果还不错,如果采用现实中的车运动的话,可以采用想瑞萨,或是飞思卡尔的车模。他们是用舵机来控制前轮转向的,
不过还是谢谢你的建议
页:
[1]