回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

行空板M10扩展板+可看时刻的小板砖 中等

头像 JOVI 2025.06.19 34 0

【思维导图】

可看时刻的小板砖.jpg

【项目简介】

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

IMG_20250529_140424.jpg

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

2025-06-23_10-23-04.png

希望活动结束后,可以有机会得到这个保护壳,这样就完美了。

【创意思路】

搭配M10扩展板的初衷就是,为了利用行空板M10结合电池扩展板,来设计更智能更实用的便携式设备。因此,第一反应就是要设计可佩戴的,比如手表、手环之类的。M10结合了扩展板后,便携性确实是大大提高了,但感觉组合在一起,不像手表手环,倒是像一块板砖,一块带屏幕的小板砖。

IMG_20250530_075447.jpg

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

image.png

先来展示一下作品最终效果,说得直白一点,其实就是用纯Python编程做了一个钟,利用电池扩展板的便携性,拿在手上揣在裤兜,非常的方便,遇到紧急情况还能临时用来做为“小板砖”之用。

纯Python编程的好处就是编程自由,Python库内容丰富,而且可以用各种编译器来就进行程序调试,非常方便。与图形化编程相比,不再受图形化编程的局限和约束,当然对编程水平的要求也相应的提高了,需要有Python编程的基础。

【实操流程】

一、Mind+准备

首先通过USB连接线将行空板连接到计算机,连接电脑仅仅用于编程,后续当“小板砖”用时,打开电池扩展板电源,即可实现“轻装上阵,无线可能”。

启动Mind+软件,点击“Python模式”,选择“代码”编程方式,在“项目中的文件”新建Python程序文件,双击文件即可对该文件在程序编写区内进行编程。

image.png

二、程序编写

1、导入所需功能库

image.png

其中tkinter是Python的一个标准GUI(图形用户界面)库,功能类似于unihiker库中的GUI模块。

2、初始化与参数设置

image.png

这部分代码完成了:

(1)创建tkinter主窗口,设置标题、尺寸和背景色;

(2)定义时钟的几何参数:中心点坐标 (100,100) 和半径90像素;

(3)调用三个关键方法:界面设置setup_ui、表盘绘制draw_clock_face和时钟更新update_clock。

3、界面设置与画布创建setup_ui

image.png

这里创建了两个主要界面元素:

(1)canvas画布:200x200像素大小,用于绘制时钟的所有图形元素;
(2)数字时间标签:使用24号Arial字体,绿色文字显示精确时间;
(3)通过pack布局管理器设置元素间距。

4、表盘绘制原理draw_clock_face

image.png

这部分代码实现了:
(1)绘制圆形外框:使用create_oval方法,根据中心点和半径计算边界坐标
(2)绘制 12 个时刻刻度:每个小时刻度间隔30度(360度/12小时);使用三角函数计算每个刻度的起点和终点坐标;刻度线长度为10像素(从半径减10到半径)
(3)绘制中心圆点:标记时钟中心位置
(4)创建指针:初始化为垂直向上(12点位置),后续会动态更新

5、指针运动的数学原理draw_clock_face

image.png

这里是整个程序的核心逻辑,涉及几个关键数学概念:
(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 进入主事件循环,处理以下事件:
    • 每秒更新指针位置和数字时间
    • 处理用户可能的界面交互(如窗口调整、关闭等)

三、网络设置

要想作为一块具有便携性的“小板砖”,无线网络肯定是少不了的,在这里就不一一赘述了,有线的设置如下图:

image.png

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

image.png

四、扩展部分

除了用Mind+代码编程,行空板M10还支持Jupyter编程、Thonny编程和VSCode编程。

1、Jupyter编程(纯Python编程方式的优势之一,自由!)

打开Jupyter后台页面:

image.png

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

image.png

 

2、Thonny编程(纯Python编程方式的优势之二,还是自由!)

选择解释器为Remote Python 3(SSH),输入行空板的Host和Username,最后输入密码dfrobot,这样点击运行,代码就会在行空板上运行。

image.png

如果选择解释器为“Thonny的解释器(默认)”,这个是Thonny安装文件下的python主程序

或者“可选的python3解释器或虚拟环境”,这个是本地安装有的python主程序,都可以直接运行并模拟代码。

image.png

【板砖效果】

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

IMG_20250623_162320.jpg

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

productImage

评论

user-avatar