Python específico para robots#
Introducción#
El patio de juegos VIQRC 25-26 Mix & Match presenta métodos exclusivos para la construcción diseñada para este patio de juegos, incluidas dos opciones de motor, sensor óptico y LED táctil.
Todos los métodos estándar de VEXcode VR están disponibles para su uso en el patio de juegos VIQRC 25-26 Mix & Match.
A continuación se muestra una lista de todos los métodos específicos de Playground disponibles:
Movimiento: mueve y rastrea los motores del robot.
Comportamiento
spin – Hace girar el motor o el grupo de motores seleccionado indefinidamente.
spin_for – Hace girar un motor o grupo durante una distancia específica en grados o vueltas.
spin_to_position – Gira un motor o un grupo de motores a una posición establecida.
stop – Detiene el giro de un motor o un grupo de motores específico.
Mutadores
set_position – Establece el valor del codificador de un motor o grupo de motores.
set_velocity – Establece la velocidad de un motor o grupo de motores como un porcentaje.
set_timeout – Limita el tiempo que un bloque de motor espera antes de darse por vencido si el movimiento está bloqueado.
Conseguidores
is_done – Devuelve un valor booleano que indica si el motor ya no está girando.
is_spinning – Devuelve un valor booleano que indica si el motor está girando actualmente.
posición – Devuelve la posición de rotación actual del motor en grados o vueltas.
velocidad – Devuelve la velocidad actual del motor en % o rpm.
Detección: utilice los distintos sensores del robot.
LED táctil
set_color – Establece el TouchLED en un color seleccionado.
Óptico
is_near_object – Devuelve si un objeto detectado está cerca del sensor óptico.
color – Devuelve el color detectado por el sensor óptico.
brillo – Devuelve el porcentaje de brillo detectado por el sensor.
hue – Devuelve el valor de tono del color detectado.
object_detected – Registra una función de devolución de llamada para cuando el sensor óptico detecta un objeto.
object_lost – Registra una función de devolución de llamada para cuando el sensor óptico pierde un objeto.
Movimiento#
Comportamiento#
girar#
spin
hace girar un motor indefinidamente.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Dominio |
---|---|
|
|
|
|
Parámetros |
Descripción |
---|---|
|
La dirección en la que debe girar el motor:
|
def main():
# Place a Pin atop another Pin
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
girar_para#
spin_for
hace girar un motor una cantidad determinada de grados o vueltas.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Dominio |
---|---|
|
|
|
|
Parámetros |
Descripción |
---|---|
|
La dirección en la que debe girar el motor:
|
|
La distancia que debe girar el motor, expresada en un número entero. |
|
La unidad que representa la distancia a girar:
|
|
Opcional.
|
def main():
# Place a Pin atop another Pin
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
girar a la posición#
spin_to
hace girar un motor a una posición determinada.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Dominio |
---|---|
|
|
|
|
Parámetros |
Descripción |
---|---|
|
El ángulo específico o número de vueltas que dará el motor. |
|
La unidad que representa el ángulo a rotar:
|
|
Opcional.
|
def main():
# Place a Pin atop another Pin
lift_motor.spin_to_position(-2, TURNS)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
detener#
stop
detiene el giro de un motor.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Dominio |
---|---|
|
|
|
|
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
def main():
# Place a Pin atop another Pin
lift_motor.spin(REVERSE)
wait(2, SECONDS)
lift_motor.stop()
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
Mutadores#
posición_establecida#
set_position
establece la posición del codificador de un motor en el valor de posición dado.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Dominio |
---|---|
|
|
|
|
Parámetros |
Descripción |
---|---|
|
El entero específico que se debe configurar para el codificador del motor. |
|
La unidad que representa el ángulo a rotar:
|
def main():
# Place a Pin atop another Pin
lift_motor.set_position(100, DEGREES)
lift_motor.spin_to_position(-500, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
establecer_velocidad#
set_velocity
establece la velocidad de un motor.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Dominio |
---|---|
|
|
|
|
Parámetros |
Descripción |
---|---|
|
La velocidad a la que girará el motor IQ, que varía de 0 a 100. |
|
La unidad que representa la nueva velocidad:
|
def main():
# Place a Pin atop another Pin
lift_motor.set_velocity(100, PERCENT)
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
establecer_tiempo_de_espera#
set_timeout
establece un límite de tiempo para los comandos de movimiento de un motor. Esto evita que los comandos de movimiento que no alcanzan la posición prevista impidan la ejecución de los comandos posteriores.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Dominio |
---|---|
|
|
|
|
Parámetros |
Descripción |
---|---|
|
La cantidad de tiempo que el motor esperará antes de detenerse. |
|
La unidad para representar el tiempo de espera:
|
def main():
# Place a Pin atop another Pin
lift_motor.set_timeout(2, SECONDS)
lift_motor.spin_for(REVERSE, 5, TURNS)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
Captadores#
está_hecho#
is_done
devuelve un valor booleano que indica si el motor especificado no está girando.
Verdadero
: el motor especificado no está girando.Falso
– El motor especificado está girando.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Dominio |
---|---|
|
|
|
|
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
def main():
# Place a Pin atop another Pin
lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
wait(0.1, SECONDS)
while not lift_motor.is_done():
touchled.set_color(RED)
wait(0.5, SECONDS)
touchled.set_color(NONE)
wait(0.5, SECONDS)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
está girando#
is_spinning
devuelve un valor booleano que indica si el motor especificado está girando.
Verdadero
– El motor especificado está girando.Falso
: el motor especificado no está girando.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Dominio |
---|---|
|
|
|
|
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
def main():
# Place a Pin atop another Pin
lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
wait(0.1, SECONDS)
while lift_motor.is_spinning():
touchled.set_color(RED)
wait(0.5, SECONDS)
touchled.set_color(NONE)
wait(0.5, SECONDS)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
posición#
position
devuelve la distancia total que ha girado el motor especificado.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Dominio |
---|---|
|
|
|
|
Parámetros |
Descripción |
---|---|
|
Las unidades que representan la posición del motor:
|
def main():
# Place a Pin atop another Pin
lift_motor.spin(REVERSE)
while not -600 > claw_motor.position(DEGREES):
wait(2, MSEC)
lift_motor.stop()
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
velocidad#
velocity
devuelve la velocidad de rotación actual del motor.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Dominio |
---|---|
|
|
|
|
Parámetros |
Descripción |
---|---|
|
La unidad que representa la posición del motor:
|
def main():
# Place a Pin atop another Pin
lift_motor.set_velocity(100, PERCENT)
lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
wait(0.5, SECONDS)
brain.screen.print(lift_motor.velocity(PERCENT))
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
Detección#
LED táctil#
establecer_color#
set_color
establece el color del LED táctil.
Uso:
touchled.set_color(color)
Parámetros |
Descripción |
---|---|
|
El color para configurar el LED táctil:
|
def main():
# Place a Pin atop another Pin
touchled.set_color(RED)
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
touchled.set_color(NONE)
Óptico#
está_cerca_del_objeto#
is_near_object
devuelve un valor booleano que indica si el sensor óptico detecta o no un objeto cercano al sensor.
Verdadero
– El objeto está cerca del sensor óptico.Falso
: el objeto no está cerca del sensor óptico.
Uso:
optical.is_near_object()
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
def main():
# Place a Pin atop another Pin
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
while not not optical.is_near_object():
wait(2, MSEC)
lift_motor.spin_to_position(0, DEGREES)
color#
color
devuelve el color detectado por el sensor óptico:
Color devuelto: |
---|
<ul><li>`NINGUNO` – No se detectó ningún color. </li><li>`ROJO`</li><li>`VERDE`</li><li>`AZUL`</li><li>`AMARILLO`</li><li>`NARANJA`</li><li>`MORADO`</li><li>`BLANCO`</li><li>`ROJO_VIOLETA`</li><li>`VIOLETA`</li><li>`AZUL_VIOLETA`</li><li>`AZUL_VERDE`</li><li>`AMARILLO_VERDE`</li><li>`AMARILLO_NARANJA`</li><li>`ROJO_NARANJA`</li></ul> |
Uso:
optical.color()
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
def main():
# Place a Pin atop another Pin
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
while not optical.color() == RED:
wait(5, MSEC)
lift_motor.spin_to_position(0, DEGREES)
brillo#
brightness
devuelve el valor de brillo detectado por el sensor óptico como un porcentaje de 0% a 100%.
Uso:
optical.brightness()
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
def main():
# Place a Pin atop another Pin
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
while not 30 > optical.brightness():
wait(5, MSEC)
lift_motor.spin_to_position(0, DEGREES)
matiz#
hue
devuelve el tono detectado por el sensor óptico.
Los valores de tono varían de 0 a 359 grados, correspondientes a las posiciones en la rueda de color que se muestran a continuación.
Uso:
optical.hue()
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
def main():
# Place a Pin atop another Pin
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
while not optical.hue() > 0:
wait(5, MSEC)
lift_motor.spin_to_position(0, DEGREES)
objeto_detectado#
object_detected
registra una función de devolución de llamada para cuando el sensor óptico detecta un objeto.
Uso:
optical.object_detected(callback, arg)
Parámetros |
Descripción |
---|---|
|
Una función que se llamará cuando se detecte un objeto. |
|
Opcional. Una tupla que se utiliza para pasar argumentos a la función de devolución de llamada. |
def pin_in_open_claw():
# Change color when claw isn't holding anything
touchled.set_color(RED)
def main():
# Place a Pin atop another Pin
optical.object_detected(pin_in_open_claw)
touchled.set_color(GREEN)
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)
objeto_perdido#
object_lost
registra una función de devolución de llamada para cuando el sensor óptico pierde un objeto.
Uso:
optical.object_lost(callback, arg)
Parámetros |
Descripción |
---|---|
|
Una función que se llamará cuando se pierda un objeto. |
|
Opcional. Una tupla que se utiliza para pasar argumentos a la función de devolución de llamada. |
def lower_lift():
# Lower lift when Pin not in claw
lift_motor.spin_to_position(0, DEGREES)
def main():
# Place a Pin atop another Pin
optical.object_lost(lower_lift)
lift_motor.spin_for(REVERSE, 600, DEGREES)
drivetrain.drive_for(FORWARD, 140, MM)
claw_motor.spin(FORWARD)