一、实操题
1、主题:通过串口控制直流电机转动
器件:ESP32 主控、码盘、光电对管、SSD1306 OLED 显示屏、直流电机驱动模块、直流电机等相关元器件。
要求:
1、通过串口监视器控制电机转动的圈数。在串口监视器输入框中输入-3~3
之间的整数,点击【发送】,此时马达旋转对应的圈数。当输入的整数为负数时,马达反方向转动。
2、通过码盘和光电对管模块,采用中断控制直流电机的旋转量。
3、将光电对管读取的码盘中断累加数实时显示到显示屏上。
4、马达停止时,显示屏上码盘的读数应为所采用码盘线数(精度)与旋转
圈数的乘积,允许误差为±5%以内。
5、马达、码盘、光电对管模块均应有效固定。
6、控制程序采用 C/C++代码编写。
7、SSD1306 液晶显示屏可使用教材对应的库,串口输入可以采用串口库,其
它程序编写均不得使用外部库调用。
8、为了方便识别马达旋转,可以将车轮或纸片固定在马达转轴上。
9、未作规定处可⾃⾏处理,⽆明显与事实违背即可。
10、编写程序文件命名规则为:DJKS6_身份证号,考试完毕拷贝上交备案。
解析:【喵呜刷题小喵解析】本题要求通过串口控制直流电机转动,并使用码盘和光电对管模块进行中断控制。同时,需要将光电对管读取的码盘中断累加数实时显示到显示屏上,并在马达停止时显示码盘的读数。首先,需要初始化GPIO、UART、Timer和OLED。GPIO用于控制电机转动,UART用于接收串口输入,Timer用于计数,OLED用于显示信息。然后,在主循环中,读取串口输入,将其转换为整数,并控制电机转动。同时,清除Timer并设置初始值,启动Timer。接着,在GPIO中断处理函数中,统计光电对管触发的次数,并显示在OLED上。最后,在Timer中断处理函数中,计算电机转动的圈数,并显示在OLED上。同时,控制电机停止。注意,由于本题要求使用C/C++代码编写,因此使用了ESP-IDF框架。在编写程序时,需要注意避免使用外部库调用。另外,为了方便识别马达旋转,可以将车轮或纸片固定在马达转轴上。同时,马达、码盘、光电对管模块均应有效固定。最后,编写程序文件命名规则为DJKS6_身份证号,考试完毕拷贝上交备案。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!