编程题

主题:角度指示器

器件:LED灯模块2个(分别为LED_A和LED_B)、电位器模块1个、SSD1306 OLED显示屏、步进电机及步进电机驱动器各1个及相应器件(也可使用分立器件结合面包板搭建)。

要求:

(1) 通过电位器旋转控制步进电机的转动角度和LED灯的亮灭。

(2) 步进电机的转动角度范围:-90~90度。

(3) 将当前电位器的返回值和步进电机的当前角度显示在SSD1306 OLED显示屏上,显示格式为:电位器的返回值 -- 步进电机的当前角度值。

(4) 当电位器旋钮的处于中间位置时,步进电机处于0度位置,LED_A和LED_B均熄灭。

(5) 当电位器返回最大值时,步进电机旋转至90度位置,LED_A闪烁,LED_B熄灭。

(6) 当步进电机由0度旋转至90度时,LED_A由熄灭至最亮,LED_B熄灭。

(7) 当电位器返回最小值时,步进电机旋转至-90度位置,LED_B闪烁,LED_A熄灭。

(8) 当步进电机由0度旋转至-90度时,LED_B由熄灭至最亮,LED_A熄灭。

(9) 步进电机采用梯形加减速控制。

(10) 可在步进电机旋转轴粘贴胶带或其它方式,以便于观察步进电机的转动角度。

(11) 程序采用C代码编写。

(12) 未作规定处可自行处理,无明显与事实违背即可。

(13) 程序编写过程中不得打开库例程和其它程序,如发现,实操成绩按照0分处理。

 

说明:

请考生在实操考试结束前,按如下要求提交程序文件。

(1) 将所有程序文件放在一个文件夹,并将文件夹命名为:DJKS6_身份证号;

(2) 将程序文件压缩为"rar或zip"格式,大小5M以下,1个文件;

(3) 将程序文件通过“上传附件”按钮进行上传。

 

参考程序:

AccelStepper类库头文件和相关类库函数如下,供参考。

头文件:AccelStepper.h

类库对象:AccelStepper(mode, pin1,pin2,pin3,pin4)

成员函数:

setAcceleration(val); //设置步进电机转动时的加速度。

setMaxSpeed(val); //设置步进电机转动的最大允许速度。

setSpeed(val); //设置步进电机恒定转动时的速度值。

runSpeed(); //启动步进电机以设定的速度值恒定转动。

currentPosition(); //返回当前的位置值。

moveTo(val); //设置步进电机运转的目标位置 。

run(); //启动步进电机按照设定的加速度和最大速度运转。

setCurrentPosition(val); //设置当前位置为指定值 。

distanceToGo(val); //返回当前位置到目标位置之间的脉冲数。

Ssd1306Console类库头文件和相关类库函数如下,供参考。

头文件: ssd1306.h ssd1306_console.h

类库对象: Ssd1306Console

部分成员函数:

ssd1306_128x64_i2c_init(); //初始化SSD1306显示屏

ssd1306_clearScreen(); //清除屏幕

ssd1306_setFixedFont(ssd1306xled_font6x8); //设置显示的字体为ssd1306xled_font6x8。

查看答案
赣ICP备20007335号-2