主题:红外角度指示器 器件: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 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); }
正确答案:实操参考实现(Arduino C红外角度指示器四级):IRrecv解码1键连续态、2键刻度态。连续态:舵机角度=map(analogRead(A0),0,1023,0,180)平滑转动,LED亮度随电位(analogWrite)。刻度态:电位<256舵机0°LED灭;<768舵机90°LED亮;≥768舵机180°LED闪。核心:红外切状态+电位控舵机角度。
试卷来源:202603 青少年等级考试机器人实操真题四级