# 3. Micro:bit Custom Images¶

Quick Overview of Day

Learn how to create your own custom Micro:bit images. Continue working on creating a Micro:bit game, making sure to create at least one fruitful and one non-fruitful function.

## 3.1. Creating Custom Images on the Micro:bit¶

We have seen that we can display many built-in images on the Micro:bit. You can display any of the built in images (see the List of Pre-Defined Images) by doing something like:

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


What if you want to create your own images? The way an image is created on the Micro:bit is by making a string that represents each LED/pixel on the Micro:bit. For each LED, you need to set the value to be a number from 0 to 9, which is the brightness of that LED. Setting the brightness to 0 means that LED should be off, while setting the brightness to 9 means turning it on as bright as possible. Any number in between will set the LED to be turned on somewhat bright, where 1 is the least bright, and 8 is almost the brightest.

The following code creates an image of the side of a die, and displays it on the Micro:bit:

import microbit

dice = microbit.Image("33333:39093:30003:39093:33333")

microbit.display.show(dice)


Although we can figure out what is going on in the above code (each row is separated by a :), it would be nice to improve the readability of creating our own images. One way we can do this is to use concatenation to join a number of strings together. Consider the following:

Recall that the + operator means concatenation (think join) when used on strings. Python gives us a second way to concatenate two strings together, as follows:

The purpose of using this second style of concatenation is simply to increase the readability of your code. It would be a poor decision to use this style in the example above, but it is a great choice when we think back to how we might come up with a customized image for the Micro:bit to display. Consider the following, which accomplishes the same task of making and displaying a boat image:

import microbit

# using the \ character at the end of a string tells Python to
# keep looking for more of the string on the next line, and
# concatenates the strings automatically for you

dice4 = "33333:" \
"39093:" \
"30003:" \
"39093:" \
"33333"

the_roll = microbit.Image(dice4)
microbit.display.show(the_roll)


Note

If you would rather not teach/use another method of concatenation, you could also accomplish the same thing by creating a fruitful function that combines multiple strings together for you, as follows:

import microbit

def create_microbit_image(row1, row2, row3, row4, row5):
"""Takes in 5 strings, each containing 5 integers.
Returns an image that works on the micro:bit"""
combined_string = row1 + ":" + row2 +  ":" + row3 +  ":" + row4 +  ":" + row5
custom_image = microbit.Image(combined_string)
return custom_image

line1 = "33333"
line2 = "39093"
line3 = "30003"
line4 = "39093"
line5 = "33333"

the_roll = create_microbit_image(line1, line2, line3, line4, line5)
microbit.display.show(the_roll)


The create_microbit_image() fruitful function defined above allows us to pass in 5 strings, each containing 5 integers representing the brightness of an LED. Organizing our code in this way allows us to visualize what the image will look like, simply by looking at the code.

## 3.2. Work Time on Assignment¶

Continue working on your current assignment (focused on creating fruitful and non-fruitful functions).

Next Section - 4. Animating a Micro:bit LED Image with a for Loop