【ardunio】青少年机器人四级实操代码(2023年9月)

目录

一、题目

(一)试题原题

(二)试题解读

1、欢迎区和欢送区范围

(1)符合习惯

(2)以门为参考点会有不反应区

(3)以门为参考点门里门外不反应区不对称

2、超声波传感器的安装位置

(1)从安装习惯分析

(2)从欢迎区欢送区范围分析

3、机器人反应条件

二、示意图

三、流程图

四、硬件连接

1、舵机

2、超声波

3、LED灯

五、程序


一、题目

(一)试题原题

  • 实操考题(共1题,共100分)

    1. 主题:

    迎宾机器人

  • 器件: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)未作规定处可自行处理,无明显与事实违背即可。

  • 说明:请考生在考试结束前,按照如下要求提交相关文件。

  • (1)将程序放在一个文件夹中,压缩为1个“rar或zip”格式文件,并命名为:DJKS4_身份证号,大小5M以下;

  • (2)将程序文件通过“上传附件”按钮进行上传;

  • (3) 程序编写过程中不得打开其它示例程序,不得使用图形化软件生成代码,如发现,实操成绩按照0分处理。

  • 参考资料:舵机类库及常用成员函数如下,供参考。

    舵机类库:

    头文件:Servo.h

    类库对象:Servo

    成员函数:attach(Pin) //指定引脚的关联引脚 

  •                   write(angle) //功能是让舵机转动到指定的角度

(二)试题解读

1、欢迎区和欢送区范围

题目中对于欢迎区和欢送区的描述如下:“大门位于超声波传感器前方15厘米的位置,在大门内侧设定了欢送区,范围为5-15厘米,在大门外侧设定了欢迎区,范围为15-25厘米。”

仔细阅读题目,发现欢迎区和欢送区的距离范围没有给参考点,是以门为参考点还是以超声波传感器为参考点?经过分析,我觉得是以超声波传感器为参考点比较合理,原因有以下三点:

(1)符合习惯

因为超声波传感器,就是用来测距的,题目中涉及的距离应该是跟超声波传感器相关的,而且直接给出距离超声波传感器的距离,就不用再去额外计算了。

(2)以门为参考点会有不反应区

如果以门为参考点,那就是门内侧0~5厘米和门外侧0~15厘米是不反应区,设置这个区域似乎没有太大必要。

(3)以门为参考点门里门外不反应区不对称

如果以门为参考点,门里的不反应区长度是5厘米,门外是10厘米,两个区域不对称,也不太合理。

所以,经过以上分析,题目中所说的距离范围应该是指到超声波传感器正前方的距离

2、超声波传感器的安装位置

题目中只介绍了大门位于超声波传感器前方15厘米,但没说传感器是安在门里还是门外,我们还需要分析一下。

(1)从安装习惯分析

因为普通的超声波传感器模块是没有外壳的,不防水,安在门外,易受潮损坏,而且超声波传感器位置不能太高,安在门里也可以防止人为恶意损坏。

(2)从欢迎区欢送区范围分析

如果安在门外,那么门外区域距离传感器更近,也就是5~15厘米的范围在门外,应该属于欢迎区,与题目的要求矛盾。

所以,经过以上分析,超声波传感器安装位置应该是在门里

3、机器人反应条件

题目中要求客人经过欢迎区和欢送区时,机器人分别做出不同反应,反应的条件是“经过”,而“经过”还分进门和出门,题目中没有做区分。如果客人在出门时经过欢迎区,是要离开店铺,机器人做出欢迎的反应显然是不合理的;同样如果客人在进门时经过欢送区,是要进店消费,机器人做出欢送的反应也是不合理的。

所以,为了使机器人更加合理实用,本文将“经过”做了合理化区分:进门时经过欢迎区,才做出欢迎的反应;出门时经过欢送区,才做出欢送的反应。

二、示意图

根据以上的分析,画出相关位置示意图如下所示。

三、流程图

对“经过”的合理化区分后的流程图如下所示,注意,灯的闪烁频率是与机器人舵机摆动的频率是一致的,灯的闪烁频率没有单独设置,简化了程序。

四、硬件连接

1、舵机

电源线正极接在VCC上,电源负极接在GND上,信号线接在D12脚。

2、超声波

电源线正极接在VCC上,电源负极接在GND上,Trig信号线接在D3脚,Echo信号线接在D2脚。

3、LED灯

LED_A灯模块用红色,负极接在GND上,正极接在D6脚。

LED_B灯模块用绿色,负极接在GND上,正极接在D7脚。

五、程序

#include <Servo.h>Servo myServo;           //声明Servo对象
int distance=0;            //声明距离变量,用于存储超声波传感器本次测得障碍物距离
int predistance=0;        //声明距离变量,用于存储超声波传感器上一次测得障碍物距离
int angle;               //声明舵机角度变量
const int servoPin=12;   //设置舵机信号引脚
const int TrigPin=3;     //设置Trig信号引脚
const int EchoPin=2;     //设置Echo信号引脚
const int LED_A=6;       //设置LED_A引脚
const int LED_B=7;       //设置LED_B引脚
int delaytime=10;        //设置舵机转到延时boolean In_Or_Out=false; //设置判断进门出门布尔变量,true代表进门,false代表出门//初始化函数
void setup() {pinMode(LED_A,OUTPUT);    //设置LED_A引脚为输出模式pinMode(LED_B,OUTPUT);    //设置LED_B引脚为输出模式pinMode(TrigPin,OUTPUT);  //设置TrigPin引脚为输出模式pinMode(EchoPin,INPUT);   //设置EchoPin引脚为输入模式myServo.attach(servoPin); //绑定舵机引脚myServo.write(90);        //初始化舵机旋转到90度digitalWrite(LED_A,LOW);  //初始化LED_A熄灭digitalWrite(LED_B,LOW);  //初始化LED_B熄灭}//循环函数
void loop() {predistance=distance;//存储上一次超声波传感器测得的距离//以下6行程序作用:读取本次超声波传感器前方障碍物距离digitalWrite(TrigPin,LOW);delayMicroseconds(2);digitalWrite(TrigPin,HIGH);delayMicroseconds(10);digitalWrite(TrigPin,LOW);    distance=pulseIn(EchoPin,HIGH)/58.0;if(distance>predistance){In_Or_Out=false;}else if(distance<predistance){In_Or_Out=true;}//如果障碍物距离在欢送区内且出门状态if((distance>=5 && distance<=15) && !In_Or_Out){digitalWrite(LED_B,LOW);    //LED_B灯熄灭digitalWrite(LED_A,HIGH);   //LED_A灯点亮//以下for循环作用:舵机从30度旋转到90度for(angle=30;angle<=90;angle++){myServo.write(angle);delay(time);}digitalWrite(LED_A,LOW);    //LED_A灯熄灭//以下for循环作用:舵机从90度旋转到30度for(angle=90;angle>=30;angle--){myServo.write(angle);delay(time);}        }//如果障碍物距离在欢迎区内且进门状态else if((distance>15 && distance<=25) && In_Or_Out){digitalWrite(LED_A,LOW);     //LED_A灯熄灭digitalWrite(LED_B,HIGH);    //LED_B灯点亮//以下for循环作用:舵机从90度旋转到150度for(angle=90;iangle<=150;angle++){myServo.write(angle);delay(time);}digitalWrite(LED_B,LOW);    //LED_B灯熄灭//以下for循环作用:舵机从150度旋转到90度for(angle=150;angle>=90;angle--){myServo.write(angle);delay(time);}}//如果不符合机器人反应条件else{myServo.write(90); digitalWrite(LED_A,LOW);digitalWrite(LED_B,LOW);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/86346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

virtualbox配置ubuntu1804虚拟机相关流程

virtualbox配置ubuntu1804虚拟机相关流程 相关版本能解决的问题安装流程1&#xff1a;新建虚拟机安装流程2&#xff1a;配置虚拟机安装流程3&#xff1a;安装虚拟机系统安装流程4&#xff1a;设置ubuntu 相关版本 virtualbox使用VirtualBox官网下载的6.1.34 r150636 版。ubunt…

深度学习修炼(二)全连接神经网络 | Softmax,交叉熵损失函数 优化AdaGrad,RMSProp等 对抗过拟合 全攻略

文章目录 1 多层感知机&#xff08;全连接神经网络&#xff09;1.1 表示1.2 基本概念1.3 必要组成—激活函数1.4 网络结构设计 2 损失函数2.1 SOFTMAX操作2.2 交叉熵损失函数 3 优化3.1 求导计算过于复杂&#xff1f;3.2 链式法则导致的问题&#xff1f;3.3 梯度下降算法的改进…

利用Python将dataframe格式的所有列的数据类型转换为分类数据类型

一、样例理解 import pandas as pd import numpy as np# 创建测试数据 feature_names [col1 , col2, col3, col4, col5, col6] values np.random.randint(20, size(10,6))dataset pd.DataFrame(data values, columns feature_names)print("转换前的数据为\n",d…

【刷题】2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题

蓝桥杯2023年第十四届省赛真题-平方差 - C语言网 (dotcpp.com) 初步想法&#xff0c;x y2 − z2&#xff08;yz)(y-z) 即xa*b&#xff0c;ayz&#xff0c;by-z 2yab 即ab是2的倍数就好了。 即x存在两个因数之和为偶数就能满足条件。 但时间是&#xff08;r-l&#xff09;*x&am…

监督学习和非监督学习, 半监督学习和增强学习

监督学习 给机器的训练数据拥有“标记”或者“答案”&#xff0c; 也就是又有x、又有y 监督的意思是说我们针对给机器的数据进行了正确答案的划分&#xff0c; 这个正确的答案的本身就被称为监督的信息 比如&#xff1a; 生活中很多学习的过程都是监督学习的过程&#xff0c;…

浏览器基本原理

1、浏览器内部组成 我们看到浏览器主要包括&#xff1a; 1个浏览器主进程&#xff1a; 主要负责界面显示&#xff0c;用户交互&#xff0c;子进程管理多个渲染进程&#xff1a;一般浏览器会为每个Tab标签窗口创建一个渲染进程&#xff0c;主要负责将html&#xff0c;css&#…

YOLOv5、YOLOv8改进:C3STR(Swin Transformer)

目录 1.介绍 2. YOLOv5、YOLOv8改进 2.1 common.py配置 2.2 yolo.py配置 2.3 yaml配置文件 1.介绍 视觉领域正在见证从 CNN 到 Transformers 的建模转变&#xff0c;纯 Transformer 架构在主要视频识别基准测试中达到了最高准确度。这些视频模型都建立在 Transformer 层之…

Grafana离线安装部署以及插件安装

Grafana是一个可视化面板&#xff08;Dashboard&#xff09;&#xff0c;有着非常漂亮的图表和布局展示&#xff0c;功能齐全的度量仪表盘和图形编辑器&#xff0c;支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。Grafana主要特性&#xff1a;灵活丰富的图形…

js逆向-某税务网站chinatax分析

目录 一、如图网站二、研究登陆页反爬参数1、datagram参数2、请求接口关系 三、研究详情页反爬参数1、urlyzm与ruuid与x-b3-spanid参数2、los28199参数3、lzkqow23819参数4、jmbw参数 四、最终结果 一、如图网站 二、研究登陆页反爬参数 1、datagram参数 很多接口使用到的dat…

1796_通过vmware打开VirtualBox虚拟机文件

全部学习汇总&#xff1a; GitHub - GreyZhang/toolbox: 常用的工具使用查询&#xff0c;非教程&#xff0c;仅作为自我参考&#xff01; 首先讲vdi格式转换成vmdk格式&#xff0c;以我自己的环境下的信息&#xff0c;处理如下&#xff1a; VBoxManage clonehd "LinuxMin…

ESP-IDF学习——1.环境安装与hello-world

ESP-IDF学习——1.环境安装与hello-world 0.前言一、环境搭建1.官方IDE工具2.vscode图形化配置 二、示例工程三、自定义工程四、点灯五、总结 0.前言 最近在学习freertos&#xff0c;但由于买的书还没到&#xff0c;所以先捣鼓捣鼓ESP-IDF&#xff0c;因为这个比Arduino更接近底…

200行C++代码写一个Qt俄罗斯方块小游戏

小小演示一下&#xff1a; 大体思路&#xff1a; 其实很早就想写一个俄罗斯方块了&#xff0c;但是一想到那么多方块还要变形&#xff0c;还要判断落地什么的就脑壳疼。直到现在才写出来。 俄罗斯方块这个小游戏的小难点其实就一个&#xff0c;就是方块的变形&#xff0c;看似…

如何将本地的项目上传到Git

一、GitHub or GitLab or Gitee创建一个新的仓库 二、仓库路径创建成功后&#xff0c;将本地项目上传到git 1. 进入本地项目所在文件夹位置&#xff0c;右击 2.出现git命令框 输入git init 在当前项目的目录中生成本地的git管理&#xff08;会发现在当前目录下多了一个.git文件…

转转闲鱼交易猫链接源码 支持二维码收款

最新仿二手闲置链接源码 后台一键生成链接&#xff0c;后台管理教程&#xff1a;解压源码&#xff0c;修改数据库config/Congig 不会可以看源码里有教程 下载程序&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

30.链表练习题(1)(王道2023数据结构2.3.7节1-15题)

【前面使用的所有链表的定义在第29节】 试题1&#xff1a; 设计一个递归算法&#xff0c;删除不带头结点的单链表L中所有值为x的结点。 首先来看非递归算法&#xff0c;暴力遍历&#xff1a; int Del(LinkList &L,ElemType x){ //此函数实现删除链表中为x的元素LNode *…

科技云报道:分布式存储红海中,看天翼云HBlock如何突围?

科技云报道原创。 过去十年&#xff0c;随着技术的颠覆性创新和新应用场景的大量涌现&#xff0c;企业IT架构出现了稳态和敏态的混合化趋势。 在持续产生海量数据的同时&#xff0c;这些新应用、新场景在基础设施层也普遍基于敏态的分布式架构构建&#xff0c;从而对存储技术…

SpringBoot项目(百度AI整合)——如何在Springboot中使用语音文件识别 ffmpeg的安装和使用

前言 前言&#xff1a;在实际使用中&#xff0c;经常要参考官方的案例&#xff0c;但有时候因为工具的不一样&#xff0c;比如idea 和 eclipse&#xff0c;普通项目和spring项目等的差别&#xff1b;还有时候因为水平有限&#xff0c;难以在散布于官方的各个文档读懂&#xff…

【owt】vs2022 + v141 : 查看WINDOWSSDKDIR

confmfc改为vs2022 + v141 构建 去掉这几个boost库,一样可以链接ok libboost_system-vc141-mt-sgd-x32-1_67.lib libboost_date_time-vc141-mt-sgd-x32-1_67.lib libboost_random-vc141-mt-sgd-x32-1_67.libSDK不在2022或者2017 里面? WINDOWSSDKDIR 在哪里? ##

1786_MTALAB代码生成把通用函数生成独立文件

全部学习汇总&#xff1a; GitHub - GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes…

PCIE基础知识-3

PCIE 三种传输方式&#xff1a;IO中断&#xff0c;DMA&#xff0c;peer to peer 中断&#xff1a;PCI设备需要向内存&#xff08;SDRAM&#xff09;中写入一些数据&#xff0c;该PCI设备会向CPU请求一个中断&#xff0c;然后CPU首先先通过PCI总线把该PCI设备的数据读取到CPU内…