Microbit Python 課程介紹 --MicroPython Images

2017-05-22 08:27

Microbit Python 課程介紹 --MicroPython Images

Microbit Shop

MicroPython 是很容易將5x5 的紅色LEDs (light emitting diodes 在板子的正面)。 MicroPython 給了很多顯示上的控制效果。有很多已經建好的圖形像 Happy,這段程式就是教你在Microbit 上,如何用已經建好的笑臉(HAPPY)的圖形。

from microbit import *

display.show(Image.HAPPY)

 

假設你沒忘記第一行程式的用途,第二行則是用 display 物件去 show 已經建好的圖形。這happy HAPPY圖形是在 Image 物件下, 我們用 show () 去顯示它。

這裡有內建的圖形清單:

  • 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

很多是吧!  來改一下程式看看其他圖形的樣子? (只要用上面清單去取代 Image.HAPPY )

DIY Images

你可以自己創造自己的圖形嗎? 當然是可以! 而且非常容易!

每一個實際的LED圖素是可以被設成0 到 9 的值!  當然0 就代表不亮,9 就是全亮, 1 到8 就代表不同的亮度值!  根據這些資料,我們就可以創造新的圖形就像這段程式碼:

from microbit import *

 

boat = Image("05050:"

             "05050:"

             "05050:"

             "99999:"

             "09990")

 

display.show(boat)

(當把這段程式執行在裝置上,你會看到桅桿帆船的圖形)

是不是很容易呢?  我們只要雙引號 " 內五個數字後加上 : ,用5行的方式表示,每一個數值都代表不同圖素的亮度。這樣就完成新的圖形 。

事實上,你也可以不用一行一行寫,也可以把它寫成一行的表示,就像:

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

 

Animation

靜止的圖形是很有趣,但能讓他們移動,就會更有趣。對MicroPython 來說,十分容易的,只要把它做成一個影像的 list (list of images) !

這裡有個採購清單:

Eggs

Bacon

Tomatoes

把它們在python 中表示成List :

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

在Python 中用([ and ]) 來表示List ,在上面程式碼中, shopping 有三個字串"Eggs", "Bacon" 和 "Tomatoes",然後用 comma (,) 隔開。在Python 中你可以在List 中,放任何東西。像primes = [2, 3, 5, 7, 11, 13, 17, 19] ,就是一個數字List 。

Note

這裡似乎會讓你混淆,數字需要用字串的方式表示嗎? 不用擔心,我們馬上就可以看到另外的使用方式。.

我們可以用不同的資料型態放在List 中:

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

字串,數字,甚至圖形!

from microbit import *

 

display.show(Image.ALL_CLOCKS, loop=True, delay=100)

 

跟一個圖形比起來,我們可以使用 display.show 去show 一個 List 就像 Image.ALL_CLOCKS ,並且下參數讓它 loop=True 一直迴圈跑及 每個圖形間間隔delay=100 100 ms 。

你可以試著用 Image.ALL_ARROWS 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)       

這段程式是如何寫的:

·        先製作了六個 boat 圖形

·        然後把它們放在一個 all_boats  的 List

·        最後 ,用 display.show  將這 list 作成中間間隔 200 milliseconds 的動畫

·        因為我沒有設 loop=True ,所以這船很精準地只沉了一次!  :-)

你想要做什麼動畫呢? 要有什麼特殊效果? 可以作成淡入淡出的效果嗎?

Microbit 台灣 商店

Microbit 中文 課程 : Python , Javascript, 物聯網

              中國

—————

返回