#include

int motorL1=6; //左边轮子

int motorL2=5;

int motorR1=9; //右边轮子

int motorR2=11;

int ledL=7; //转弯灯

int ledR=8;

int ledB=12; //倒车灯

int ledG=13; //大灯

Servo s; //超声波转向舵机

int trig=4; //发射信号

int echo=2; //接收信号

unsigned int S; //距离存储

void setup() {

Serial.begin(9600); //设置波特率

pinMode(trig,OUTPUT); //设置引脚模式

pinMode(echo,INPUT);

pinMode(motorL1,OUTPUT);

pinMode(motorL2,OUTPUT);

pinMode(motorR1,OUTPUT);

pinMode(motorR2,OUTPUT);

pinMode(ledL,OUTPUT);

pinMode(ledR,OUTPUT);

pinMode(ledB,OUTPUT);

pinMode(ledG,OUTPUT);

//pinMode(12,OUTPUT);

s.attach(3); //定义舵机所用引脚

s.write(90); //初始化舵机角度

tone(12,800,500);

delay(2000); //开机延时

}

void loop() { //主函数

s.write(90); //舵机中位

range(); //执行测距函数

if(S<20){ //判断障碍物距离,距离太近

back(); //后退

delay(1000); //后退时间

}

if(S<=50&&S>20){ //距离中等

turn(); //运行转向判断函数

}

if(S>50){ //距离充足

line(); //运行直行函数

}

}

void turn(){ //判断转向函数

lull(); //停止所用电机

s.write(170); //舵机转到170度既左边(角度与安装方式有关)

delay(1000); //留时间给舵机转向

range(); //运行测距函数

s.write(90); //测距完成,舵机回到中位

delay(1000); //留时间给舵机转向

if (S>40) {L();} //判断左边障碍物距离,如果距离充足,运行左转

else {

s.write(10); //否则,舵机转动到10度,测右边距离

delay(1000);

range(); //测距

s.write(90); //中位

delay(1000);

if(S>40){ R();

} //右转

else{ back(); //判断右边距离,距离充足右转否则后退

int x=random(1); //产生一个0到1的随机数

if (x=0){R();}

else{L();} //判断随机数

} //否则后退,并随机转向

}

}

void range(){ //测距函数

digitalWrite(trig,LOW); //测距

delayMicroseconds(2); //延时2微秒

digitalWrite(trig,HIGH);

delayMicroseconds(20);

digitalWrite(trig,LOW);

int distance = pulseIn(echo,HIGH); //读取高电平时间

distance = distance/58; //按照公式计算

S = distance; //把值赋给S

Serial.println(S); //向串口发送S的值,可以在显示器上显示距离

if (S<40){

tone(12,800,50);

delay(50); //延时

}

}

void line(){

ledoff(); //关闭所有LED

ledg(); //运行大灯函数

digitalWrite(motorR1,HIGH); //启动所有电机向前

digitalWrite(motorL1,HIGH);

digitalWrite(motorR2,LOW);

digitalWrite(motorL2,LOW);

}

void L(){

ledoff();

digitalWrite(motorL1,LOW);

digitalWrite(motorR2,LOW);

analogWrite(motorL2,100);

analogWrite(motorR1,100);

for (int x=0;x<5;x++){ //执行5次

ledl(); //右边LED函数

}

lull(); //暂停所有电机

}

void R(){

ledoff();

digitalWrite(motorL2,LOW);

digitalWrite(motorR1,LOW);

analogWrite(motorL1,100);

analogWrite(motorR2,100);

for (int x=0;x<5;x++){

ledr();

}

lull();

}

void back(){ //后退函数

ledoff();

ledb();

digitalWrite(motorL1,LOW);

digitalWrite(motorR1,LOW);

analogWrite(motorL2,100);

analogWrite(motorR2,100);

ledb();

}

void lull(){

digitalWrite(motorL1,LOW);

digitalWrite(motorL2,LOW);

digitalWrite(motorR1,LOW);

digitalWrite(motorR2,LOW);

}

void ledl(){

digitalWrite(ledL,HIGH);

delay(50);

digitalWrite(ledL,LOW);

delay(50);

}

void ledr(){

digitalWrite(ledR,HIGH);

delay(50);

digitalWrite(ledR,LOW);

delay(50);

}

void ledb(){

digitalWrite(ledB,HIGH);

}

void ledg(){

digitalWrite(ledG,HIGH);

}

void ledoff(){

digitalWrite(ledL,LOW);

digitalWrite(ledL,LOW);

digitalWrite(ledL,LOW);

digitalWrite(ledL,LOW);

}

c语言超声波壁障源码,超声波避障小车源程序相关推荐

  1. c语言超声波壁障源码,超声波避障小车源程序【精】

    电子制作空间收集的这套入门级小车(只是入门级的,仅供参考)希望诸位入门智能车的吧友有所帮助.可以实现避障.寻迹.测距.寻找静态物体.做这个项目的经验,可分为四步. 第1步:根据实际情况确定智能小车所需 ...

  2. c语言超声波壁障源码,超声波避障源程序

    #include //51头文件 #include    //包含nop等系统函数 sbit RX = P2^0;//ECHO超声波模块回响端 sbit TX = P2^1;//TRIG超声波模块触发 ...

  3. 易语言窗口c_句柄取进程名,易语言窗口句柄取进程文件名源码

    窗口句柄取进程文件名系统结构:句柄取进程文件名,CreateToolhelp32Snapshot,GetWindowThreadProcessId,CloseHandle,Module32First, ...

  4. 计算机毕业设计Java-ssmC语言教学辅导网站源码+系统+数据库+lw文档

    计算机毕业设计Java-ssmC语言教学辅导网站源码+系统+数据库+lw文档 计算机毕业设计Java-ssmC语言教学辅导网站源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语 ...

  5. mysql数据库+易语言的应用_易语言mysql数据应用源码

    易语言mysql数据应用源码 易语言mysql数据应用源码 系统结构:注册账号,连接Mysql,用户注册验证码,修改密码验证码,忘记密码验证码,修改密码,忘记密码, ======窗口程序集1 | | ...

  6. 易语言json置入_易语言json操作模块源码

    易语言json操作模块源码 系统结构:初始化,解析,到文本,置属性,置属性对象,置属性数值,取属性数值,取属性对象,取通用属性,取属性,成员数,加成员,取成员,取成员文本,置成员,删成员,置类型,赋值 ...

  7. 易语言QQpost加好友源码

    易语言QQpost加好友源码 以下是部分代码 .版本 2 .支持库 specGetQq (主动添加QQ) QQ空间页面 = 编码_Utf8到Ansi (网页_访问_对象 ("https:// ...

  8. c语言案例分析105,C语言实战105例源码

    C语言实战105例源码 以下程序大家如有兴趣可在文件夹下载即可 第1部分 基础篇 实例1 一个价值"三天"的BUG 2 实例2 灵活使用递增(递减)操作符 5 实例3 算术运算符计 ...

  9. c语言贪吃蛇游戏源码下载,c语言贪吃蛇游戏源码.doc

    c语言贪吃蛇游戏源码.doc /*运行是按任意键开始,不过呢,反向也算输哟*/include include include include include include include defin ...

最新文章

  1. python操作word文档(python-docx)
  2. m_Orchestrate learning system---九、在无法保证是否有图片的情况下,如何保证页面格式...
  3. H5Stream播放RTSP流视频
  4. 计算机类专业要不要练打字,计算机专业学生有必要专门花时间练习打字吗?
  5. 服务器虚拟化软件XenServer 常见问题(一)
  6. python 查看安装的第三方库的版本号
  7. kafka控制器,复制与存储小结
  8. vue 移动到图片浮动_基于Vue实现拖拽升级(九宫格拖拽)
  9. 文件上传之二利用frame实现无页面刷新的文件上传
  10. 将NLog与ASP.NET Core Web应用程序集成
  11. angular学习笔记(六)-非入侵式javascript
  12. root用户被删除怎么进phpmyadmin
  13. Python爬虫——下载韩寒博客文章
  14. 英语语法基础入门怎么学好
  15. Word文字怎么居中对齐
  16. 技术干货| MindSpore新一代自主研发分子模拟库:Mind-Sponge
  17. SpringBoot JDBC Mysql 时区报错 serverTimezone解决方案分析
  18. Python爬虫实战:爬取维基百科
  19. 限电模块的在学生宿舍管理中的功能要求
  20. 解决摄像机被遮挡问题

热门文章

  1. php札记,PHP学习札记
  2. that could not be found
  3. 7年经验,功能测试工程师该如何一步步提升自己的能力呢?
  4. 将图片导入并转变灰度级,选定感性区域进行提取灰度值
  5. [转]AT指令返回错误代码: CMS errors CME errors
  6. 读者书评 | 猎豹行动·硝烟中的敏捷转型之旅
  7. 列出叶结点(PTA)
  8. Oracle数据库 union连接时报 字符集不匹配 异常
  9. FICO概念及主要流程
  10. USB耳机方案|USB麦克风方案|GPD8102B音频解码方案设计