主题:串口交互心形图案显示 器件:ESP32主控、8x8LED点阵、74HC595串口寄存器芯片(或模块)及相关器件。 要求: 使用74HC595串口寄存器芯片控制8x8LED点阵循环显示大小心形图案,通过串口输入报文来设置大小心形图案各自的显示时长。 报文的格式示例为:B100S300 其中:B100表示显示大的心形图案时长100毫秒;S300表示显示小的心形图案时长300毫秒。显示时间范围在100~999毫秒之间。 具体要求如下: (1) 程序启动后,8x8LED点阵最外侧四边的LED灯点亮,中间区域LED灯熄灭。 (2) 在串口监视器窗口输入框输入上述格式的报文后,在串口监视器窗口输出解析后相应的报文内容。以报文B100S300为例,串口监视器窗口输出的内容为B-100:S-300。 (3) 8x8LED根据报文的内容连续切换显示大小两个心形图案。以报文B100S300为例,先显示大的心形图案,时长100毫秒,然后显示小的心形图案,时长300毫秒,依次反复,直至输入新的报文数据。 (4) 程序采用C代码编写,不得使用外部库调用。 (5) 未作规定处可自行处理,无明显与事实违背即可。 (6) 程序编写过程中不得打开库例程和其它程序,如发现,实操成绩按照0分处理。 说明: 请考生在考试结束前,按如下要求提交程序文件 (1) 将所有程序放在一个文件夹,并将文件夹命名为:DJKS5_身份证号; (2) 将程序文件压缩为1个文件,“rar或zip”格式,大小5M以下; (3) 将程序文件通过“上传附件”按钮进行上传。 参考资料 (1)数组heartB[]和heartS[]分别为大小心形的点阵数据。编程时可参考使用。 byte heartB[] = {0x99, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xE7, 0xFF}; byte heartS[] = {0xFF, 0xDB, 0x81, 0x81, 0xC3, 0xE7, 0xFF, 0xFF}; (2)String类库的成员函数及其功能描述如下: indexOf(val); // 自左向右查找字符val在字符串对象实例中的位置。 substring(from,to) // 从字符串对象实例中截取指定位置的字符串。 toInt(); // 将字符串转换为整数。 (3)Serial类库的成员函数及其功能描述如下: avaiable(); // 返回UART接收缓冲区中的字节数。 read(); // 从UART接收缓冲区读取数据。 readString(); // 从UART接收缓冲区中读取字符串。
正确答案:参考实现(ESP32 C):8x8LED点阵+74HC595+串口。启动点亮最外侧四边LED(边框)。串口收报文B100S300解析:B-100:S-300输出,大心形heartB[]显示100ms,小心形heartS[]显示300ms循环。heartB={0x99,0x00,0x00,0x00,0x81,0xC3,0xE7,0xFF},heartS={0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF,0xFF}。用indexOf/substring/toInt解析。核心:串口报文解析
试卷来源:202109 青少年等级考试机器人实操真题五级