机器人源程序

上传人:小** 文档编号:89415949 上传时间:2019-05-24 格式:DOC 页数:13 大小:23.41KB
返回 下载 相关 举报
机器人源程序_第1页
第1页 / 共13页
机器人源程序_第2页
第2页 / 共13页
机器人源程序_第3页
第3页 / 共13页
机器人源程序_第4页
第4页 / 共13页
机器人源程序_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《机器人源程序》由会员分享,可在线阅读,更多相关《机器人源程序(13页珍藏版)》请在金锄头文库上搜索。

1、智能小车前后左右综合实验void left(int time) /左转(左轮不动,右轮前进) digitalWrite(Right_motor_go,HIGH); / 右电机前进 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,200); analogWrite(Right_motor_back,0);/PWM比例0255调速 digitalWrite(Left_motor_go,LOW); /左轮不动 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor

2、_go,0); analogWrite(Left_motor_back,0);/PWM比例0255调速 delay(time * 100); /执行时间,可以调整void spin_left(int time) /左转(左轮后退,右轮前进) digitalWrite(Right_motor_go,HIGH); / 右电机前进 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,200); analogWrite(Right_motor_back,0);/PWM比例0255调速 digitalWrite(Left_moto

3、r_go,LOW); /左轮后退 digitalWrite(Left_motor_back,HIGH); analogWrite(Left_motor_go,0); analogWrite(Left_motor_back,200);/PWM比例0255调速 delay(time * 100); /执行时间,可以调整void right(int time) /右转(右轮不动,左轮前进) digitalWrite(Right_motor_go,LOW); /右电机不动 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,0)

4、; analogWrite(Right_motor_back,0);/PWM比例0255调速 digitalWrite(Left_motor_go,HIGH);/左电机前进 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,200); analogWrite(Left_motor_back,0);/PWM比例0255调速 delay(time * 100); /执行时间,可以调整void spin_right(int time) /右转(右轮后退,左轮前进) digitalWrite(Right_motor_go,LOW)

5、; /右电机后退 digitalWrite(Right_motor_back,HIGH); analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,200);/PWM比例0255调速 digitalWrite(Left_motor_go,HIGH);/左电机前进 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,200); analogWrite(Left_motor_back,0);/PWM比例0255调速 delay(time * 100); /执行时间,

6、可以调整void back(int time) /后退 digitalWrite(Right_motor_go,LOW); /右轮后退 digitalWrite(Right_motor_back,HIGH); analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,150);/PWM比例0255调速 digitalWrite(Left_motor_go,LOW); /左轮后退 digitalWrite(Left_motor_back,HIGH); analogWrite(Left_motor_go,0); analogWrite(

7、Left_motor_back,150);/PWM比例0255调速 delay(time * 100); /执行时间,可以调整增加了向左转和向右转,向左转主要是控制左轮不动,邮轮前进,而向右转则是右轮不动左轮前进,后退则是给两个轮子后退高电平,注意不能同时给前进和后退高电平,这样会烧坏电机,同样烧录例程时要断开vcc,以免小车乱跑影响实验。按键启动蜂鸣报警安装开关是为了在烧录过程中及时不断开vcc,小车也不会乱跑,以后每次烧录都不必断开vcc。int key=7;/定义按键 数字12 接口int beep=12;/定义蜂鸣器 数字7 接口void keysacn() int val; val=

8、digitalRead(key);/读取数字7 口电平值赋给val while(!digitalRead(key)/当按键没被按下时,一直循环 val=digitalRead(key);/此句可省略,可让循环跑空 while(digitalRead(key)/当按键被按下时 delay(10); /延时10ms val=digitalRead(key);/读取数字7 口电平值赋给val if(val=HIGH) /第二次判断按键是否被按下 digitalWrite(beep,HIGH); /蜂鸣器响 while(!digitalRead(key) /判断按键是否被松开 digitalWrite

9、(beep,LOW); /蜂鸣器停止 else digitalWrite(beep,LOW);/蜂鸣器停止 I/O 口的意思即为INPUT接口和OUTPUT 接口,到目前为止我们设计的小灯实验都还只是应用到Arduino的I/O 口的输出功能,这个实验我们来尝试一下使用Arduino的I/O 口的输入功能即为读取外接设备的输出值,智能小车寻黑线利用小车下端两个探头对光的不同反应来确定小车行驶路线,主要是当探测到白时小车行驶电机转动,当左侧压到黑线及探测到黑时小车向左行驶,当右侧探头探测到黑时则向行驶,只需在之前的程序上加一个判定的过程,十分简单const int SensorRight = 3

10、; /右循迹红外传感器(P3.2 OUT1)const int SensorLeft = 4; /左循迹红外传感器(P3.3 OUT2)SR = digitalRead(SensorRight);/有信号表明在白色区域,车子底板上L3亮;没信号表明压在黑线上,车子底板上L3灭 SL = digitalRead(SensorLeft);/有信号表明在白色区域,车子底板上L2亮;没信号表明压在黑线上,车子底板上L2灭 if (SL = LOW&SR=LOW) run(); /调用前进函数 else if (SL = HIGH & SR = LOW)/ 左循迹红外传感器,检测到信号,车子向右偏离轨道

11、,向左转 left(); else if (SR = HIGH & SL = LOW) / 右循迹红外传感器,检测到信号,车子向左偏离轨道,向右转 right(); else / 都是白色, 停止 brake();这里使用了与的语句,当左边高电平右边低电频时想左,当左边低电平右边高电平时向右,若都是高电平则停车这里的ifelse语句也满足了小车在行驶时的各种情况.智能小车红外避障与黑线实验类似,只是将判定写到了红外探头中,当红外探头探测到障碍时小车停止或者转向或者跟随障碍物行驶指向哪里走到哪里。遇到障碍物后退else / 都是有障碍物, 后退 back(3);这里是与其他两个程序不同的一点,遇

12、到了障碍则后退SR_2 = digitalRead(SensorRight_2); SL_2 = digitalRead(SensorLeft_2); if (SL_2 = HIGH&SR_2=HIGH) run(); /调用前进函数 else if (SL_2 = HIGH & SR_2 = LOW)/ 右边探测到有障碍物,有信号返回,向左转 left(); else if (SR_2 = HIGH & SL_2 = LOW) /左边探测到有障碍物,有信号返回,向右转 right(); else / 都是有障碍物, 后退 back(3);遇到障碍物跟随else if (SL_2 = HIGH

13、 & SR_2 = LOW)left();这里与上一个程序不同,是跟随障碍物哪里有障碍物就向哪里走,这是与上一个程序不同的地方,若前方没有障碍物则停车可以在这句话中体现else / 没有障碍物,停brake();SR_2 = digitalRead(SensorRight_2); SL_2 = digitalRead(SensorLeft_2); if (SL_2 = LOW&SR_2=LOW) run(); /调用前进函数 else if (SR_2 = HIGH & SL_2 = LOW) /左边探测到有障碍物,有信号返回,向左转 left(); else / 没有障碍物,停brake();遇到障碍物转向这里遇上两个程序不同的是增加了一个自动寻路功能,遇到障碍物后可以自己调节方向可以在下面这句话中体现else / 都是有障碍物, 后退 back(4.5);/后退 spin_right(4.5);/有旋转,调整方向先停车,停车之后转向,使得小车十分灵活,规避障碍物SR_2 = digitalRead(SensorRight_2); SL_2 = digitalRead(SensorLeft_2); if (SL_2 = HIGH&SR_2=HIGH) run(); /调用前进函数 els

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号