element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Members
    Members
    • Achievement Levels
    • Benefits of Membership
    • Feedback and Support
    • Members Area
    • Personal Blogs
    • What's New on element14
  • Learn
    Learn
    • eBooks
    • Learning Center
    • Learning Groups
    • STEM Academy
    • Webinars, Training and Events
  • Technologies
    Technologies
    • 3D Printing
    • Experts & Guidance
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Arduino Projects
    • Design Challenges
    • element14 presents
    • Project14
    • Project Groups
    • Raspberry Pi Projects
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Or choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
microbit
  • Learn
  • Learning Center
  • STEM Academy
  • microbit
  • More
  • Cancel
microbit
micro:bit Blog Save the Bees - A micro:bit project - The Bee
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
microbit requires membership for participation - click to join
Blog Post Actions
  • Subscribe by email
  • More
  • Cancel
  • Share
  • Subscribe by email
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: hifromkatie
  • Date Created: 1 Nov 2023 11:58 PM Date Created
  • Views 70 views
  • Likes 4 likes
  • Comments 0 comments
Related
Recommended

Save the Bees - A micro:bit project - The Bee

hifromkatie
hifromkatie
1 Nov 2023

The Bee

In each game there must be at least 1 Bee player.

This player will first find the Pollen, and then find all the Flowers to pollinate them.

See game instructions

You will need:

1 Micro:bit
1 Battery box and batteries
1 USB programming cable

You will also need a computer that is connected to the Internet and has a USB input in order to program each micro:bit.

Instructions:

On the computer, point your browser to https://makecode.microbit.org/  and select  New Project.  Name the Project "Bee."

The "on start" Block

We'll use the "on start" block, to setup the game.

image

Set Radio Signal Strength

Under "Radio" then "... more" we can find the "radio set transmit power" block.

image

Click on that block and drag it into the "on start" block. Then change the value in the white box to 0 by typing in the white box or moving the slider.

The value to 0 means we will be limiting the radio transmission to the lowest possible setting, which means the micro:bits will need to be within around a meter of each other to be able to "talk" to each other.

image

Create Variables

The next step is to create 3 variables, using the "Make a Variable..." button inside the "Variables" menu.
The variables should be:

  • game
  • pollen
  • count

To do this, go to 

image

Then 

image

Then name the variable and click OK 

image

Repeat this for the other two variables.  Your Variables should look like this:

image

Set the Values of the Variables

Now we are going to use the "set" block to set all 3 variables to 0 at the start of the game.

In the Variables menu, click the "set" block and drag it on to the "on start" block beneath "radio set transmit power." The variable for this one will default to "count".

Now drag another "set" block to "on start" and, using the drop down, change the variable name to "game."

image

Then drag another "set" block to "on start" and, using the drop down, change the variable name to "pollen."

Your "on start" block should now look like this:

image

Add LED Display

The last step in the "on start" block is adding an LED display of "B" to indicate this micro:bit is running the Bee code. Go to Basic, and drag the "show leds" block below the variables, then use your mouse to click the grey boxes and form a B shape.

image

The "on start" Block Should Look Like This:

image

The Code that Starts the Game

We want pressing the "A" button on the micro:bit to start a 30 second countdown timer, giving the Pollen and Flower players time to hide. 

To do this, go to the Input menu and click on the "on button 'A' pressed" block and drag it on to the workspace.

image

To create the countdown timer we'll go to Loops, click on the "for index from 0 to xx" block and drag it in to the "on button 'A' pressed" block.

image

Change the value in the white circle to "30".

We want the countdown timer to appear on the Bee's micro:bit screen. To do this we'll go to the Basic menu and drag "show number" into the "on button 'A' pressed" block.

image

Then we will put the index variable in the block, replacing the zero in the white circle above. To do this, go to Variables and select "index" and drag it on top of the "show number" block. 

image

NOTE: We didn't create the "index" variable - Makecode automatically created it as soon as we inserted the "for index from 0 to xx" block above.

We want the countdown to last 30 seconds. To do this, we will put a delay of 1 second between each number. In the Basic menu, click the "pause (ms)" block and insert it into the "for index from 0 to xx" block.

image


We will then use the "pause (ms)" block from the Basic menu to create a 1 second delay between each number (this will make it count in seconds). Click on the value in the white circle and you'll see a drop down of time increments. Select 1 second from the list - the inserted value will be shown as 1000ms (1000 miliseconds = 1 second).

image

When the "for index from 0 to xx" block completes its task of counting down from 30, we want to display a message so the Bee knows it's time to start searching. 

To do this, go to the Basic menu, click on the "show string" block and drag it into the "on button A pressed" block.

image

Click on the string where the text says "Hello!" and change replace it with "GO!"

The final step in the block is to set the Game counter. In Variables, click on "set <variable> to" block and drag it to the bottom of the "on button A pressed" block.

image

Next, select the "game" variable from the drop down list and change the value in the white circle to 1.  

Your code should now look like this:

image

Finding Pollen and Flowers

When the A button is pressed on the micro:bit, the game is underway and the Bee must find Pollen and Flowers. Remember, we set the radio transmit area to 0 in the "on start" block. That means the radio only works within a distance of about 1 meter so the Bee will have to find the other players to see what messages those micro:bits are sending.

To make the Bee micro:bit start searching for signals from the Pollen and Flower micro:bits, we must do the following.  

In Radio, click the "on radio received receivedString" block and drag it to the work area.

image

Since the Bee's micro:bit will be receiving strings from the other players' micro:bits, we need to define what we're looking for ("Pollen" or "Flower") and then tell the micro:bit what do do based on the value received. To do this we'll be using If blocks. The first thing we'll check is whether or not the game has started.  

In the Logic menu, click on the "if" block and drag it into the "on radio received receivedString" block. 

If you'd like more information on how this block works, see the Makecode help section on the "If" block.

image

We want to replace the "true" drop down with a comparison - so that we can compare the value to what we want the value to be. In this case, we want the game to have started, so we're looking for the "game" variable to be set to "1" (we set this in the final step of the  "on button A pressed" block above).

Go to Logic and then select the comparison block that looks like this:

image

Drag it on top of the if block: 

image

What we are looking for is the "game" variable to be set to 1. To look for this comparison, we'll drag the "game" variable from the Variables menu. 

image

Then drag it on top of the left value of the "If" block to the left of the equal sign:

image

Finally, change the value from 0 to 1. This tells the micro:bit that if the "game" variable is set to 1, run the rest of the if blocks nested within. But if the "game" variable is not 1, then it will do nothing. 

Check for Pollen

The Bee cannot pollinate the Flowers unless it has Pollen, so the Bee must find the Pollen player first. Inside the "if" block that makes sure the "game" variable is set to 1, we will be inserting another "If" block.

image

Following the same steps as above, drag a comparison block on top of the new "If" block. Then drag and drop the "pollen" variable on top of the left side of the comparison equation, leaving the comparison value on the right of the equal sign 0.

image

This means that if our "pollen" variable is 0, then run the next nested block.

Our next nested block will check if the value we receive from a player's micro:bit is "pollen." Click another "if" block and drag it into the "if pollen = 0" block.  

image

In this "if" we will be comparing text strings, so insert the following comparison block on top of the new "if" block.

image

On the left-hand side we will put "receivedString", we can do this by dragging the oval red block from the "on radio receivedString" header.

image

Then we will put "pollen" on the right-hand side.

Your code should now look like this:

image

We've checked that the Game has been started, that the Bee has no pollen, and that the text string received from another player's micro:bit is "pollen."  If all of these are true, we'll run the next block that is inserted in this "if" block. In this case, we'll set the Bee's "pollen" variable to 1 and play a little sound to indicate the success of finding pollen.

To play the sound, go to Music and drag the "play" block into the "if" block. 

Then go to Variables and drag the "set" block into the "if" block. Change the variable to "pollen" and the value to 1.

It should look like this:

image

So far, we've checked that the game has begun (variable "game" = 1) and the Bee didn't have pollen ("pollen" = 0), then we found pollen from the Pollen player's micro:bit ("receivedString = "pollen"") meaning that set of "if" blocks is complete. 

But now that the Bee has pollen, it's time to find the flowers. We'll add a new "if" block that checks the "receivedString" for a different message.  

Go to Logic and grab an "if" block and insert it in the "game" if block, below the other nested "if" blocks.

image

Drag a text comparison block on top of the new "If" block. Then click on the "receivedString" in the "on radio received receivedString" block and drag it on the left side of the comparison. In the right side of the comparison, enter "Thanks."

We want to keep track of how many Flowers the Bee finds, so in Variables we'll click on the "change" block and drag it in to the "If" block. Change the variable to "count" and ensure the value is 1. You should have something that looks like this:

image

Forever Block

Code in the Forever Block runs all the time. This means that as soon as it finishes, the block starts again. We're going to do two things in the Forever loop. First, we'll send a message from the micro:bit that it's a Bee carrying Pollen. Second we'll create some visual displays that show what's happening.

If you don't already have a forever block on your workspace, you can drag one over from the Basic group.

Send the Bee with Pollen Message

We'll be using "if" blocks again here. We want to check that the game is underway ("game" = 1) and that the Bee has pollen ("pollen" = 1). That means we'll be adding two "if" blocks to the forever block.

In the first "if" block, change the comparison to: 

image

Then set the variable on the left to "game" (select and drag from the Variable menu) and set the value on the right to 1.

Insert another "if" block inside that one, change the comparison as above, make the variable "pollen", and make the value on the right 1.

You should now have this:

image

Now we want to send a message to the other micro:bits in the area, telling them that we're a Bee with pollen. To do this, in Radio, click on "radio send string" and drag it into the forever block and change the string to "Bee."

image

Setup Visual Display Elements

To give the Bee player some visual cues on the micro:bit, let's add an LED display and show the number of Flowers that we've pollinated.

From Basic, click and drag the "show leds" display into the forever block, beneath the "radio send string." Change the grey boxes to something like the following example (or whatever you'd like!).  

We're going to alternate between this led display and the number of Flowers polinated.  From Basic, click and drag "pause" beneath the "show leds."  

Then, from Basic, click and drag the "show number" block beneath the "pause" block. "Count" is the total number of Flowers pollinated, so click on that variable in the Variables menu and drag it on top of the "show number" block.

Finally, drag another "pause" block beneath the "show number" block. I've set the value for both "pause" blocks to 500 - but you can experiment with different pause values to find what works best for you.  

My finished forever block looks like this:

image

Finally, we need to add our code to the Forever block. If this is not showing, then you can find it in the "basic" menu.
This is code which will run all the time, as soon as it has finished the block, it will start again.

We are going to use "if" blocks to ask questions again.
Like before, we are going to use the equals comparison, the left-hand side is the game variable, the right-hand side is 1.

If the game is in play, we can continue to a second if question. This time, the left-hand side is pollen (variable), the right-hand side in 1.

If that was correct (or if you are carrying pollen), then we want to do "radio send string "bee" " block (in Radio), this will mean your Micro:bit is sending the message that it's a bee carrying pollen to any close micro:bits.

image

The next steps are just visual to give you something to look at on the display and see what is happening.
I've added a "show leds"  to show a dot, which is to represent you are carrying pollen (this is inside the if block for pollen = 1), a pause for 500ms so you have time to see the picture, then "show number" with the "count" variable, this shows how many flowers you have pollinated.
Another pause for 500ms (you might want to increase these, experiment with your code).

image

Here's all the code together:

image

Be sure to save your work!

The final step is adding the code to a micro:bit. See the micro:bit guide for programming here: https://microbit.org/get-started/user-guide/transfer-code-to-the-microbit/ if you require assistance with this step.

You also need Flower and Pollen micro:bits to play the game. 

Flower program instructions

Pollen program instructions

  • Sign in to reply
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2023 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube