实操任务:红外角度指示器
主题:红外角度指示器器件:Atmega328P主控板1块,红外接收套件1套,LED模块1个,电位器模块1个,舵机1个。以上模块也可使用分立器件结合面包板搭建。任务要求:红外角度指示器通过旋转电位器控制舵机的转动角度,通过LED灯指示不同的位置。红外角度指示器有两种工作状态:连续状态和刻度状态,两种状态通过红外按键切换。当指示器处于连续状态时,舵机随着电位器的转动而平滑转动;当指示器处于刻度状态时,随着电位器的转动,舵机位置仅位于0度、90度和180度三个位置。具体要求如下:(1) 点击红外遥控器的1键,指示器进入连续工作状态。当电位器从一端旋转至另外一端时,舵机的转动角度从0度旋转至180度,LED灯的亮度从熄灭渐变至最亮;(2) 点击红外遥控器的2键,指示器进入刻度工作状态。当电位器的返回值小于256时,舵机的转动角度为0度,LED灯熄灭;当电位器的返回值大于等于256且小于768时,舵机的转动角度为90度,LED灯点亮;当电位器的返回值大于等于768时,舵机的转动角度为180度,LED灯闪烁;(3) 控制程序采用Arduino C/C++代码编写,不得使用图形化软件编写;(4) 未作规定处可自行处理,无明显与事实违背即可。说明:程序编写过程中不得打开其它示例程序,如发现,实操成绩按照0分处理。请考生在考试结束前,按照如下要求提交相关文件。(1) 将程序放在一个文件夹中,压缩为1个“rar或zip”格式文件,并命名为:DJKS4_身份证号,大小5M以下;(2) 将程序文件通过“上传附件”按钮进行上传。参考资料:舵机类库及常用成员函数如下:头文件:Servo.h类库对象:Servo成员函数:attach(Pin) //指定引脚的关联引脚write(angle) //功能是让舵机转动到指定的角度红外遥控示例:#include <IRremote.h>const int RECV_PIN = 12;IRrecv irrecv(RECV_PIN);decode_results results;void setup(){Serial.begin(9600);irrecv.enableIRIn();}void loop() {if (irrecv.decode(&results)) {Serial.println(results.value, HEX);irrecv.resume();}delay(100);}评分项:1. 器件及器件连接(20分)说明:如考生采用的是集成开发板,实操项目所需元器件均预先集成在PCB上,无实际电路搭设操作,电路搭设部分得分为0分。元器件:(1) 装置中包含LED灯模块(或元器件);(2分)(2) 装置中包含电位器模块(或元器件);(2分)(3) 装置中包含红外接收模块;(2分)(4) 装置中包含舵机;(2分)电路搭设:(5) LED灯模块(或元器件)与主控板正确连接;(3分)(6) 电位器模块(或元器件)与主控板正确连接;(3分)(7) 红外接收模块与主控板正确连接;(3分)(8) 舵机与主控板正确连接。(3分)2. 功能实现(80分)(1) 实现点击红外遥控器的1键,指示器进入连续工作状态后。当电位器从一端旋转至另外一端时,舵机的转动角度从0度旋转至180度;(15分)(2) 实现指示器进入连续工作状态后,当电位器从一端旋转至另外一端时,LED灯的亮度从熄灭渐变至最亮;(15分)(3) 实现点击红外遥控器的2键,指示器进入刻度工作状态。当电位器的返回值小于256时,舵机的转动角度为0度;(10分)(4) 实现指示器进入刻度工作状态,当舵机转动角度为0度时,LED灯熄灭;(5分)(5) 实现指示器进入刻度工作状态,当电位器的返回值大于等于256且小于768时,舵机的转动角度为90度;(10分)(6) 实现指示器进入刻度工作状态,当舵机转动角度为90度时,LED灯点亮;(5分)(7) 指示器进入刻度工作状态,当电位器的返回值大于等于768时,舵机的转动角度为180度;(10分)(8) 实现指示器进入刻度工作状态,当舵机转动角度为180度时,LED灯闪烁。(10分)