红外角度指示器
题目说明
红外角度指示器通过旋转电位器控制舵机的转动角度,通过 LED 灯指示不同的位置。红外角度指示器有两种工作状态:连续状态和刻度状态,两种状态通过红外按键切换。当指示器处于连续状态时,舵机随着电位器的转动而平滑转动;当指示器处于刻度状态时,随着电位器的转动,舵机位置仅位于 0 度、90 度和 180 度三个位置。
准备工作
-
器件:
Atmega328P主控板1块,红外接收套件1套,LED模块1个,电位器模块1个,舵机1个; -
以上模块也可使用分立器件结合面包板搭建。
功能实现
-
点击红外遥控器的
1键,指示器进入连续工作状态。当电位器从一端旋转至另外一端时,舵机的转动角度从0度旋转至180度,LED灯的亮度从熄灭渐变至最亮; -
点击红外遥控器的
2键,指示器进入刻度工作状态。当电位器的返回值小于256时,舵机的转动角度为0度,LED灯熄灭;当电位器的返回值大于等于256且小于768时,舵机的转动角度为90度,LED灯点亮;当电位器的返回值大于等于768时,舵机的转动角度为180度,LED灯闪烁; -
控制程序采用
Arduino C/C++代码编写,不得使用图形化软件编写; -
未作规定处可自行处理,无明显与事实违背即可。
提交要求
-
将程序放在一个文件夹中,压缩为
1个“rar 或 zip”格式文件,并命名为DJKS4_身份证号,大小5M以下; -
将程序文件通过“上传附件”按钮进行上传;
-
程序编写过程中不得打开其它示例程序,如发现,实操成绩按照
0分处理。
参考资料
舵机类库及常用成员函数如下:头文件 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);
}
评分标准
- 器件及器件连接(
20分)
说明:如考生采用的是集成开发板,实操项目所需元器件均预先集成在 PCB 上,无实际电路搭设操作,电路搭设部分得分为 0 分。
元器件:
(1)装置中包含 LED 灯模块(或元器件);(2 分)
(2)装置中包含电位器模块(或元器件);(2 分)
(3)装置中包含红外接收模块;(2 分)
(4)装置中包含舵机;(2 分)
电路搭设:
(5)LED 灯模块(或元器件)与主控板正确连接;(3 分)
(6)电位器模块(或元器件)与主控板正确连接;(3 分)
(7)红外接收模块与主控板正确连接;(3 分)
(8)舵机与主控板正确连接。(3 分)
- 功能实现(
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 分)
子题 填空题
请按上述要求完成实操任务
请按实操任务要求完成电路的搭设与程序的编写。
提交要求
-
将程序放在一个文件夹中,压缩为
1个“rar 或 zip”格式文件,并命名为DJKS4_身份证号,大小5M以下; -
将程序文件通过“上传附件”按钮进行上传。