关注我了解更多少儿编程内容
主题:迎宾机器人
器件:Atmega328P主控板1块,舵机1个,超声波传感器1个,LED灯2个(分别为LED_A和LED_B)及相应辅件。以上模块也可使用分立器件结合面包板搭建。
任务要求:
使用超声波传感器和舵机实现迎宾机器人的眼睛和手的功能。大门位于超声波传感器前方15厘米的位置,在大门内侧设定了欢送区,范围为5-15厘米;在大门外侧设定了欢迎区,范围为15-25厘米。LED_A位于欢送区,LED_B位于欢迎区,舵机则位于大门处。迎宾机器人的主要任务要求如下:
(1) 当没有客人进出时,舵机位于90度位置,LED_A和LED_B均熄灭;
(2) 当客人经过欢送区时,舵机在30-90之间循环转动,挥手示意,同时LED_A闪烁,LED_B熄灭;
(3) 当客人经过欢迎区时,舵机在90-150度之间循环转动,挥手示意,同时LED_B闪烁,LED_A熄灭;
(4) 控制程序采用Arduino C/C++代码编写;
(5) 未作规定处可自行处理,无明显与事实违背即可。
#include<Servo.h>Servo myServo;int servoPin=A0;const int t=2;const int e=3;int dist;int LEDA=5;int LEDB=9;voidgetDist(){digitalWrite(t,LOW);delayMicroseconds(2);digitalWrite(t,HIGH);delayMicroseconds(10);digitalWrite(t,LOW);dist = pulseIn(e,HIGH)/58;}voidsetup() {Serial.begin(9600);myServo.attach(servoPin);pinMode(LEDA,OUTPUT);pinMode(LEDB,OUTPUT);pinMode(t,OUTPUT);pinMode(e,INPUT);}voidloop() {Serial.println(dist);getDist();if(dist>=5 && dist<=15){for(int i=30;i<=90;i+=5){myServo.write(i);delay(20);}for(int i=90;i>=30;i-=5){myServo.write(i);delay(20);}digitalWrite(LEDA,HIGH);delay(200);digitalWrite(LEDA,LOW);delay(200);digitalWrite(LEDB,LOW);}else if(dist>15 && dist<=25){for(int i=90;i<=150;i+=5){myServo.write(i);delay(20);}for(int i=150;i>=90;i-=5){myServo.write(i);delay(20);}digitalWrite(LEDA,LOW);digitalWrite(LEDB,HIGH);delay(200);digitalWrite(LEDB,LOW);delay(200);}else{myServo.write(90);delay(20);digitalWrite(LEDA,LOW);digitalWrite(LEDB,LOW);}}
已关注
关注
重播 分享 赞
如果你觉得陈老师写的对你有帮助,可以点赞关注额。感谢大家的支持。

也可以添加陈老师的微信(rtc_100)。陈老师会为你解答疑惑。
文章来源:
四季读书网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至23467321@qq.com举报,一经查实,本站将立刻删除;如已特别标注为本站原创文章的,转载时请以链接形式注明文章出处,谢谢!