2023-05-23 18:50:30 +00:00
|
|
|
# Notation
|
|
|
|
|
|
|
|
- `(value)`
|
|
|
|
- `(d! dropdown)`
|
|
|
|
- `<boolean>`
|
|
|
|
- `(m! display matrix picker)`
|
|
|
|
|
|
|
|
# Hub
|
|
|
|
|
|
|
|
- DONE `initialize hub (d! top_side = Axis.Z) (d! front_size = Axis.X)`
|
|
|
|
- transpiled: `hub = PrimeHub(top_side, front_side)`
|
|
|
|
|
|
|
|
## Hub - Status Light
|
|
|
|
|
|
|
|
- DONE `set button color to (d! color)`
|
|
|
|
- transpiled: `hub.light.on(color)`
|
|
|
|
|
|
|
|
- DONE `turn off button light`
|
|
|
|
- transpiled: `hub.light.off()`
|
|
|
|
|
|
|
|
todo: light.blink
|
|
|
|
todo: light.animate
|
|
|
|
|
|
|
|
## Hub - Display
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `set display orientation to (d! side)`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.display.orientation(side)`
|
|
|
|
|
|
|
|
- DONE `turn display off`
|
|
|
|
- transpiled: `hub.display.off()`
|
|
|
|
|
2023-05-24 16:25:33 +00:00
|
|
|
- DONE `set (m! row, col) to (brightness %) brightness`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.display.pixel(row, col, brightness)`
|
|
|
|
|
2023-05-24 16:25:33 +00:00
|
|
|
- DONE `show (m! picutre) on display`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.display.icon(picture)`
|
|
|
|
|
|
|
|
todo: display.animate
|
|
|
|
|
|
|
|
- DONE `show (number) on display`
|
|
|
|
- transpiled: `hub.display.number(number)`
|
|
|
|
|
|
|
|
- `show (char) on display`
|
|
|
|
- transpiled: `hub.display.char(char)`
|
|
|
|
|
|
|
|
- DONE `scroll (text) on display`
|
|
|
|
- transpiled: `hub.display.text(text)`
|
|
|
|
|
|
|
|
- `scroll (text) on display, on for (on) off for (off)`
|
|
|
|
- transpiled: `hub.display.text(text, on, off)`
|
|
|
|
|
|
|
|
## Hub - Buttons
|
|
|
|
|
|
|
|
!- `(buttons pressed)`
|
|
|
|
! - transpiled: `hub.buttons.pressed()`
|
|
|
|
|
|
|
|
- DONE `<is (d! button) button pressed?>`
|
|
|
|
- transpiled: `button in hub.buttons.pressed()`
|
|
|
|
|
|
|
|
## Hub - IMU
|
|
|
|
|
|
|
|
- DONE `<imu ready?>`
|
|
|
|
- transpiled: `hub.imu.ready()`
|
|
|
|
|
|
|
|
- DONE `<is moving?>`
|
|
|
|
- transpiled: `!hub.imu.stationary()`
|
|
|
|
|
|
|
|
- `(side facing up)`
|
|
|
|
- transpiled: `hub.imu.up()`
|
|
|
|
|
|
|
|
- DONE `(pitch)`
|
|
|
|
- transpiled: `hub.imu.tilt()[0]`
|
|
|
|
|
|
|
|
- DONE `(roll)`
|
|
|
|
- transpiled: `hub.imu.roll()[1]`
|
|
|
|
|
|
|
|
- DONE `(acceleration (d! axis))`
|
|
|
|
- transpiled: `hub.imu.acceleration(axis)`
|
|
|
|
|
|
|
|
- DONE `(angular velocity (d! axis))`
|
|
|
|
- transpiled: `hub.imu.angular_velocity(axis)`
|
|
|
|
|
|
|
|
- DONE `(yaw)`
|
|
|
|
- transpiled: `hub.imu.heading()`
|
|
|
|
- warning: must be reset if lifted from table
|
|
|
|
- reset in prelude?
|
|
|
|
|
|
|
|
- DONE `reset yaw angle`
|
|
|
|
- transpiled: `hub.imu.reset_heading(0)`
|
|
|
|
|
|
|
|
- DONE `reset yaw angle to (degrees)`
|
|
|
|
- transpiled: `hub.imu.reset_heading(degrees)`
|
|
|
|
|
|
|
|
todo: imu.rotation
|
|
|
|
todo: imu.orientation
|
|
|
|
|
|
|
|
- DONE `(angular velocity threshold)`
|
|
|
|
- transpiled: `hub.imu.settings()[0]`
|
|
|
|
- DONE `(acceleration threshold)`
|
|
|
|
- transpiled: `hub.imu.settings()[1]`
|
|
|
|
|
|
|
|
- DONE `set angular velocity threshold to (threshold)`
|
|
|
|
- transpiled: `hub.imu.settings(threshold, hub.imu.settings()[1])`
|
|
|
|
- DONE `set acceleration threshold to (threshold)`
|
|
|
|
- transpiled: `hub.imu.settings(hub.imu.settings()[0], threshold)`
|
|
|
|
|
|
|
|
## Hub - Speaker
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `(volume)`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.speaker.volume()`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `set speaker volume to (volume)`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.speaker.volume(volume)`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `play tone (frequency) for (ms) ms`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.speaker.beep(frequency, ms)`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `start playing tone (frequency)`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.speaker.beep(frequency, -1)`
|
|
|
|
|
|
|
|
todo: speaker.play_notes
|
|
|
|
|
|
|
|
## TODO: Hub - Bluetooth
|
|
|
|
Not legal for competition, so I skipped it.
|
|
|
|
Easy to design though, for late.r
|
|
|
|
|
|
|
|
## Hub - Battery
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `(battery voltage)`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.battery.voltage()`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `(battery current)`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.battery.current()`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- Done `<charger connected?>`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.charger.connected()`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `(charging current)`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.charger.current()`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `<is charging?>`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.charger.status() == 1`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `<is charging complete?>`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.charger.status() == 2`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `<is charging stopped?>`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `hub.charger.status() == 3`
|
|
|
|
|
|
|
|
## Hub - Control
|
|
|
|
|
|
|
|
- `set stop button to (button)`
|
|
|
|
- transpiled: `hub.system.set_stop_button(button)`
|
|
|
|
|
|
|
|
- `(hub name)`
|
|
|
|
- transpiled: `hub.system.name()`
|
|
|
|
|
|
|
|
todo: system.storage
|
|
|
|
|
|
|
|
- DONE `stop and exit program` - program terminator
|
|
|
|
- transpiled: prelude code, go back to selection screen
|
|
|
|
|
|
|
|
- DONE `stop and restart program` - program terminator
|
|
|
|
- transpiled: prelude code, exit, run again
|
|
|
|
|
|
|
|
- DONE `stop and shutdown system` - program terminator
|
|
|
|
- transpiled: `hub.system.shutdown()`
|
|
|
|
|
|
|
|
- `<last shut down normally?>`
|
|
|
|
- transpiled: `hub.system.reset_reason() == 0`
|
|
|
|
|
|
|
|
- `<last shut down automatically?>`
|
|
|
|
- transpiled: `hub.system.reset_reason() == 1`
|
|
|
|
|
|
|
|
- `<last shut down by crash?>`
|
|
|
|
- transpiled: `hub.system.reset_reason() == 2`
|
|
|
|
|
|
|
|
# Motors
|
|
|
|
|
|
|
|
## Motors - DC
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `turn on dc motor (port) at (power) power`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `motor.dc(power)`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `stop dc motor (port)`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `motor.stop()`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `set max voltage of dc motor (port) to (voltage)`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `motor.settings(voltage)`
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `(max voltage of dc motor (port))`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: `motor.settings()[0]`
|
|
|
|
|
2023-05-28 13:53:44 +00:00
|
|
|
- DONE `set positive direction of dc motor (port) to (d! direction)`
|
2023-05-23 18:50:30 +00:00
|
|
|
- transpiled: RESET motor variable with the direction
|
|
|
|
|
|
|
|
## Motors
|
|
|
|
|
|
|
|
- `set positive direction of motor (port) to (d! direction)`
|
|
|
|
- traspiled: RESET motor variable with the direction
|
|
|
|
|
|
|
|
todo: geartrain
|
|
|
|
todo: reset_angle
|
|
|
|
|
|
|
|
- `((port) rotation angle)`
|
|
|
|
- transpiled: `motor.angle()`
|
|
|
|
- `reset rotation angle of (port)`
|
|
|
|
- transpiled: `motor.reset_angle(0)`
|
|
|
|
- `reset rotation angle of (port) to (deg)`
|
|
|
|
- transpiled: `motor.reset_angle(deg)`
|
|
|
|
|
|
|
|
- `((port) current speed)`
|
|
|
|
- transpiled: `motor.speed()`
|
|
|
|
|
|
|
|
- `((port) current load)`
|
|
|
|
- transpiled: `motor.load()`
|
|
|
|
|
|
|
|
- `<(port) is stalled?>`
|
|
|
|
- transpiled: `motor.stalled()`
|
|
|
|
|
|
|
|
- `(port) stop moving`
|
|
|
|
- transpiled: `motor.stop()`
|
|
|
|
|
|
|
|
- `(port) brake`
|
|
|
|
- transpiled: `motor.brake()`
|
|
|
|
|
|
|
|
- `(port) stop and hold position`
|
|
|
|
- transpiled: `motor.hold()`
|
|
|
|
|
|
|
|
- `(port) start moving at (speed)`
|
|
|
|
- transpiled: `motor.run(speed)`
|
|
|
|
|
|
|
|
- `(port) start moving at (power) power`
|
|
|
|
- transpiled: `motor.dc(power)`
|
|
|
|
|
|
|
|
- `(port) run for (time) seconds at (speed) speed, then (d! stop action)`
|
|
|
|
- transpiled: `motor.run_time(speed, time, stop action, True)`
|
|
|
|
|
|
|
|
- `(port) start running for (time) seconds at (speed) speed, then (d! stop action)`
|
|
|
|
- transpiled: `motor.run_time(speed, time, stop action, False)`
|
|
|
|
|
|
|
|
- `(port) run for (deg) degrees at (speed), then (d! stop action)`
|
|
|
|
- transpiled: `motor.run_angle(speed, deg, stop action, True)`
|
|
|
|
|
|
|
|
- `(port) start running for (deg) degrees at (speed), then (d! stop action)`
|
|
|
|
- transpiled: `motor.run_angle(speed, deg, stop action, False)`
|
|
|
|
|
|
|
|
- `(port) go to relative position (deg) at (speed), then (d! stop action)`
|
|
|
|
- transpiled: `motor.run_target(speed, deg, stop action, True)`
|
|
|
|
|
|
|
|
- `(port) start moving to relative position (deg) at (speed), then (d! stop action)`
|
|
|
|
- transpiled: `motor.run_target(speed, deg, stop action, False)`
|
|
|
|
|
|
|
|
- `(port) go to relative position (deg) immediately`
|
|
|
|
- transpiled: `motor.track_target(deg)`
|
|
|
|
|
|
|
|
- `(port) run at (speed) speed until stalled, then (d! stop action)`
|
|
|
|
- transpiled: `motor.run_until_stalled(speed, stop action)`
|
|
|
|
- `(port) run at (speed) speed until stalled, then (d! stop action), with maximum power (power)`
|
|
|
|
- transpiled: `motor.run_until_stalled(speed, stop action, power)`
|
|
|
|
|
|
|
|
- `<(port) is done moving?>`
|
|
|
|
- transpiled: `motor.done()`
|
|
|
|
|
|
|
|
- `((port) max speed)`
|
|
|
|
- transpiled: `motor.limits()[0]`
|
|
|
|
- `((port) max acceleration)`
|
|
|
|
- transpiled: `motor.limits()[1]`
|
|
|
|
- `((port) max torque)`
|
|
|
|
- transpiled: `motor.limits()[2]`
|
|
|
|
- `set (port) max speed to (speed)`
|
|
|
|
- transpiled: `motor.limits(speed, motor.limits()[1], motor.limits()[2])`
|
|
|
|
- `set (port) max acceleration to (accel)`
|
|
|
|
- transpiled: `motor.limits(motor.limits()[0], accel, motor.limits()[2])`
|
|
|
|
- `set (port) max torque to (torq)`
|
|
|
|
- transpiled: `motor.limits(motor.limits()[0], motor.limits()[1], torq)`
|
|
|
|
|
|
|
|
TODO: pid
|
|
|
|
TODO: tolerances
|
|
|
|
TODO: stall tolerances
|
|
|
|
TODO: scale
|
|
|
|
TODO: state
|
|
|
|
TODO: settings
|
|
|
|
|
|
|
|
# Tilt Sensor
|
|
|
|
|
|
|
|
- `((port) pitch)`
|
|
|
|
- transpiled: `sensor.tilt()[0]`
|
|
|
|
- `((port) roll)`
|
|
|
|
- transpiled: `sensor.tilt()[1]`
|
|
|
|
|
|
|
|
# Infrared Sensor
|
|
|
|
|
|
|
|
- `((port) infrared distance)`
|
|
|
|
- transpiled: `sensor.distance()`
|
|
|
|
- `((port) infrared reflection)`
|
|
|
|
- transpiled: `sensor.reflection()`
|
|
|
|
- `((port) object count)`
|
|
|
|
- transpiled: `sensor.count()`
|
|
|
|
|
|
|
|
# Color and Distance Sensor
|
|
|
|
|
|
|
|
- `<(port) color is (d! color)?>`
|
|
|
|
- transpiled: `sensor.color() == color`
|
|
|
|
- `((port) reflection)`
|
|
|
|
- transpiled: `sensor.reflection()`
|
|
|
|
- `((port) intensity)`
|
|
|
|
- transpiled: `sensor.ambient()`
|
|
|
|
- `((port) infrared distance)`
|
|
|
|
- transpiled: `sensor.distance()`
|
|
|
|
|
|
|
|
TODO: detectable_colors
|
|
|
|
|
|
|
|
- `set (port) light to (d! color RGB)`
|
|
|
|
- transpiled: `sensor.light.on(color)`
|
|
|
|
- `turn off (port) light`
|
|
|
|
- transpiled: `sensor.light.off()`
|
|
|
|
|
|
|
|
# TODO - Power Functions Infrared Controls
|
|
|
|
|
|
|
|
# Color Sensor
|
|
|
|
|
|
|
|
- `<(port) color is (d! color)?>`
|
|
|
|
- transpiled: `sensor.color() == color`
|
|
|
|
- `((port) reflection)`
|
|
|
|
- transpiled: `sensor.reflection()`
|
|
|
|
- `((port) intensity)`
|
|
|
|
- transpiled: `sensor.ambient()`
|
|
|
|
- `((port) hue)`
|
|
|
|
- transpiled: `sensor.hsv().h`
|
|
|
|
- `((port) saturation)`
|
|
|
|
- transpiled: `sensor.hsv().s`
|
|
|
|
- `((port) brightness)`
|
|
|
|
- transpiled: `sensor.hsv().v`
|
|
|
|
|
|
|
|
TODO: detectable_colors
|
|
|
|
|
|
|
|
- `turn on (port) light at (power) brightness`
|
|
|
|
- transpiled: `sensor.lights.on(power)`
|
|
|
|
- `turn off (port) light`
|
|
|
|
- transpiled: `sensor.lights.off()`
|
|
|
|
|
|
|
|
# Ultrasonic Sensor
|
|
|
|
|
|
|
|
- `((port) distance)`
|
|
|
|
- transpiled: `sensor.distance()`
|
|
|
|
- `<(port) other ultrasonic sensors nearby?>`
|
|
|
|
- transpiled: `sensor.presence()`
|
|
|
|
- `turn on (port) light at (power) brightness`
|
|
|
|
- transpiled: `sensor.lights.on(power)`
|
|
|
|
- `turn off (port) light`
|
|
|
|
- transpiled: `sensor.lights.off()`
|
|
|
|
|
|
|
|
# Force Sensor
|
|
|
|
|
|
|
|
- `((port) force)`
|
|
|
|
- transpiled: `sensor.force()`
|
|
|
|
- `((port) distance travelled)`
|
|
|
|
- transpiled: `sensor.distance()`
|
|
|
|
- `<(port) pressed?>`
|
|
|
|
- transpiled: `sensor.pressed()`
|
|
|
|
- `<(port) touched?>`
|
|
|
|
- transpiled: `sensor.touched()`
|
|
|
|
|
|
|
|
# TODO - Color Light Matrix
|
|
|
|
|
|
|
|
# Light
|
|
|
|
|
|
|
|
- `turn on (port) at (power) brightness`
|
|
|
|
- transpiled: `sensor.on(power)`
|
|
|
|
- `turn off (port)`
|
|
|
|
- trnaspiled: `sensor.off()`
|
|
|
|
|
|
|
|
# TODO - Remote Control
|
|
|
|
|
|
|
|
# Constants
|
|
|
|
|
|
|
|
## Constants - Axis
|
|
|
|
|
|
|
|
- `(x axis)`
|
|
|
|
- transpiled: `Axis.X`
|
|
|
|
- `(y axis)`
|
|
|
|
- transpiled: `Axis.Y`
|
|
|
|
- `(z axis)`
|
|
|
|
- transpiled: `Axis.Z`
|
|
|
|
|
|
|
|
## Constants - Button
|
|
|
|
|
|
|
|
- `(left button)`
|
|
|
|
- transpiled: `Button.LEFT`
|
|
|
|
- `(center button)`
|
|
|
|
- transpiled: `Button.CENTER`
|
|
|
|
- `(right button)`
|
|
|
|
- transpiled: `Button.RIGHT`
|
|
|
|
- `(bluetooth button)`
|
|
|
|
- transpiled: `Button.BLUETOOTH`
|
|
|
|
|
|
|
|
## Constants - Stop Behavior
|
|
|
|
|
|
|
|
- `coast`
|
|
|
|
- transpiled: `Stop.COAST`
|
|
|
|
- `preplanned coast`
|
|
|
|
- transpiled: `Stop.COAST_SMART`
|
|
|
|
- `brake`
|
|
|
|
- transpiled: `Stop.BRAKE`
|
|
|
|
- `hold position`
|
|
|
|
- transpiled: `Stop.HOLD`
|
|
|
|
- `do not stop`
|
|
|
|
- transpiled: `Stop.NONE`
|
|
|
|
|
|
|
|
# Tools
|
|
|
|
|
|
|
|
- `wait (ms) ms`
|
|
|
|
- transpiled: `tools.wait(ms)`
|
|
|
|
|
|
|
|
## TODO - Tools - Stopwatch
|
|
|
|
|
|
|
|
# Movement (Robotics)
|
|
|
|
|
|
|
|
- `set movement motors to (left port) and (right port)`
|
|
|
|
- transpiled: `left_motor = left port; right_motor = right port; drive = DriveBase(left_motor, right_motor, wd, track)`
|
|
|
|
- `set wheel diameter to (mm) mm`
|
|
|
|
- transpiled: `wd = mm; drive = DriveBase(left_motor, right_motor, wd, track)`
|
|
|
|
- `set track width to (mm) mm`
|
|
|
|
- transpiled: `track = mm; drive = DriveBase(left_motor, right_motor, wd, track)`
|
|
|
|
|
|
|
|
- `move (mm) mm, then (d! stop)`
|
|
|
|
- transpiled: `drive.straight(mm, stop, True)`
|
|
|
|
- `start moving (mm) mm, then (d! stop)`
|
|
|
|
- transpiled: `drive.straight(mm, stop, False)`
|
|
|
|
- `turn in place (deg) degrees, then (d! stop)`
|
|
|
|
- transpiled: `drive.turn(deg, stop, True)`
|
|
|
|
- `start turning in place (deg) degrees, then (d! stop)`
|
|
|
|
- transpiled: `drive.turn(deg, stop, False)`
|
|
|
|
- `turn (deg) degrees across a (rad) mm arc, then (d! stop)`
|
|
|
|
- transpiled: `drive.curve(rad, deg, stop, True)`
|
|
|
|
- `start turning (deg) degrees across a (rad) mm arc, then (d! stop)`
|
|
|
|
- transpiled: `drive.curve(rad, deg, stop, False)`
|
|
|
|
|
|
|
|
- `(movement speed)`
|
|
|
|
- transpiled: `drive.settings()[0]`
|
|
|
|
- `(movement acceleration)`
|
|
|
|
- transpiled: `drive.settings()[1]`
|
|
|
|
- `(turn speed)`
|
|
|
|
- transpiled: `drive.settings()[2]`
|
|
|
|
- `(turn acceleration)`
|
|
|
|
- transpiled: `drive.settings()[3]`
|
|
|
|
- `set movement speed to (speed)`
|
|
|
|
- transpiled: `drive.settings(speed, drive.settings()[1], drive.settings()[2], drive.settings()[3])`
|
|
|
|
- `set movement acceleration to (speed)`
|
|
|
|
- transpiled: `drive.settings(drive.settings()[0], speed, drive.settings()[2], drive.settings()[3])`
|
|
|
|
- `set turn speed to (speed)`
|
|
|
|
- transpiled: `drive.settings(drive.settings()[0], drive.settings()[1], speed, drive.settings()[3])`
|
|
|
|
- `set turn acceleration to (speed)`
|
|
|
|
- transpiled: `drive.settings(drive.settings()[0], drive.settings()[1], drive.settings()[2], speed)`
|
|
|
|
|
|
|
|
- `<is done moving?>`
|
|
|
|
- transpiled: `drive.done()`
|
|
|
|
|
|
|
|
- `start moving at (spd) speed`
|
|
|
|
- transpiled: `drive.drive(spd, 0)`
|
|
|
|
- `start moving at (spd) speed with turn rate (tr)`
|
|
|
|
- transpiled: `drive.drive(spd, tr)`
|
|
|
|
- `stop moving`
|
|
|
|
- transpiled: `drive.stop()`
|
|
|
|
|
|
|
|
- `(relative distance)`
|
|
|
|
- transpiled: `drive.distance()`
|
|
|
|
- `(relative angle)`
|
|
|
|
- transpiled: `drive.angle()`
|
|
|
|
|
|
|
|
- `(current drive speed)`
|
|
|
|
- transpiled: `drive.state()[1]`
|
|
|
|
|
|
|
|
- `(current turn rate)`
|
|
|
|
- transpiled: `drive.state()[3]`
|
|
|
|
|
|
|
|
- `reset angle and distance`
|
|
|
|
- transpiled: `drive.reset()`
|
|
|
|
|
|
|
|
- `<is stalled?>`
|
|
|
|
- transpiled: `drive.stalled()`
|
|
|
|
|
|
|
|
- `use gyroscope for movement`
|
|
|
|
- transpiled: `drive = GyroDriveBase(left_motor, right_motor, wd, track)`
|
|
|
|
- `use math for movement`
|
|
|
|
- transpiled: `drive = DriveBase(left_motor, right_motor, wd, track)`
|
|
|
|
# Random
|
|
|
|
|
|
|
|
- `(random number from (a) to (b))`
|
|
|
|
- transpiled: `urandom.randint(a, b)`
|
|
|
|
- `(random decimal from 0 to 1)`
|
|
|
|
- transpiled: `urandom.random()`
|
|
|
|
|
|
|
|
# Control
|
|
|
|
|
|
|
|
- `repeat (n)`
|
|
|
|
- transpiled: `for i in range(n):`
|
|
|
|
- `forever`
|
|
|
|
- transpiled: `while True:`
|
|
|
|
- `if <cond> then`
|
|
|
|
- transpiled: `if cond:`
|
|
|
|
- `if <cond> then else`
|
|
|
|
- transpiled: `if cond: else:`
|
|
|
|
- `wait until <cond>`
|
|
|
|
- transpiled: `while !<cond>: pass`
|
|
|
|
- `repeat until <cond>`
|
|
|
|
- transpiled: `while !cond:`
|
|
|
|
- `stop`
|
|
|
|
- transpiled: `raise SystemExit("Exited by program")`
|
|
|
|
# Operators
|
|
|
|
|
|
|
|
- `((a) + (b))`
|
|
|
|
- transpiled: `a + b`
|
|
|
|
- `((a) - (b))`
|
|
|
|
- transpiled: `a - b`
|
|
|
|
- `((a) * (b))`
|
|
|
|
- transpiled: `a * b`
|
|
|
|
- `((a) / (b))`
|
|
|
|
- transpiled: `a / b`
|
|
|
|
- `<(a) > (b)>`
|
|
|
|
- transpiled: `a > b`
|
|
|
|
- `<(a) < (b)>`
|
|
|
|
- transpiled: `a < b`
|
|
|
|
- `<(a) = (b)>`
|
|
|
|
- transpiled: `a == b`
|
|
|
|
- `<<a> and <b>>`
|
|
|
|
- transpiled: `a and b`
|
|
|
|
- `<<a> or <b>>`
|
|
|
|
- transpiled: `a or b`
|
|
|
|
- `<not <a>>`
|
|
|
|
- transpiled: `not a`
|
|
|
|
- `(join (a) (b))`
|
|
|
|
- transpiled: `a + b`
|
|
|
|
- `(letter (n) of (a))`
|
|
|
|
- transpiled: `a[n]`
|
|
|
|
- `(length of (a))`
|
|
|
|
- transpiled: `len(a)`
|
|
|
|
- `<(a) contains (b)?>`
|
|
|
|
- transpiled: `a in b`
|
|
|
|
- `((a) mod (b))`
|
|
|
|
- transpiled: `a % b`
|
|
|
|
- `(round (a))`
|
|
|
|
- transpiled: `round(a)`
|
|
|
|
|
|
|
|
TODO: operators
|
|
|
|
|
|
|
|
# Variables
|
|
|
|
|
|
|
|
Variables are stored as python variables with the prefix `UVAR` - for example `UVAR_myvar`
|
|
|
|
|
|
|
|
# My blocks
|
|
|
|
|
|
|
|
re just functions
|