




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 巧妙数字试题及答案一览
- 康复笔试面试试题及答案
- 公路货运行业数字化转型与2025年运力整合市场前景预测报告
- 寓教于乐的数学测试试题及答案
- 环形植树面试真题及答案
- 物质的化学与物理性质分析试题及答案
- 2025南航招聘英语测试题及答案
- 2025飞行技能测试题及答案
- 探索土木工程环境影响的测试题目及答案
- 教育信息化2.0时代智能教学系统市场应用与未来趋势报告
- 2024年烟台海阳市卫生健康局所属事业单位招聘工作人员真题
- 2025神农科技集团有限公司第一批校园招聘17人(山西)笔试参考题库附带答案详解
- (快手、抖音、淘宝)主播兼职合同10篇
- 砍木伐木合同协议范本
- 农业科技与装备应用知识考点
- 延边大学教师岗位招聘考试真题2024
- 前厅服务与管理课件 处理客人投诉
- (二模)咸阳市2025年高三高考模拟检测(二)物理试卷(含答案)
- 科举制度的演变及认识 论文
- 台球厅员工入职合同(2025年版)
- (2025)汉字听写大会竞赛题库(含答案)
评论
0/150
提交评论