2352浏览
查看: 2352|回复: 16

[MP动手做] MicroPython动手做(12)——掌控板之Hello World

[复制链接]
1、连接掌控板(显示最新固件日期)

MicroPython动手做(12)——掌控板之Hello World图1

驴友花雕  中级技神
 楼主|

发表于 2020-4-16 17:16:51

2、打开IDE(mPython X),确认已经烧录固件,开发板项选择掌控板,选择端口(这里是COM10),打勾“自动连接”

核对五个红点处


MicroPython动手做(12)——掌控板之Hello World图1


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-16 17:50:08

3、代码编程(使用中文、韩文、英文、日文和法文,串口输出世界你好)

[mw_shl_code=python,false]print("世界你好")
print("안녕하세요")
print("Hello World")
print("こんにちは、世界")
print("Bonjour au monde")[/mw_shl_code]
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-16 17:55:01

4、图形编程(打印字符串)
MicroPython动手做(12)——掌控板之Hello World图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-16 17:58:25

MicroPython动手做(12)——掌控板之Hello World图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-16 19:06:20

5、Python print() 函数

print() 方法用于打印输出,最常见的一个函数。

语法

以下是 print() 方法的语法:

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

参数

objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。

sep -- 用来间隔多个对象,默认值是一个空格。

end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。

file -- 要写入的文件对象。

flush -- 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。

返回值

无。




打印字符串

print('Hello, world!')

示例结果:

Hello, world!

打印数字

print('1024')

示例结果:

1024

打印列表

L = [1, 2, 3, 4]print(L)

示例结果:

[1, 2, 3, 4]

打印元组

L = (1, 2, 3, 4)print(L)

示例结果:

(1, 2, 3, 4)

打印字典

D = {'one' : 1,'two': 2}print(D)

示例结果:

{'two': 2, 'one': 1}

打印格式化字符串

print('Hello, {}!'.format('world'))

示例结果:

Hello, world!

打印格式化浮点数

print('%10.3f' % 3.1415926)

示例结果:

3.142




三个关键字参数

sep

为在每个对象文本之间插入的字符串,默认为一个空格。 若传如空字符即无分隔符

end

为添加在打印文本末尾的字符串,默认为换行符'\n'

file

指定了文本将要发送到的文件,一般传入一个类似文件的

write(string)

即可,但如果使用了file,待打印文本就会输出到指定文件,而不是打印到屏幕上。


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-16 20:22:39

6、REPL(read-evaluate-print loop)
使用MicroPython的一个主要的优点是交互式的REPL,其代表读取﹣求值﹣输出循环。REPL对于学习一门新的编程语言具有很大的帮助,因为它能对初学者写的程序立刻做出回应,这意味着你执行代码,并能马上查看结果,而无需经过先编译再上传的繁琐步骤。通过串行端口建立连接后,您可以通过按几次Enter键来测试它是否正常工作,如果正常工作,您能看到Python REPL提示符,表示为 >>> 。按Enter键后,可在提示符处键入任何内容。 MicroPython将运行您输入的代码并打印结果(如果有的话);如果输入的文本出错,则会打印出错误消息。尝试在提示符下输入以下内容:

[mw_shl_code=python,false]>>> print("Hello World")
Hello World[/mw_shl_code]

MicroPython动手做(12)——掌控板之Hello World图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-16 20:36:11

7、可以尝试下载mPython的OLED显示屏上显示字符:
[mw_shl_code=applescript,false]>>> from mpython import *
>>> oled.DispChar('hello,world!',0,0)
>>> oled.show()
>>>[/mw_shl_code]
注解

oled.DispChar(str,x,y) str 为要显示的字符串, x 、y 为显示起点的x、y坐标。 然后用 oled.show() 刷新屏幕后,字符串即可显示在OLED显示屏上。可以尝试在其他位置显示任意字符串。


MicroPython动手做(12)——掌控板之Hello World图1





回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-16 20:44:33

MicroPython动手做(12)——掌控板之Hello World图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-16 21:04:16

8、行编辑与输入历史记录
可以使用向左和向右箭头键移动光标来编辑当前输入的行;按Home键或ctrl-A将光标移动到行的开头,按End或ctrl-E移动到行的末尾;Delete键或退格键用来删除。

REPL会记住您输入的一定数量的前几行文本(ESP32上最多8行)。 要调用上一行,请使用向上和向下箭头键。

Tab键
Tab键可以查看模块中所有成员列表。这对于找出模块或对象具有的函数和方法非常有用。 假设您在上面的例子中导入了machine然后键入 . 再按Tab键以查看machine模块所有成员列表:


[mw_shl_code=applescript,false]>>> machine.
__class__       __name__        ADC             DAC
DEEPSLEEP       DEEPSLEEP_RESET                 EXT0_WAKE
EXT1_WAKE       HARD_RESET      I2C             PIN_WAKE
PWM             PWRON_RESET     Pin             RTC
SLEEP           SOFT_RESET      SPI             Signal
TIMER_WAKE      TOUCHPAD_WAKE   Timer           TouchPad
UART            ULP_WAKE        WDT             WDT_RESET
deepsleep       disable_irq     enable_irq      freq
idle            mem16           mem32           mem8
reset           reset_cause     sleep           time_pulse_us
unique_id       wake_reason
>>> machine.[/mw_shl_code]
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-16 21:11:16

9、REPL的粘贴模式与其他控制命令

按 ctrl-E 将进入特殊粘贴模式,您可将一大块文本复制并粘贴到REPL中。如果按ctrl-E,您将看到粘贴模式提示:

paste mode; Ctrl-C to cancel, Ctrl-D to finish
===

然后,您可以粘贴(或键入)您的文本。请注意,没有任何特殊键或命令在粘贴模式下工作(例如Tab或退格) ,它们只是按原样接受。按 ctrl-D 完成输入文本并执行。

还有其他四个控制命令:

空白行上的Ctrl-A将进入原始REPL模式。这类似于永久粘贴模式,除了不回显字符。
空白处的Ctrl-B转到正常的REPL模式。
Ctrl-C 取消任何输入,或中断当前运行的代码。
空白行上的 Ctrl-D 将执行软重启。

MicroPython动手做(12)——掌控板之Hello World图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-17 09:29:14

10、OLED屏幕显示Hello World
用4种语言并且居中。

掌控板板载1.3英寸OLED显示屏,分辨率128x64。采用Google Noto Sans CJK 16x16字体,字体高度16像素点,支持简体中文,繁体中文,日文和韩文语言。实验代码如下:

[mw_shl_code=applescript,false]from mpython import *

oled.fill(0)
oled.DispChar("世界你好", 40, 0, 1)
oled.DispChar("안녕하세요", 37, 16, 2)
oled.DispChar("Hello, world!", 26, 32, 3)
oled.DispChar("こんにちは世界", 22, 48, 4)
oled.show()[/mw_shl_code]

注解

DispChar(str,x,y)函数可以将左上角为坐标的文本将写入FrameBuffer。str 为显示文本内容,支持简体中文,繁体中文,英文,日文和韩文语言。x y 为oled显示 起始xy坐标。oled.show() 为将FrameBuffer送至oled刷新并显示屏幕。

采用Noto Sans CJK 16像素等高,不等宽字体。不同字符,宽度会有所不一样。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-17 09:46:00

mPython X 图形编程(四种模式)

调整 x 数值,使显示的字符串“Hello World”能够居中。

MicroPython动手做(12)——掌控板之Hello World图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-17 10:06:06

MicroPython动手做(12)——掌控板之Hello World图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-17 10:35:04

11、mPython仿真功能显示Hello World
——没有掌控板也能测试运行程序

MicroPython动手做(12)——掌控板之Hello World图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-17 10:39:18

电脑上的显示效果如图

MicroPython动手做(12)——掌控板之Hello World图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-4-17 11:01:01

12、了解OLED屏幕

掌控板自带1.3英寸OLED显示屏。OLED(Organic Light-Emitting Diode),又称为有机电激光显示,由美籍华裔教授邓青云于1979年在实验室中发现。它是一种非常薄的有机材料涂层,具有自发光特性,换句话说,当有电流通过时,这些有机材料就会发光。OLED相比于传统显示屏幕,在技术优势上可以说是划时代的。OLED是广视角,具有几乎无穷高的对比度、较低的功耗、非常高的反应速度,全彩化并且制程简单等优点。OLED材料可以自发光,不需要增加背光源,可以大大简化工艺,缩减体积。基于以上种种优异特性,OLED被认为是下一代的平面显示器新兴应用技术。

掌控板OLED显示屏的分辨率128x64。分辨率指屏幕显示的像素个数。那什么是像素呢?掌控板OLED显示屏的分辨率128x64。分辨率指屏幕显示的像素个数。那什么是像素呢?你在屏幕上可以看到一张图片,但实际上,贴在屏幕边上看就会发现你的屏幕实际上是由无数个小点点组成的,因为每个点比较小,所以你的眼睛会误以为这是一张完整的图片。

一个像素就可以理解为屏幕上的一个点。屏幕正是由多个像素点组成。分辨率128x64的意思是水平方向含有128个像素,垂直方向含有64个像素。屏幕上一共有128x64个像素点。 通过“画点”指令,我们可以看到屏幕中的任意一个像素点。示例程序和运行结果如下图。在屏幕上可以看到一张图片,但实际上,你贴在屏幕边上看就会发现你的屏幕实际上是由无数个小点点组成的,因为每个点比较小,所以你的眼睛会误以为这是一张完整的图片。 一个像素就可以理解为屏幕上的一个点。屏幕正是由多个像素点组成。分辨率128x64的意思是水平方向含有128个像素,垂直方向含有64个像素。屏幕上一共有128x64个像素点。通过“画点”指令,我们可以看到屏幕中的任意一个像素点。


MicroPython动手做(12)——掌控板之Hello World图1

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail