您的位置:首页 > 产品设计 > UI/UE

arduino 超声波小车

2015-06-02 13:26 549 查看
这次,我使用超声波硬件测量前方的距离,并让小车作出判断:是前进,还是后退,是左转,还是右转,或停止。

const int eye1 = 8;

const int eye2 = 9;

const int left1 = 14;

const int left2 = 15;

const int right1 = 16;

const int right2 = 17;

const int PWM1 = 3;

const int PWM2 = 5;

float cm;

void setup() {

Serial.begin(9600);

pinMode(left1, OUTPUT);

pinMode(left2, OUTPUT);

pinMode(right1, OUTPUT);

pinMode(right2, OUTPUT);

pinMode(eye1, OUTPUT);

pinMode(eye2, INPUT);

}

void loop() {

digitalWrite(eye1, LOW);

delayMicroseconds(2);

digitalWrite(eye1, HIGH);

delayMicroseconds(10);

digitalWrite(eye1, LOW);

cm = pulseIn(eye2, HIGH) / 50.0;

cm = (int(cm * 100.0)) / 100.0;

if (cm <= 20) {

back(1);

}

else if (cm > 30) {

go(1);

}

else if (cm > 20 || cm < 30) {

stop1(100);

}

else {

go(1);

}

}

void go(int n) {

analogWrite(PWM1, 180);

digitalWrite(left1, HIGH);

digitalWrite(left2, LOW);

analogWrite(PWM2, 183);

digitalWrite(right1, HIGH);

digitalWrite(right2, LOW);

delay(100 * n);

}

void stop1(int y) {

digitalWrite(left1, LOW);

digitalWrite(left2, LOW);

digitalWrite(right1, LOW);

digitalWrite(right2, LOW);

delay(y * 1);

}

void back(int j) {

analogWrite(PWM1, 180);

digitalWrite(left1, LOW);

digitalWrite(left2, HIGH);

analogWrite(PWM2, 183);

digitalWrite(right1, LOW);

digitalWrite(right2, HIGH);

delay(100 * j);

}

void left(int k) {

analogWrite(PWM1, 253);

digitalWrite(left1, LOW);

digitalWrite(left2, HIGH);

analogWrite(PWM2, 255);

digitalWrite(right1, HIGH);

digitalWrite(right2, LOW);

delay(400 * k);

}

void right(int aa) {

analogWrite(PWM1, 253);

digitalWrite(left1, HIGH);

digitalWrite(left2, LOW);

analogWrite(PWM2, 255);

digitalWrite(right1, LOW);

digitalWrite(right2, HIGH);

delay(1 * aa);

}

上传这段代码后:

如果前方距离小于或等于20,小车后退。

如果前方距离大于30,小车前进。

如果前方距离大于20并小于30,小车停止。

如果都不是,小车前进。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: