Skip to content
wzp edited this page Oct 25, 2018 · 13 revisions

Document

logo

面板显示图像

MicroPython 是一个好的艺术开发载体,你可以用5*5的led矩阵搞个大新闻,MicroPython给你大量控制显示的内容,所以你可以创建各种有趣的效果。 然后在我们开始项目之前,你需要知道,MicroPython提供内置的很多图片供你使用,比如如果你想显示一个笑脸的话,你可能需要这么做:

from microbit import *
display.show(Image.HAPPY)

我假定你已经知道了第一行的用途,那么第二行其实就是使用了display对象去显示内置的image,我们想要展示的这个笑脸是Image对象的一部分,它的名字叫做Happy,我们要告诉show并将它放置在括弧内。 png

然后这里是内置的图片列表

  • Image.HEART
  • Image.HEART_SMALL
  • Image.HAPPY
  • Image.SMILE
  • Image.SAD
  • Image.CONFUSED
  • Image.ANGRY
  • Image.ASLEEP
  • Image.SURPRISED
  • Image.SILLY
  • Image.FABULOUS
  • Image.MEH
  • Image.YES
  • Image.NO
  • Image.CLOCK12, Image.CLOCK11, Image.CLOCK10, Image.CLOCK9, Image.CLOCK8, Image.CLOCK7, Image.CLOCK6, Image.CLOCK5, Image.CLOCK4, Image.CLOCK3, Image.CLOCK2, Image.CLOCK1
  • Image.ARROW_N, Image.ARROW_NE, Image.ARROW_E, Image.ARROW_SE, Image.ARROW_S, Image.ARROW_SW, Image.ARROW_W, Image.ARROW_NW
  • Image.TRIANGLE
  • Image.TRIANGLE_LEFT
  • Image.CHESSBOARD
  • Image.DIAMOND
  • Image.DIAMOND_SMALL
  • Image.SQUARE
  • Image.SQUARE_SMALL
  • Image.RABBIT
  • Image.COW
  • Image.MUSIC_CROTCHET
  • Image.MUSIC_QUAVER
  • Image.MUSIC_QUAVERS
  • Image.PITCHFORK
  • Image.XMAS
  • Image.PACMAN
  • Image.TARGET
  • Image.TSHIRT
  • Image.ROLLERSKATE
  • Image.DUCK
  • Image.HOUSE
  • Image.TORTOISE
  • Image.BUTTERFLY
  • Image.STICKFIGURE
  • Image.GHOST
  • Image.SWORD
  • Image.GIRAFFE
  • Image.SKULL
  • Image.UMBRELLA
  • Image.SNAKE

这数量是十分多滴,那么看到这里,你就可以自己尝试像画个笑脸一样画一些其他的表情。希望你玩的开心哦

图片大diy

当然,你肯定不会仅此满足,那么如何更进一步,创造自己的图片在micro:bit里面呢? 简单!!! 每一个LED在物理显示上可以被设置一个值,类似与高低电平,比如如果pixel设置成0,那么它的亮度就是0.然而如果它被设置成9,那么它就是最高的亮度。所以记住这句话,从0到9,亮度依次递增! 借用上面一句话,我们很容易创造一个我们想要的新图片。

from microbit import *

boat = Image("05050:"
             "05050:"
             "05050:"
             "99999:"
             "09990")

display.show(boat)

png (当运行时候,你应该可以看到一张这样的图片!!) 那么现在你应该已经了解如何画图拉~你应该注意到每一行的结尾有一个*:*然后同时附上了双引号,与此同时,为每一个矩阵格子附上了亮度,创建一张image就是如此简单,嘿嘿 实际上,你并不需要写那么多行,如果你能保证每一行不出错,你可以这样写

boat = Image("05050:05050:05050:99999:09990")

如何制作一个简单的动画

静态图片固然有趣,但是更多的乐趣是让它们动起来,这个是令人兴奋但在 MicroPython 中很容易做到,仅仅是使用图片的列表~! 加入这里有一些购物清单: [Eggs Bacon Tomatoes] 然后你需要用一种方式在 python 中表示这些玩意

shopping = ["Eggs", "Bacon", "Tomatoes" ]

这种方式叫list,也就是列表,我简单的创造了一个叫 shopping 的列表,然后它包含了3个元素,Python 知道它是一个列表,因为它有一对括号[],在列表中的元素被逗号分隔,然后在这个实例中,items包含了三个字符串,“Eggs”."Bacon"以及“Tomatoes”。我们要知道,它们都是字符串对象,因为它们用“”进行分割 你可以用list在python中储存任何玩意,下面的案例将教会大家如何用列表创建数字。 然后你需要用一种方式在 python 中表示这些玩意

shopping = [2, 3, 511 ]

列表同样存放许多不同类型的变量:

mixed_up_list = ["hello!", 1.234, Image.HAPPY]

注意到最后一个元素没有,它是一个Image对象,所以我们可以告诉 MicroPython 去存放一个Image的list,不过在内置的方法中,有已经做好的二个对象。他们叫 Image.ALL_CLOCKS 和 Image.ALL_ARROWS:

from microbit import *
display.show(Image.ALL_CLOCKS, loop=True, delay=100)

和单张image一样,我们使用display.show 让它在设备上显示,然而,我们告诉 MicroPython 使用 Image.ALL_CLOCKS 这个列表 然后它会理解并按顺序展示这个list所有元素, 我们也可以告诉 MicroPython 保持循环状态,通过 loop=True,另外,我们也可以设置这个动画切换图片的时间。通过下面一条代码。delay=100

你知道怎么创造一个动画了么,你了解如何避免一直循环下去了么。你可以改变动画的速度了么?如果你理解了,就试一试吧!~

最后让我们创造一个自己的动画list,在这个案例,我们将制作一个小船下沉到底部的动画

from microbit import *

boat1 = Image("05050:"
              "05050:"
              "05050:"
              "99999:"
              "09990")

boat2 = Image("00000:"
              "05050:"
              "05050:"
              "05050:"
              "99999")

boat3 = Image("00000:"
              "00000:"
              "05050:"
              "05050:"
              "05050")

boat4 = Image("00000:"
              "00000:"
              "00000:"
              "05050:"
              "05050")

boat5 = Image("00000:"
              "00000:"
              "00000:"
              "00000:"
              "05050")

boat6 = Image("00000:"
              "00000:"
              "00000:"
              "00000:"
              "00000")

all_boats = [boat1, boat2, boat3, boat4, boat5, boat6]
display.show(all_boats, delay=200)

剩下来的一些页面,我来讲一下代码为何可以工作。

  • 第一步我创造了6个船的image
  • 用一个list存储了他们。
  • 用display去显示这些图片,并设置延迟为200毫秒
  • 当然我并没有设置 loop=True ,所以这首船只会下沉一次。

好了,我们的这一章就到这里,你可以花时间好好消化一下,并且做出自己的美妙的动画吧!goodjob!

Clone this wiki locally