Awesome
Moto:bit
The package adds support for the moto:bit add-on board from SparkFun.
TODO: To use this package, go to https://pxt.microbit.org, click Add package
and search for moto-bit.
~ hint
Not currently integrated into pxt. It must be manually added. This package is still under development and subject to changes.
~
Usage
The package adds support for the moto:bit add-on board from SparkFun.
- moto:bit
- Shadow Chasis
- Hobby Gearmotor
- Wheel Pair
- RedBot Sensor - Line Follower
- ine Follower Array
- RedBot Sensor - Mechanical Bumper
- Servo Extention Cable
Micro:bit Pins Used
The following micro:bit pins are used for analog and digital sensors, motor driving:
P0
-- Analog Input 0P1
-- Analog Input 1P2
-- Analog Input 2P8
-- Digital Input/OutputP12
-- Digital Input/OutputP14
-- Digital Input/OutputP15
-- Servo MotorP16
-- Servo MotorP19
-- motor driver - SCLP20
-- motor driver - SDA
Set Motor Speed
To set the speed and direction for a motor, place the |set motor|
block.
The block takes three parameters: motor select, direction, and speed.
- The motor select must be either
Left
orRight
- Direction must be either
Forward
orReverse
- Speed is an integer value between
0
and100
motobit.setMotorSpeed(Motor.Left, MotorDirection.Forward, 50)
Invert Motor Directon
When a motor turns opposite to the direction that was declared, the invert
block may be used. The block accepts two parameters: motor select, and a
boolean variable. When the boolean is set to true
, the motor direction is
inverted so that Forward
no longer causes the motor to spin in Reverse
,
but rather Forward
.
- The motor select must be either
Left
orRight
- Invert must be either
true
orfalse
motobit.invert(Motor.Left, true)
Enabling Motors
Regardless of the set motor speed, before the motors will turn on the switch on moto:bit
must be set to "Run Motors", and the enable motors command must be set to ON
- Motor enable must be either
On
orOff
.
motobit.enable(MotorPower.On)
Examples
Example: Receiving a packet of data over wireless
The following program reads a string to control the direction of two motors.
radio.onDataPacketReceived( ({ receivedNumber }) => {
// Drive forward
if (receivedNumber == 128) {
led.plot(2, 0)
motobit.setMotorSpeed(Motor.Left, MotorDirection.Forward, 50)
motobit.setMotorSpeed(Motor.Right, MotorDirection.Forward, 50)
motobit.enable(MotorPower.On)
} else {
led.unplot(2, 0)
}
// Turn left
if (receivedNumber == 64) {
led.plot(0, 2)
motobit.setMotorSpeed(Motor.Left, MotorDirection.Reverse, 50)
motobit.setMotorSpeed(Motor.Right, MotorDirection.Forward, 50)
motobit.enable(MotorPower.On)
} else {
led.unplot(0, 2)
}
// Turn right
if (receivedNumber == 32) {
led.plot(4, 2)
motobit.setMotorSpeed(Motor.Left, MotorDirection.Forward, 50)
motobit.setMotorSpeed(Motor.Right, MotorDirection.Reverse, 50)
motobit.enable(MotorPower.On)
} else {
led.unplot(4, 2)
}
// Drive in reverse
if (receivedNumber == 16) {
led.plot(2, 4)
motobit.setMotorSpeed(Motor.Left, MotorDirection.Reverse, 50)
motobit.setMotorSpeed(Motor.Right, MotorDirection.Reverse, 50)
motobit.enable(MotorPower.On)
} else {
led.unplot(2, 4)
}
// Stop
if (receivedNumber == 0) {
motobit.enable(MotorPower.Off)
}
})
radio.setGroup(13)
License
MIT
Supported targets
- for PXT/microbit
motobit=github:sparkfun/pxt-moto-bit