本帖最后由 ntwhq 于 2016-12-17 16:09 编辑
Altar小车的两只电机分别使用D3、D5和D6、D9驱动L9110模块,由于程序中要使用舵机类库,而舵机类库和D9、D10的模拟输出都使用了单片机的定时器T1,使用舵机类库后D9、D10就不能作模拟输出使用了(没有PWM输出),因此我将D5、D6作模拟输出,分别控制两只电机的速度,D3、D9作数字输出,分别控制两只电机的旋转方向。
考虑到这款小车主要是面向学校的,我使用了Mixly图形化编程软件,同时附了它生成的文本代码,请大家指点。
注意:超声波模块使用了D7、D8,两块红外避障模块也使用了D7、D8,所以使用超声波模块时要拔下两块红外避障模块的插头。
子程序:
主程序:
程序文件:
超声波避障.rar
(1.17 KB, 下载次数: 480)
特别提醒:程序使用Mixly0.97编写,用Mixly0.97上传后工作正常,如果使用Mixly0.99上传,则工作不正常,原因不明。
[mw_shl_code=cpp,true]#include <Servo.h>// 前进
void forward(long x) {
digitalWrite(3,LOW);
analogWrite(5,x);
digitalWrite(9,LOW);
analogWrite(6,x);
}
// 后退
void back(long x) {
digitalWrite(3,HIGH);
analogWrite(5,(255 - x));
digitalWrite(9,HIGH);
analogWrite(6,(255 - x));
}
// 停止
void stop() {
digitalWrite(3,LOW);
analogWrite(5,0);
digitalWrite(9,LOW);
analogWrite(6,0);
}
// 右转
void turnright(long x) {
digitalWrite(3,LOW);
analogWrite(5,x);
digitalWrite(9,HIGH);
analogWrite(6,(255 - x));
}
// 左转
void turnleft(long x) {
digitalWrite(3,HIGH);
analogWrite(5,(255 - x));
digitalWrite(9,LOW);
analogWrite(6,x);
}
Servo servo_10;
float checkdistance_7_8() {
digitalWrite(7, LOW);
delayMicroseconds(2);
digitalWrite(7, HIGH);
delayMicroseconds(10);
digitalWrite(7, LOW);
float distance = pulseIn(8, HIGH) / 58.00;
delay(10);
return distance;
}
long M;
// 测前方距离
void middleDistance() {
servo_10.write(90);
delay(100);
M = checkdistance_7_8();
}
long L;
// 测左方距离
void leftDistance() {
servo_10.write(170);
delay(150);
L = checkdistance_7_8();
}
long R;
// 测右方距离
void rightDistance() {
servo_10.write(10);
delay(150);
R = checkdistance_7_8();
}
void setup()
{
pinMode(3, OUTPUT);
pinMode(9, OUTPUT);
servo_10.attach(10);
pinMode(7, OUTPUT);
pinMode(8, INPUT);
}
void loop()
{
middleDistance();
if (M < 20) {
stop();
delay(50);
back(120);
delay(200);
} else {
if (M > 40) {
forward(160);
delay(200);
} else {
stop();
delay(50);
leftDistance();
rightDistance();
if (L > R) {
turnleft(120);
delay(300);
stop();
delay(50);
} else {
turnright(120);
delay(300);
stop();
delay(50);
}
}
}
}[/mw_shl_code]
Altar小车Mixly图形化编程2_巡迹
Altar小车Mixly图形化编程3_红外遥控
|