arduino小车代码_第1页
arduino小车代码_第2页
arduino小车代码_第3页
arduino小车代码_第4页
arduino小车代码_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、避障代码#inelude <Servo.h>定义四种状态#define STOP 0#define FORWARD 1#define BACKWARD 2#define TURNLEFT 3#define TURNRIGHT 4引脚初始化int leftMotorl = 4;int leftMotor2 = 5;int rightMotorl = 6;int rightMotor2 = 7;舵机引脚初始化int inputPin 二 8;int outputPin = 12;Servo myServo;void setup() myServo.attach(9); /测速引脚初始化

2、 pinModefleftMotorl, OUTPUT); pinMode(leftMotor2, OUTPUT); pinModefrightMotorl, OUTPUT); pinMode(rightMotor2, OUTPUT);pinMode(inputPinz INPUT); pinMode(outputPin, OUTPUT);void loop() avoida nce();void motorRun(int emd)switch(cmd)case FORWARD: analogWrite(leftMotorlz 50); analogWrite(leftMotor2z 0);

3、analogWrite(rightMotorl, 50); analogWrite(rightMotor2/ 0); break;case BACKWARD: analogWrite(leftMotorlz 0); analogWrite(leftMotor2z 50); analogWrite(rightMotorl, 0); analogWrite(rightMotor2/ 50); break;case TURNLEFT: analogWrite(leftMotorlz 0); analogWrite(leftMotor2,150); analogWrite(rightMotorl,15

4、0); analogWrite(rightMotor2/ 0); break;case TURNRIGHT: analogWrite(leftMotorlz 150); analogWrite(leftMotor2z 0); analogWrite(rightMotorl, 0); analogWrite(rightMotor2/ 150); break;default: analogWrite(leftMotorlz 0); analogWrite(leftMotor2z 0); analogWrite(rightMotorl, 0); analogWrite(rightMotor2/ 0)

5、; break;void avoidance()int pos;int dis;距离 motorRun(FORWARD);myServo.write(90); disl=getDistance(); / 中间if(disl<20)motorRun(STOP);for (pos = 90; pos <= 170; pos += 1)myServo.write(pos);/ 将舵机转到 “pos” 的位置delay(15);dis2=getDistance(); 左边for (pos = 170; pos >= 10; pos -= 1)myServo.write(pos);/

6、将舵机转到 “pos” 的位置delay(15);if(pos=90)disl=getDistance(); 中间disO=getDistance(); 右边for (pos = 10; pos <= 90; pos += 1)myServo.write(pos);/ 将舵机转到 “pos” 的位置if(dis0<dis2) /右边距离障碍的距离比左边近左转motorRun(TURNLEFT);delay(600);else 右边距离障碍的距离比左边远右转motorRun(TURNRIGHT);delay(600); int getDistance()digitalWrite(ou

7、tputPin, LOW);/使发出发出超声波信号接【I低电平2 us delayMicrosec on ds(2);digitalWrite(outputPinz HIGH);/使发出发出超声波信号接口高电平10 us,这里是至少10delayMicroseconds(lO);digitalWrite(outputPin, LOW);/保持发出超声波信号接I I低电平 int distance = pulseln(inputPin, HIGH); / 读出脉冲时间 distance distance力8; 将脉冲时间转化为距离(单位:厘米)return distanee;舵机模块连接方式GN

8、D:接开发板GND引脚VCC:接开发板“5V”弓|脚Echo:接开发板8号引脚Trig:接开发板12号引脚前进代码引脚初始化int leftMotorl = 4;int leftMotor2 = 5;int rightMotorl = 6;int rightMotor2 = 7;void setup() pinModefleftMotorl, OUTPUT); pinMode(leftMotor2, OUTPUT); pinModefrightMotorl, OUTPUT); pinMode(rightMotor2, OUTPUT);void loop() analogWrite(leftMo

9、torl, 100); analogWrite(leftMotor2/ 0); analogWrite(rightMotorl, 100);a na log Write (r ight M otor2, 0);蓝牙小车定义四种状态#define Stop 'O'#define Forward T#define Backward 2#define Turnleft '3'#define Turnright *4'引脚初始化int leftMotorl = 4;int leftMotor2 = 5;int rightMotorl = 6;int rightM

10、otor2 = 7;void setup() Serial.begin(9600);pinMode(leftMotorl, OUTPUT);pinMode(leftMotor2, OUTPUT);pinMode(rightMotorl, OUTPUT);pinMode(rightMotor2, OUTPUT);void loop() if(Serial.available()>0)char cmd=Serial.read();/i$取蓝牙模块发送到串I I的数据 Serial.pri nt(cmd);motorRun(cmd);void motorRun(int cmd)switch(c

11、md)case Forward:analogWrite(leftMotorl, 50);a na log Write (I eftMotor2, 0);analogWrite(rightMotorl, 50);a na log Write (r ightM otor2, 0);break;case Backward:analogWrite(leftMotorlz 0); analogWrite(leftMotor2/ 50); analogWrite(rightMotorl, 0); analogWrite(rightMotor2/ 50); break;case Turnleft: anal

12、ogWrite(leftMotorlz 0); analogWrite(leftMotor2,100); analogWrite(rightMotorl,100); analogWrite(rightMotor2/ 0); break;case Turnright: analogWrite(leftMotorlz 100); analogWrite(leftMotor2/ 0); analogWrite(rightMotorl, 0); analogWrite(rightMotor2/ 100); break;case Stop:analogWrite(leftMotorlz 0); anal

13、ogWrite(leftMotor2/ 0); analogWrite(rightMotorl, 0); analogWrite(rightMotor2/ 0); break;蓝牙模块连接方法TX:接开发板“RX”引脚RX:接开发吧“TX”引脚GND:接开发板“GND”引脚VCC:接开发板“5V”弓|脚循迹#define STOP0#define FORWARD 1#define BACKWARD 2#define TURNLEFT 3#define TURNRIGHT 4int leftMotorl = 4;int leftMotor2 = 5;int rightMotorl =6;int

14、rightMotor2 = 7;寻迹模块引脚初始化int tracl = 10;int trac2 = 11;void setup()pinModefleftMotorl, OUTPUT); pinMode(leftMotor2, OUTPUT); pinMode(rightMotorl, OUTPUT); pinMode(rightMotor2, OUTPUT);pinMode(tracl, INPUT); pinMode(trac2, INPUT);void loop() tracing();void motorRun(int cmd)switch(cmd)case FORWARD: an

15、alogWrite(leftMotorl, 50); analogWrite(leftMotor2, 0); analogWrite(rightMotorl, 50); analogWrite(rightMotor2, 0); break;case TURNLEFT: analogWrite(leftMotorl, 0); analogWrite(leftMotor2,150); analogWrite(rightMotorl, 150);analogWrite(rightMotor2/ 0);break;case TURNRIGHT:analogWrite(leftMotorlz 150);analogWrite(leftMotor2z 0);analogWrite(rightMotorl,0);analogWrite(rightMotor2,150);break;default:analogWrite(leftMotorlz 0);analogWrite(leftMotor2z 0);analogWrite(rightMotorl,0);analogWrite(rightMotor2/ 0);void tracing()int data2;dataO = digitalRead(lO);datal = di

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论