Maker.io main logo

Getting Started with scroll:bit and Microsoft MakeCode

2022-08-02 | By Pimoroni

License: See Original Project

Courtesy of Pimoroni

Guide by Pimoroni

scroll:bit is a grid of bright white LEDs that you can control with ‎your micro:bit, making them do a bunch of stuff like displaying and scrolling ‎text, simple animations, and more! We've designed it to be really easy to use: ‎just plug your micro:bit into the slot, fire up Microsoft MakeCode, and away ‎you go!‎

In this tutorial, we'll look at how to get up and running, how to display and ‎scroll text and icons, control pixels, a simple animation, and lastly how to link ‎in with the sensors on the micro:bit, by making a spirit level!‎

This tutorial is looooooong but each section, after the four sections on getting ‎set up, should stand alone so you can dip in and out at your leisure. :-)‎

Connecting scroll:bit to your micro:bit

There's just one catch to connecting scroll:bit to your micro:bit; remember to ‎have both the LEDs on scroll:bit (the grid with numbers along two sides) and ‎the LEDs on your micro:bit (the 5x5 grid) the same way up when you plug the ‎micro:bit in (as in the image above).‎

Push your micro:bit into the slot firmly until it won't go in any further. About ‎half of the large holes on the bottom of the micro:bit should be sticking out of ‎the top of the connector.‎

Nothing bad will happen if you plug in your scroll:bit the wrong way, so don't ‎worry about getting it wrong!‎

Connecting your micro:bit to your computer

To code your scroll:bit and micro:bit, you'll need to connect them to your ‎computer or tablet. You'll need a micro-USB cable to do this. If you don't ‎already have one, you can get one here, or you can get a handy micro:bit ‎accessories kit that has a micro-USB cable, battery pack, and ‎batteries, here.

‎Plug the little end of the cable into the top of your micro:bit, and the big end ‎into one of your computer or tablet's USB ports. You should see your micro:bit ‎appear as a new drive called "MICROBIT". We'll use this later to drag our ‎code onto, to transfer it across to the micro:bit.‎

Using Microsoft MakeCode

Microsoft MakeCode is a block-based coding system, where you drag, drop, ‎and connect together different blocks to build your own code. We've made a ‎MakeCode package to let you code your scroll:bit really simply.‎

It's great for a couple of reasons: first, you don't have to remember a bunch ‎of complicated commands that will fail if you don't type them exactly correct ‎and, second, it teaches you the principles of coding like conditionals, loops, ‎and so on (don't worry if you don't know what those words mean yet) that ‎you'll need as you get onto more advanced coding.‎

Let's jump into MakeCode! Open your web browser, and head to the following ‎URL: https://makecode.microbit.org . Click on the big purple "New ‎Project" button, give your project a name, and click on the "Create" button.‎

makecode_1

You'll see a window like the one below - this is the MakeCode editor. We'll ‎very quickly go through how it's laid out.‎

window_2

We'll begin with the menubar at the top. The "Home" tab returns you to the ‎previous screen and the "Share" tab lets you publish and share your projects. ‎The "Blocks/JavaScript" slider lets you code with blocks and then view the ‎equivalent code in JavaScript, or vice versa. Last, there's a help tab and a ‎settings tab.‎

The main part of the window has a little preview of the micro:bit itself that ‎will show a simulation of your code (although not of scroll:bit), a list of the ‎different types of code blocks in the middle, and a large grey area on the right ‎where you'll stick the blocks together to build your code.‎

At the bottom, you can "Download" your code, name and save your project, ‎undo or redo, and zoom in or zoom out on your code blocks.‎

Try clicking on a couple of the code block groups in the middle, ‎like "Input" or "Math" to get an idea of the types of blocks that there are.‎

Adding the scroll:bit package

The first thing we'll do is to add the scroll:bit package, which will add a new ‎menu item and set of blocks to that list in the middle of the MakeCode ‎window.‎

Click on the "Advanced" tab in the middle to drop down all of the advanced ‎menus, and then on "Extensions" to pop up the window where you can add ‎new packages. Type "scrollbit" into the box, and press enter, then click on the ‎scroll:bit icon to add the package.‎

package_3

You'll see that a new menu item called "Scroll:Bit" has appeared. Click on it, ‎and you'll see all of the new blocks that have been added. We're going to ‎start by looking at displaying text and icons on scroll:bit.‎

Note that you'll have to add the scroll:bit package again every time you ‎create a new project.‎

Scrolling text

In the Scroll:Bit blocks menu, click on the scroll " " at brightness 128 with delay 50 ‎ms block to add it to your code. Now drag it into the forever block, which is a ‎loop that runs constantly (in more advanced coding, this is called a whileTrue loop), so once it gets to the end of the first scroll then it'll go back to the ‎beginning and start again, and so on, and so on...‎

Click on the set of empty quotation marks, and then type "Hello world!" in the ‎box. We'll leave the brightness at 128, and the delay at 50ms (milliseconds), ‎for now.‎

Now give your project a name (click in the box at the bottom middle), ‎e.g., hello-world, and then save it, which will download a file ending in .hex. Move ‎that file that's downloaded to the "MICROBIT" drive, and you'll see the LED ‎blink on the back of your micro:bit while it uploads your code to the micro:bit. ‎After a few seconds you'll see your text scrolling on the scroll:bit!‎

bit_4

Here's how your project should look:‎

project_5

Microsoft MakeCode | Terms of Use | Privacy | Download

Try changing the text displayed, and the brightness and delay to see how the ‎values affect the way that the text looks.‎

Displaying icons

Let's start a new project. Click "Home" at the top and then "New Project" to ‎create a blank project. This means that you'll keep the hello-world project we ‎just made as it was.‎

You can display the same icons that you can display on the micro:bit's built-in ‎LED display on scroll:bit, although with scroll:bit's wider display you can ‎obviously display 3 of the 5x5 pixel icons across its display.‎

We'll start by displaying just one icon, and then try displaying three across the ‎whole display. Click on the display icon block in the Scroll:Bit blocks menu to add ‎it to your code window, then drag it into the "on start" block. Click on the icon ‎to drop down the whole selection of icons and pick your favourite to show. To ‎actually display our icon on scroll:bit, we'll also need to add a display your ‎changes block below (and connected to) our icon block.‎

Give your project a name (icons?), save and download it, then move it to ‎the "MICROBIT" drive again. Once the code has uploaded, you'll see your icon! ‎Look at where it's displayed, at the top left corner. This is because the LEDs ‎on scroll:bit are numbered from the top left corner beginning at 0,0.‎

We'll try now to display three icons equally-spaced and centred across ‎scroll:bit. Because the icons are 5x5 pixels and the display is 7 pixels high, we ‎can have one blank row at the top and bottom to centre the icon, and ‎because we are displaying three of the icons, we can have one blank column ‎between each of the icons. This means that every icon will be at row 1, and ‎the columns will be 0, 6, and 12, respectively.‎

Right click on the display icon block and then click "Duplicate" to make a copy of ‎it, then do it once more, so that we have three of them altogether. Connect ‎the three blocks to each other, making sure that the display your changes block is ‎still at the bottom.‎

On the first block, change the row to 1, and leave the column as 0. On the ‎second, make the row 1 again, and the column 6, then on the third make the ‎row 1 again, and the column 12. Change the icons to whatever you want!‎

Now save the project and upload it your micro:bit again. Don't the icons look ‎pretty and nicely-aligned!?‎

icons_6

Here's how the project should look:‎

look_7

Microsoft MakeCode | Terms of Use | Privacy | Download

Try to think about how you could move your display icon blocks into ‎the forever loop and then fade the brightness up and down to make the icons ‎pulse.‎

Controlling pixels

Start another new project. In this one, we'll look at controlling the individual ‎pixels on scroll:bit using a loop. In code, loops let you repeat the same task ‎over and over again, so that you only have to write one instruction and it gets ‎repeated a number of times.‎

We're going to begin by lighting the pixels in the top row, one at a time. Each ‎pixel on scroll:bit has a set of coordinates, which is the column and row ‎number of that pixel, beginning in the top left corner at 0, 0 and ending in the ‎bottom right corner at 16, 6. Notice that they begin at 0 rather than 1; this is ‎something that you'll get more used to when you get more advanced in your ‎coding.‎

We'll be using the forever loop, which repeats the same set of instructions ‎forever, as the name suggests. Grab a for index from 0 to 4 do block from the ‎Loops blocks menu, and the number of columns block from the Scroll:Bit blocks ‎menu. Replace the 4 in the for index... block with the number of columns block.‎

Next, from the Scroll:Bit blocks menu, grab a set pixel at col... block, and a display ‎your changes block. Put those blocks inside the the do part of the for index... block, ‎as in the project below, and change the col to index by getting an index block ‎from the Variables menu.‎

Save and download your project to your micro:bit, and watch closely what ‎happens! Each time the for index... loop runs, the index variable increases, so it'll ‎start at 0, then 1, then 2, and so on, until it reaches 16, the number of ‎columns. But... we're not changing the row number, so it's only row 0 that ‎gets filled up, and we're not clearing the pixels that we've already lit, so once ‎they fill up once we can't see them filling up again.‎

Let's improve it, and make it light each pixel in turn on the first row, then the ‎second row, and so on, so that it looks like it's scanning across the whole ‎display.‎

Click on the Variables block menu and then "Make a Variable" and make two ‎new variables called col and row. We'll be adding another for index... block inside ‎the one that we already have to deal with the rows and the columns.‎

Pull the existing for index... loop out of the forever block and put a new for ‎index... block inside the forever block. Change the to 4 to to number of rows by getting ‎the number of rows block from the Scroll:Bit blocks menu. Now put your other for ‎index... block inside the new one. Change the index on the first ‎‎(outermost) for block to row by clicking on the little arrow next to index, and ‎change the index on the second for block to col.‎

Lastly, change the index and 0 on your set pixel... block to col and row, so that ‎each the two for blocks loop the pixel that we're setting takes the value ‎that row, and col are at (they get bigger every time). Also add a clear ‎scroll:bit block from the Scroll:Bit blocks menu just above the set pixel... block, so ‎that any set pixels are cleared every time, meaning that only one pixel is lit at ‎any time. The whole thing should look like the project below.‎

lastly_8

Microsoft MakeCode | Terms of Use | Privacy | Download

Save and download your project to your micro:bit. Does it do what you expect ‎now? Experiment with changing round the col and row loops, and moving ‎the clear scroll:bit block to after the whole of the innermost for block.‎

save_9

Linking with the micro:bit's sensors

The micro:bit has built-in sensors and buttons. We're going to turn the ‎micro:bit and scroll:bit into a little spirit level that acts just like a real spirit ‎level, except the bubble is an LED!‎

Because this example is quite complicated, even though it's just five blocks ‎inside the forever loop, we'll show the whole project first, then go through how ‎it works step by step.‎

linking_10

Microsoft MakeCode | Terms of Use | Privacy | Download

If you've ever used a real spirit level, then you'll know that the little bubble ‎inside moves in the opposite direction to the direction that you move the ‎spirit level. So, if you tilt one end of the spirit level down, then the bubble will ‎move up to the other end. We'll make our spirit level do the same thing!‎

Because we want our spirit level to only ever show one pixel, then the very ‎first thing that we'll do inside our forever loop is to clear scroll:bit to clear the last ‎position that the pixel was in.‎

The next two lines work out which of the pixels to light, based on the values ‎from the accelerometer on the micro:bit. Accelerometers are devices that ‎can work out the acceleration acting on them at any one time in different ‎axes of motion. That sounds awfully complex, doesn't it? Well, in this case ‎the accelerometer is just measuring the acceleration due to gravity in the x, ‎and y axes, i.e., how much the board is being tilted in those directions.‎

Grab a couple of set item to 0 blocks from the Variables blocks menu, and then ‎click on Make a Variable in the Variables menu and make two new variables ‎called col and row. These will store our column and row pixels values that we ‎calculate. Click on the little dropdown arrow next to the index on the set index ‎to... block and change index to the col and row variables on each of your two ‎blocks respectively.‎

For each axis, the accelerometer will give a value between -1023 and +1023, ‎with 0 being when the board is being held perfectly flat. We need to translate ‎those values to numbers between 0 and 16 for the x axis, and between 0 and ‎‎6 for the y axis (the numbers of the pixels on scroll:bit).‎

Because of the negative numbers, we have to shift everything up by 1023 to ‎make all of the numbers positive. We do this by adding 1023, giving us ‎numbers from 0 to 2046. From the Math blocks menu, get two 0 + 0 blocks. ‎Also get two acceleration (mg) x blocks from the Input blocks menu.‎

Replace the first 0 in both 0 + 0 blocks with the acceleration... blocks and change ‎one of them to acceleration (mg) y, leaving the other as acceleration (mg) x. Change ‎the second 0 in both blocks to 1023.‎

To get the numbers into the ranges 0-16 and 0-6 we'd have to divide by 2046 ‎then multiply by either 16 or 6, but we can simplify that a little by just dividing ‎by 128 or 342 for the columns (x axis) and rows (y axis) respectively.‎

Get two 0 ÷ 0 blocks from the Math blocks menu and replace the first two 0s ‎with the two blocks we've built so far (acceleration (mg) x + 1023 and acceleration (mg) ‎y + 1023), and replace the second 0s with 128 and 342 for the columns (x axis) ‎and rows (y axis) respectively.‎

Last of all we do 16 minus or 6 minus those numbers we calculated to do the ‎flipping of the direction like a real spirit level. Use two 0 - 0 blocks from the ‎Math blocks menu and change them to 16 - acceleration (mg) x + 1023 ÷ 128 and 6 - ‎acceleration (mg) y + 1023 ÷ 342, before connecting them up to the set col to and set row ‎to blocks, respectively. Phew!‎

We just need to add the two blocks that will actually display our pixel on ‎scroll:bit: a set pixel at col col row row to 128 block and display your changes block from ‎the Scroll:Bit blocks menu. Drop all of the blocks into the forever loop to keep it ‎running... forever. Check the project above to see how your finished project ‎should look in case you got lost along the way!‎

Save and download your project to your micro:bit, then tilt your micro:bit and ‎scroll:bit this way and that to see how it works.‎

more_11

More ideas

This is just scratching the surface in terms of how you can use your scroll:bit. ‎Things get really fun when you add a second micro:bit and another of our ‎micro:bit add-ons like enviro:bit and use the radio to send data from one to ‎the other.‎

That's all folks!‎

制造商零件编号 PIM353
SCROLL:BIT
Pimoroni Ltd
制造商零件编号 2012414
MICRO:BIT V2 SBC-BOARD ONLY
OKdo
制造商零件编号 PIM355
ENVIRO:BIT
Pimoroni Ltd
Add all DigiKey Parts to Cart
TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum