【行空板 Python编程学习主控板评测二】Mind+图形化编程——数字时钟
一、Mind+简介
Mind+是一款拥有自主知识产权的国产青少年编程软件,集成各种主流主控板及上百种开源硬件,支持人工智能(AI)与物联网(IoT)功能,既可以拖动图形化积木编程,还可以使用Python/C/C++等高级编程语言,让大家轻松体验创造的乐趣。
Mind+中的Python模式具有如下特点:
二、Mind+准备
从Mind+官网下载最新版本(不低于V1.7.0) http://mindplus.cc
安装教程及如果出现问题可以参考Mind+官方文档: 安装教程
安装完成后即可打开Mind+。点击切换到Python模式,即可进入Python模式界面。
主界面如下:
图1 Mind+下的Python模式主界面图
①菜单栏:
项目:对整个项目文件sb3的操作(包括其他模式),包括新建、打开、另存、最近编辑、缓存列表。
教程:包含官方文档、官方论坛、视频教程、示例程序。
②编辑模式切换:
模块:Python的图形化编程界面。
代码:Python的代码编程界面。
③积木选择区:所有图形化积木或已加载的扩展库中的图形化积木均出现在此处,可拖动到积木编辑区,从积木编辑区拖动积木到此区域则为删除。
④扩展库:非常用的功能,例如海龟绘图等图形化积木功能可以从扩展库中加载,扩展库中有官方库及用户库(开发中,后续版本开放),官方库为Mind+官方内置于软件中的扩展库,用户库为第三方用户开发的图形化扩展库。
⑤积木编辑区:此处进行图形化编程,积木需要连接到Python主程序开始或其他帽子型积木后方才会被执行,此处的积木拖动到③积木选择区则为删除积木。
⑥快捷工具区:
运行按钮:当打开的文件为py文件时,点击可以运行py文件,运行时点击可以停止运行。
代码区开关:可以隐藏或显示代码区和终端区,以获取更大的编程区域。
⑦自动生成代码区:此处会自动根据积木区的积木程序自动 生成对应的Python代码,程序实际上运行的是这里的Python代码,如果需要编辑可以复制到代码模式编辑。
⑧终端信息输出区:Python运行的输出信息、错误信息、REPL交互等操作。
三、Mind+对行空板编程
Mind+从V1.7.2 RC3.0版本开始加入对行空板的支持,使用Mind+对行空板编程的优点:
1、使用指南
2、行空板Python库安装。
行空板出厂系统内置了Python及很多常见库,也可以安装更多其他Python库,本文讲述使用Mind+安装库的操作方法。
连接WiFi
常规通过网络安装第三方库时需要行空板连接网络,因此首先需要保证行空板连接了具有网络功能的WiFi。
图2 行空板无线连接界面图
安装库
打开Mind+,连接行空板,切换到代码标签页,点击库管理,此时库管理页面左上角显示行空板logo,说明此处显示的是行空板的库管理。
图3 行空板安装库操作示意图
更新库
行空板联网后,打开库管理,切换到PIP模式,输入pip install -U 要更新的库名字回车等待运行完成即可更新指定库到最新版本,见图4。例如:
图4 行空板python库更新操作界面示意图
加载行空板库
在图1中选择,出现如下界面,选择行空板即可加载库,如图5所示。便可使用行空板专用功能模块,如图6所示。至此,我们就可以在MInd+环境下进行图形化编程与开发。
图5 mind+环境加载行空板库操作界面示意图
图6 mind+环境下行空板积木模块示意图
四、亲手做个数字时钟
1、预备知识
利用行空板显示一个模拟时钟和一个数字时钟,要用到行空板图像化编程中的时钟显示、仿数码管显示、文字显示、控制等积木,同时还要使用python时间函数、分别是获取本地时间函数time localtime()、获取当前时间戳函数time.time()和时间戳格式转换函数time.strftime(),time.strftime()中时间格式字符如下:
为了能够显示时间段名称,如上午、下午等,需采用24小时制,为了凝固显示中文星期名称,我们建立了一个字典,通过关键字进行转换,如下图
2、图形化编程
各积木名称及参数设置说明如下。
模拟时钟、数字时钟、日期显示部分如下图:
时间段计算如下图所示:
时间更新如下图:
完整的程序代码如下:
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from unihiker import GUI
import time
u_gui=GUI()
time.sleep(0.1)
week_c = {"Mon": "星期一","Tues":"星期二","Wed":"星期三","Thur":"星期四","Fri":"星期五","Sat":"星期六","Sun":"星期日"}
label=u_gui.draw_text(text="数字时钟",x=70,y=10,font_size=20, color="#FF0000")
clock=u_gui.fill_clock(x=120,y=130,r=60,color="#000000",fill="#99FFFF")
date1=u_gui.draw_text(text="日期:",x=10,y=200,font_size=16, color="#CC33CC")
date_l = time.strftime("%Y年%m月%d日",time.localtime(time.time()))
week_k = time.strftime("%a",time.localtime(time.time()))
week_n = (week_c[week_k])
date2=u_gui.draw_text(text=date_l,x=70,y=200,font_size=16, color="#FF9966")
wekk_1=u_gui.draw_text(text=week_n,x=80,y=230,font_size=16, color="#0000FF")
label1=u_gui.draw_text(text="上午:",x=5,y=260,font_size=16, color="#FF0000")
alarm_h=u_gui.draw_digit(text="00",x=55,y=270,font_size=16, color="#0000FF")
label=u_gui.draw_text(text="点",x=85,y=260,font_size=16, color="#0000FF")
alarm_m=u_gui.draw_digit(text="00",x=110,y=270,font_size=16, color="#FF6600")
label=u_gui.draw_text(text="分",x=140,y=260,font_size=16, color="#0000FF")
alarm_s=u_gui.draw_digit(text="00",x=165,y=270,font_size=16, color="#660000")
label=u_gui.draw_text(text="秒",x=200,y=260,font_size=16, color="#0000FF")
while True:
hour = int(time.strftime("%H",time.localtime(time.time())))
min1 = int(time.strftime("%M",time.localtime(time.time())))
sec = int(time.strftime("%S",time.localtime(time.time())))
if (hour > 11):
if (hour < 7):
label1.config(text="下午")
else:
label1.config(text="晚上")
hour = (hour - 12)
else:
if (hour < 6):
label1.config(text="凌晨")
else:
label1.config(text="上午")
clock.config(h=hour,m=min1,s=sec)
alarm_h.config(text=hour)
alarm_m.config(text=min1)
alarm_s.config(text=sec)
3、在行空板上的运行结果
通过四、总结
总体上来说,使用mind+对行空开发板进行编程,操作简便,功能强大。特别适合python初学者使用。