文档详情

arduino小车代码,很全面.doc

发布:2021-11-01约6.21千字共9页下载文档
文本预览下载声明
避障代码 #include Servo.h //定义四种状态 #define STOP 0 #define FORWARD 1 #define BACKWARD 2 #define TURNLEFT 3 #define TURNRIGHT 4 //引脚初始化 int leftMotor1 = 4; int leftMotor2 = 5; int rightMotor1 = 6; int rightMotor2 = 7; //舵机引脚初始化 int inputPin = 8; int outputPin = 12; Servo myServo; void setup() { myServo.attach(9); //测速引脚初始化 pinMode(leftMotor1, OUTPUT); pinMode(leftMotor2, OUTPUT); pinMode(rightMotor1, OUTPUT); pinMode(rightMotor2, OUTPUT); pinMode(inputPin, INPUT); pinMode(outputPin, OUTPUT); } void loop() { avoidance(); } void motorRun(int cmd) { switch(cmd){ case FORWARD: analogWrite(leftMotor1, 50); analogWrite(leftMotor2, 0); analogWrite(rightMotor1, 50); analogWrite(rightMotor2, 0); break; case BACKWARD: analogWrite(leftMotor1, 0); analogWrite(leftMotor2, 50); analogWrite(rightMotor1, 0); analogWrite(rightMotor2, 50); break; case TURNLEFT: analogWrite(leftMotor1, 0); analogWrite(leftMotor2,150); analogWrite(rightMotor1,150); analogWrite(rightMotor2, 0); break; case TURNRIGHT: analogWrite(leftMotor1, 150); analogWrite(leftMotor2, 0); analogWrite(rightMotor1, 0); analogWrite(rightMotor2, 150); break; default: analogWrite(leftMotor1, 0); analogWrite(leftMotor2, 0); analogWrite(rightMotor1, 0); analogWrite(rightMotor2, 0); break; } } void avoidance() { int pos; int dis[3];//距离 motorRun(FORWARD); myServo.write(90); dis[1]=getDistance(); //中间 if(dis[1]20) { motorRun(STOP); for (pos = 90; pos = 170; pos += 1) { myServo.write(pos); // 将舵机转到“pos”的位置 delay(15); } dis[2]=getDistance(); //左边 for (pos = 170; pos = 10; pos -= 1) { myServo.write(pos); // 将舵机转到“pos”的位置 delay(15); if(pos==90) dis[1]=getDistance(); //中间 } dis[
显示全部
相似文档