【思维导图】

【项目简介】
行空板M10推出新品扩展板 —— 行空板M10扩展板组合(含电机IO扩展板、金手指扩展板、800mAh电池扩展板),实拍:

专为M10量身定制的屏幕保护壳也已经出了:

希望活动结束后,可以有机会得到这个保护壳,这样就完美了。
【创意思路】
搭配M10扩展板的初衷就是,为了利用行空板M10结合电池扩展板,来设计更智能更实用的便携式设备。因此,第一反应就是要设计可佩戴的,比如手表、手环之类的。M10结合了扩展板后,便携性确实是大大提高了,但感觉组合在一起,不像手表手环,倒是像一块板砖,一块带屏幕的小板砖。

软件方面,以往的项目都是用图形化的编程界面,这次打算尝试一下Python编程。

先来展示一下作品最终效果,说得直白一点,其实就是用纯Python编程做了一个钟,利用电池扩展板的便携性,拿在手上揣在裤兜,非常的方便,遇到紧急情况还能临时用来做为“小板砖”之用。
纯Python编程的好处就是编程自由,Python库内容丰富,而且可以用各种编译器来就进行程序调试,非常方便。与图形化编程相比,不再受图形化编程的局限和约束,当然对编程水平的要求也相应的提高了,需要有Python编程的基础。
【实操流程】
一、Mind+准备
首先通过USB连接线将行空板连接到计算机,连接电脑仅仅用于编程,后续当“小板砖”用时,打开电池扩展板电源,即可实现“轻装上阵,无线可能”。
启动Mind+软件,点击“Python模式”,选择“代码”编程方式,在“项目中的文件”新建Python程序文件,双击文件即可对该文件在程序编写区内进行编程。

二、程序编写
1、导入所需功能库
其中tkinter是Python的一个标准GUI(图形用户界面)库,功能类似于unihiker库中的GUI模块。
2、初始化与参数设置
这部分代码完成了:
(1)创建tkinter主窗口,设置标题、尺寸和背景色;
(2)定义时钟的几何参数:中心点坐标 (100,100) 和半径90像素;
(3)调用三个关键方法:界面设置setup_ui、表盘绘制draw_clock_face和时钟更新update_clock。
3、界面设置与画布创建setup_ui
这里创建了两个主要界面元素:
(1)canvas画布:200x200像素大小,用于绘制时钟的所有图形元素;
(2)数字时间标签:使用24号Arial字体,绿色文字显示精确时间;
(3)通过pack布局管理器设置元素间距。
4、表盘绘制原理draw_clock_face
这部分代码实现了:
(1)绘制圆形外框:使用create_oval方法,根据中心点和半径计算边界坐标
(2)绘制 12 个时刻刻度:每个小时刻度间隔30度(360度/12小时);使用三角函数计算每个刻度的起点和终点坐标;刻度线长度为10像素(从半径减10到半径)
(3)绘制中心圆点:标记时钟中心位置
(4)创建指针:初始化为垂直向上(12点位置),后续会动态更新
5、指针运动的数学原理draw_clock_face

这里是整个程序的核心逻辑,涉及几个关键数学概念:
(1)角度计算
秒针:每秒移动6度(360度/60秒)
分针:每分钟移动6度,同时考虑秒数的影响(例如,30秒时分针移动0.5度)
时针:每小时移动30度(360度/12小时),同时考虑分钟的影响(例如,30分钟时时针移动15度)
(2)坐标转换
使用三角函数将角度转换为画布上的坐标:
x = center_x + radius * cos(angle)
y = center_y + radius * sin(angle)
(3)角度修正
由于数学中的角度以3点钟方向为0度,而时钟通常以12点钟方向为0度,因此需要减去90度(- 90)进行修正。
(4)指针长度
时针:半径的1/3
分针:半径的2/3
秒针:半径的5/6
通过不同长度区分三根指针的层级关系。
(5)动态更新机制
数字时间更新:使用strftime('%H:%M:%S')格式化当前时间;
递归调用:通过root.after(1000, ...)方法,每1000毫秒(1 秒)调用一次update_clock方法;
非阻塞更新:这种方式不会阻塞tkinter 的主事件循环,确保界面响应流畅。
6、程序执行流程
当运行这个程序时,执行流程如下:
(1)创建AnalogClock类的实例;
(2)初始化方法__init__被调用:
- 创建窗口和设置参数
- 设置界面元素
- 绘制表盘(静态背景)
- 启动时钟更新(每秒一次)
- (3)tkinter 进入主事件循环,处理以下事件:
- 每秒更新指针位置和数字时间
- 处理用户可能的界面交互(如窗口调整、关闭等)
三、网络设置
要想作为一块具有便携性的“小板砖”,无线网络肯定是少不了的,在这里就不一一赘述了,有线的设置如下图:

直接在行空板M10上的设置如下图:

四、扩展部分
除了用Mind+代码编程,行空板M10还支持Jupyter编程、Thonny编程和VSCode编程。
1、Jupyter编程(纯Python编程方式的优势之一,自由!)
打开Jupyter后台页面:

创建一个jupyter项目,输入代码,点击运行即可查看结果:

2、Thonny编程(纯Python编程方式的优势之二,还是自由!)
选择解释器为Remote Python 3(SSH),输入行空板的Host和Username,最后输入密码dfrobot,这样点击运行,代码就会在行空板上运行。

如果选择解释器为“Thonny的解释器(默认)”,这个是Thonny安装文件下的python主程序
或者“可选的python3解释器或虚拟环境”,这个是本地安装有的python主程序,都可以直接运行并模拟代码。

【板砖效果】
当手表手环用确实重了些,不过作为“小板砖”,紧急时候是可以防身用的,而且还是一块可以看时刻的“小板砖”。

多希望可以给行空板M10配上官方的屏幕保护壳啊,不知道这个项目结束的时候,愿望能否实现呢?
附件
评论