This code is for the robot board for the Remote robot project. You will also need a Microbit with the Remote controller code and a two wheeled robot.
We will use the radio
to receive instructions from the remote controller and install a package from Kitronik with new motor
blocks to control the motors.
Short on time? Download a completed version of the code.
First we will set up the Microbit to listen for instructions from the remote controller and store them in two variables xValue
and yValue
Start a new, empty project at makecode.microbit.org and rename your project "Robot board"
In the Start
loop add a Radio set group
block. This can be set to any number but it must be the same on the Robot board.
Add an icon
block. This can be any icon, it's to help you remember which microbit has which code so it should be different to the one you used on the Remote controller board.
Add two new variables xValue
and yValue
Set these to 0 in the start loop
Add an on radio received 'name' 'value'
block.
This gives us two new variables name
, which stores the x or y value we set on the remote controller and value
which holds the number we sent from the accelerometer.
Add an if elseif
block.
Add an equals
block from the logic draw.
Set one side to xValue
and using a text
block set the other side to x
If name
is set to x we want to store value
in our variable xValue
Next we need to check if name
is set to y, repeat the two steps above replacing "x" and xValue
with "y" and yValue
Our board can now receive the x and y values from the remote controller and store them in xValue
and yValue
.
Now we just need to take these numbers and use them to turn the motors on and off
To make the robot move we are going to use the yValue
, tilting the board forward and backwards, to move the robot forwards and backwards. To make this happen we need to turn both wheels at the same speed in the same direction. If yValue
is a positive number we'll go forward, if it's negative we'll go backwards.
For turning we'll use the xValue
number as the speed, but turn the wheels in opposite directions. This will make the robot spin. A positive x value will mean the wheel turns forwards, and a negative value backwards. So for the left wheel we will use + xValue, for the right wheel we will use - xValue.
Putting this together we can add the xValue
and yValue
together to make a new variable for each wheel called leftWheel
and rightWheel
leftWheel
= yValue
+ xValue
rightWheel
= yValue
- xValue
Make two new variables leftWheel
and rightWheel
In the forever
loop set leftWheel
and rightWheel
using maths blocks and copies of the variables xValue
and yValue
Add two if then else
blocks, we will use these to test if our leftWheel
and rightWheel
variables are positive or negative. If they are positive the motor will turn forwards, if they are negative backwards.
Use 0 > 0
blocks from the Logic drawer to check if xValue
and yValue
are greater than 0
All that is left is to actually turn the motors on and off. We will use a special block for this that needs to be added as a package.
From the advanced
draw click Add package
In the box that says 'Search or add project URL' paste the following link
https://github.com/KitronikLtd/pxt-kitronik-motor-driver
Press 'Enter' and then click on the box that says 'Kitronik-motor-driver' to add the package
You have added a new drawer to your editor, called 'Kitronik'. Click on 'Motor driver' and you will find two new blocks to turn motors on and off.
Now we can finish our forever
loop, adding motor
blocks for each wheel.
Get a motor
block from the Kitronik MotorDriver draw and plug it into the then
on the first if then else
block.
Set motor to 1, direction to forward and speed to leftWheel
Duplicate this block and plug the copy into the else
part of the if then else
block.
Change the direction to reverse
The speed value for the motor
block needs to be a positive number. This block will only run if xValue
is negative.
To fix this we use an absolute of
block from the maths more drawer. This turns our negative number into a positive one.
Add an absolute of
block to the speed of the motor
block
Duplicate both these motor
blocks and plug them into the if then else
block for the right wheel.
Change the motor to 2 and replace leftWheel
with rightWheel
The robot board is finished! Download this code onto a Microbit and plug it into your robot. Use your Remote controller board to move your robot by tilting it forwards, backwards, left and right.