iBIT block package for i-BIT robot kit
powered by micro:bit
The package adds support for the i-BIT conroller board from Innovative Experiment INEX.
micro:bit Pin Assignment
The following micro:bit pins are used for analog and digital sensors, DC motor drivers and servo motors:
P0
-- Analog Input 0 (micro:bit default)P1
-- Analog Input 1 (micro:bit default)P2
-- Analog Input 2 (micro:bit default)P8
-- Digital Input/Output and AnalogWrite/Servo1P12
-- Digital Input/Output and AnalogWrite/Servo2P13
-- DigitalWrite Pin for DC motor control direction 1P14
-- AnalogWrite Pin for DC motor speed control 1P15
-- DigitalWrite Pin for DC motor control direction 2P16
-- AnalogWrite Pin for DC motor speed control 2P19
-- SCL connected to I2C-based 12-bit ADC chip (ADS7828)P20
-- SDA connected to I2C-based 12-bit ADC chip (ADS7828)
Motor control Block
Use iBIT's motor block to drives motor forward and backward. The speed motor is adjustable between 0 to 100.
- The dirrection must be select either
Forward
orBackward
- Speed is an integer value between
0 - 100
iBIT.Motor(ibitMotor.Forward, 100)
iBIT.Motor(ibitMotor.Backward, 100)
Spin Block
Spin block is used to control both motors separately. For example, choose one motor spin with forward direction another one spin with backward direction.
- The Spin select direction must be either
Left
orRight
- Speed is an integer value between
0 - 100
iBIT.Spin(ibitSpin.Left, 100)
iBIT.Spin(ibitSpin.Right, 100)
Turn Block
The Turn block is used to to control the robot movment by turning. The one motor will stop, another one is moving. The vipot point is a center of the robot body.
- The Turn select direction must be either
Left
orRight
- Speed is an integer value between
0 - 100
iBIT.Turn(ibitTurn.Left, 100)
iBIT.Turn(ibitTurn.Right, 100)
Motor Stop Block
The Motor Stop block is used to stop both motors. The speed is set to 0
automatic.
iBIT.MotorStop()
Servo Block
Use this block for control the servo's moving degree from 0 to 180
- Degree is an integer value between
0 - 180
iBIT.Servo(ibitServo.SV1, 90)
ReadAD Block
This block is used to read the analog input data from the I2C-based ADC integrated circuit, ADS7828. The resolution of conversion is 12-bit. Data will be 0 to 4095. iBIT have 8-ch analog inputs. The pinout voltage range is 0 to +3.3V
- Analog sensor port are
ADC0 - ADC7
- Select analog channel from
ADC0 - ADC7
for reading the analog sensor. - Get the analog value to set the conditions for the robot's mission.
Example
- Read the analog input 0 and display the conversion data on micro:bit. User can change the analog channel any time.
basic.showNumber(iBIT.ReadADC(ibitReadADC.ADC0))
- Drive the motors with Forward and Backward by counting speed
0 - 100
let speed = 0
basic.forever(() => {
for (let speed = 0; speed <= 100; speed++) {
iBIT.Motor(ibitMotor.Forward, speed)
basic.pause(50)
}
for (let speed = 0; speed <= 100; speed++) {
iBIT.Motor(ibitMotor.Backward, speed)
basic.pause(50)
}
})
- Drive the motors by pressing button
A
andB
. Turn Left by speed 50 when pressed buttonA
and Turn Right by speed 50 when pressed buttonB
.
input.onButtonPressed(Button.A, () => {
iBIT.Turn(ibitTurn.Left, 50)
})
input.onButtonPressed(Button.B, () => {
iBIT.Turn(ibitTurn.Right, 50)
})
- Spin the motors by pressing button
A
andB
. Spin Left by speed 50 when pressed buttonA
and Spin Right by speed 50 when pressed buttonB
.
input.onButtonPressed(Button.A, () => {
iBIT.Spin(ibitSpin.Left, 50)
})
input.onButtonPressed(Button.B, () => {
iBIT.Spin(ibitSpin.Right, 50)
})
- Example for Servo, drive the servo motor's movement angle at Servo output 1 and 2 from
0 - 180
and back to 0 to restart again.
basic.forever(() => {
for (let Degree = 0; Degree <= 180; Degree++) {
iBIT.Servo(ibitServo.SV1, Degree)
iBIT.Servo(ibitServo.SV2, Degree)
basic.pause(10)
while (Degree == 180) {
Degree = 0
}
}
})
- Example for set Servo Stop or set freedom servo.
input.onButtonPressed(Button.A, () => {
iBIT.Servo(ibitServo.SV1, 90)
})
input.onButtonPressed(Button.B, () => {
iBIT.ServoStop(ibitServo.SV1)
})
License
MIT
Supported targets
- for PXT/microbit