diff --git a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/diff_drive.txt b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/diff_drive.txt index 43ab87a9f7..27d6f85cc0 100644 --- a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/diff_drive.txt +++ b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/diff_drive.txt @@ -3,4 +3,4 @@ Sensors: Actors: [UsedActor [DIFFERENTIALDRIVE, DIFFERENTIALDRIVE], UsedActor [NO PORT, ENCODERMOTOR], UsedActor [NO PORT, DIFFERENTIALDRIVE], UsedActor [_D, ENCODERMOTOR], UsedActor [_D, DIFFERENTIALDRIVE]] Methods: -[DIFFDRIVETURNDEGREES, DIFFERENTIALDRIVE, DIFFERENTIALDRIVECURVE, DIFFERENTIALDRIVEDISTANCE, MOTORSTART] \ No newline at end of file +[DIFFDRIVETURNDEGREES, DIFFERENTIALDRIVE, DIFFERENTIALDRIVECURVE, DIFFERENTIALDRIVEDISTANCE, MOTORSTART, SPEEDTOPWM] \ No newline at end of file diff --git a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/motor.txt b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/motor.txt index e6d88354b3..b736889498 100644 --- a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/motor.txt +++ b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/motor.txt @@ -3,4 +3,4 @@ Sensors: Actors: [UsedActor [M1, ENCODERMOTOR], UsedActor [M2, ENCODERMOTOR], UsedActor [ML, ENCODERMOTOR], UsedActor [MR, ENCODERMOTOR], UsedActor [S, SERVOMOTOR]] Methods: -[MOTORSTART, MOTORSTARTFOR] \ No newline at end of file +[MOTORSTART, MOTORSTARTFOR, SPEEDTOPWM] \ No newline at end of file diff --git a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/omni_drive.txt b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/omni_drive.txt index dec89c4116..0df60d45cf 100644 --- a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/omni_drive.txt +++ b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/omni_drive.txt @@ -3,4 +3,4 @@ Sensors: Actors: [UsedActor [OMNIDRIVE, OMNIDRIVE], UsedActor [_O, ENCODERMOTOR], UsedActor [_O, OMNIDRIVE], UsedActor [no port, ENCODERMOTOR], UsedActor [no port, OMNIDRIVE]] Methods: -[MOTORSTART, OMNIDRIVECURVE, OMNIDRIVECURVEDISTANCE, OMNIDRIVESTRAIGHTDISTANCE, OMNIDRIVETURNDEGREES] \ No newline at end of file +[MOTORSTART, OMNIDRIVECURVE, OMNIDRIVECURVEDISTANCE, OMNIDRIVESTRAIGHTDISTANCE, OMNIDRIVETURNDEGREES, SPEEDTOPWM] \ No newline at end of file diff --git a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/sensor.txt b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/sensor.txt index 4357bd5582..9ea386514d 100644 --- a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/sensor.txt +++ b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/collectorResults/txt4/sensor.txt @@ -3,4 +3,4 @@ Sensors: Actors: [UsedActor [DISPLAY, DISPLAY], UsedActor [M1, ENCODERMOTOR], UsedActor [M2, ENCODERMOTOR]] Methods: -[MOTORSTART] \ No newline at end of file +[MOTORSTART, SPEEDTOPWM] \ No newline at end of file diff --git a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/diff_drive.py b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/diff_drive.py index e3d52f95a6..6f216715d5 100644 --- a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/diff_drive.py +++ b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/diff_drive.py @@ -28,7 +28,7 @@ def diffdrive_turn_degrees(speed, degrees): if degrees < 0: speed = -speed degrees = abs(degrees) - speed = int((speed / 100) * 512) + speed = speed_to_pwm(speed) arc_length = math.radians(degrees) * (TRACK_WIDTH / 2) rotations = arc_length / (WHEEL_DIAMETER * math.pi) steps_per_wheel = int(rotations * STEPS_PER_ROTATION) @@ -43,7 +43,7 @@ def diffdrive_turn_degrees(speed, degrees): left_motor.stop_sync(right_motor) def diffdrive(speed): - speed = int((speed / 100) * 512) + speed = speed_to_pwm(speed) left_motor.set_speed(speed, Motor.CCW) right_motor.set_speed(speed, Motor.CCW) left_motor.start_sync(right_motor) @@ -71,9 +71,13 @@ def diffdrive_distance(distance, speed_l, speed_r): time.sleep(0.010) def motor_start(motor, speed): - motor.set_speed(int((speed / 100) * 512), Motor.CCW) + motor.set_speed(speed_to_pwm(speed), Motor.CCW) motor.start() +def speed_to_pwm(speed): + speed = max(min(speed, 100), -100) + return int((speed / 100) * 512) + def run(): print("Driving Forwards") diffdrive(30) diff --git a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/motor.py b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/motor.py index 0d9369a7fb..183c9e8750 100644 --- a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/motor.py +++ b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/motor.py @@ -28,12 +28,12 @@ def motor_start(motor, speed): - motor.set_speed(int((speed / 100) * 512), Motor.CCW) + motor.set_speed(speed_to_pwm(speed), Motor.CCW) motor.start() def motor_start_for(motor, speed, degrees): steps = int((degrees / 360) * STEPS_PER_ROTATION) - motor.set_speed(int((speed / 100) * 512), Motor.CCW) + motor.set_speed(speed_to_pwm(speed), Motor.CCW) motor.set_distance(steps) while True: if not motor.is_running(): @@ -41,6 +41,10 @@ def motor_start_for(motor, speed, degrees): time.sleep(0.010) motor.stop() +def speed_to_pwm(speed): + speed = max(min(speed, 100), -100) + return int((speed / 100) * 512) + def run(): print("Moving Motors") print("M1 Motor for 2 seconds") diff --git a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/omni_drive.py b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/omni_drive.py index 1f88d6c235..ac1f7667d3 100644 --- a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/omni_drive.py +++ b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/omni_drive.py @@ -34,7 +34,7 @@ def motor_start(motor, speed): - motor.set_speed(int((speed / 100) * 512), Motor.CCW) + motor.set_speed(speed_to_pwm(speed), Motor.CCW) motor.start() def omnidrive_curve(speed_fl, speed_fr, speed_rl, speed_rr): @@ -69,10 +69,10 @@ def omnidrive_straight_distance(distance, speed_fl, speed_fr, speed_rl, speed_rr constant = WHEEL_DIAMETER / (2 * 4) distance_per_wheel = distance / constant / 4 steps_per_wheel = int(distance_per_wheel / (2 * math.pi) * STEPS_PER_ROTATION) - front_left_motor.set_speed(int((direction * speed_fl / 100) * 512), Motor.CCW) - front_right_motor.set_speed(int((direction * speed_fr / 100) * 512), Motor.CCW) - rear_left_motor.set_speed(int((direction * speed_rl / 100) * 512), Motor.CCW) - rear_right_motor.set_speed(int((direction * speed_rr / 100) * 512), Motor.CCW) + front_left_motor.set_speed(speed_to_pwm(direction * speed_fl), Motor.CCW) + front_right_motor.set_speed(speed_to_pwm(direction * speed_fr), Motor.CCW) + rear_left_motor.set_speed(speed_to_pwm(direction * speed_rl), Motor.CCW) + rear_right_motor.set_speed(speed_to_pwm(direction * speed_rr), Motor.CCW) front_left_motor.set_distance(steps_per_wheel, front_right_motor, rear_left_motor, rear_right_motor) while True: if (not front_left_motor.is_running() @@ -87,7 +87,7 @@ def omnidrive_turn_degrees(speed, degrees): if degrees < 0: speed = -speed degrees = abs(degrees) - speed = int((speed / 100) * 512) + speed = speed_to_pwm(speed) rotations = (WHEEL_DIAMETER * math.pi * degrees) / (360 * TRACK_WIDTH) steps_per_wheel = int(rotations * STEPS_PER_ROTATION) @@ -105,6 +105,10 @@ def omnidrive_turn_degrees(speed, degrees): time.sleep(0.010) front_left_motor.stop_sync(front_right_motor, rear_left_motor, rear_right_motor) +def speed_to_pwm(speed): + speed = max(min(speed, 100), -100) + return int((speed / 100) * 512) + def run(): print("Driving Forwards") omnidrive_curve(30, 30, 30, 30) diff --git a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/sensor.py b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/sensor.py index 2d5b405e14..b444d9d797 100644 --- a/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/sensor.py +++ b/OpenRobertaServer/src/test/resources/crossCompilerTests/_expected/robotSpecific/targetLanguage/txt4/sensor.py @@ -31,9 +31,13 @@ _timer5 = time.time() def motor_start(motor, speed): - motor.set_speed(int((speed / 100) * 512), Motor.CCW) + motor.set_speed(speed_to_pwm(speed), Motor.CCW) motor.start() +def speed_to_pwm(speed): + speed = max(min(speed, 100), -100) + return int((speed / 100) * 512) + def run(): global _timer1, _timer2, _timer3, _timer4, _timer5 while not(TXT_M_I3_ultrasonic_distance_meter): diff --git a/OpenRobertaServer/staticResources/blockly/msg/js/es.js b/OpenRobertaServer/staticResources/blockly/msg/js/es.js index ee4c08dae1..d9ed48b834 100644 --- a/OpenRobertaServer/staticResources/blockly/msg/js/es.js +++ b/OpenRobertaServer/staticResources/blockly/msg/js/es.js @@ -100,7 +100,7 @@ Blockly.Msg.ANALOGIN_TOOLTIP = "Representa cualquier actuador conectado a un pin Blockly.Msg.ANALOGOUT_TOOLTIP = "Representa cualquier sensor conectado a un pin analógico."; Blockly.Msg.AND = "y"; Blockly.Msg.ARDUBRICK_TOOLTIP = "Representa un tablero de Bot 'n Roll con actuadores y sensores conectados. También hay actuadores y sensores internos disponibles, como teclas, la pantalla, ..."; -Blockly.Msg.AREA = "area"; // untranslated +Blockly.Msg.AREA = "área"; Blockly.Msg.AUTH = "Autoriza a esta aplicación para guardar tu trabajo y permitir que lo compartas."; Blockly.Msg.BACKWARD = "hacia atrás"; Blockly.Msg.BACK_LEFT = "atrás izquierda"; @@ -171,7 +171,7 @@ Blockly.Msg.COLOUR_BLEND_RATIO = "proporción"; Blockly.Msg.COLOUR_BLEND_TITLE = "combinar"; Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Combina dos colores con una proporción determinada (0,0–1,0)."; Blockly.Msg.COLOUR_COLOUR_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual de color del sensor."; -Blockly.Msg.COLOUR_COMPARE_TOOLTIP = "Compares two colors based on their hue values while considering a specified tolerance range [0°-360°]."; // untranslated +Blockly.Msg.COLOUR_COMPARE_TOOLTIP = "Compara dos colores basándose en sus valores de tono, considerando un rango de tolerancia especificado [0°-360°]."; Blockly.Msg.COLOUR_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual del sensor de color."; Blockly.Msg.COLOUR_HSV_RANGE = "Rango HSV"; Blockly.Msg.COLOUR_LIGHT_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual de brillo del sensor."; @@ -371,17 +371,17 @@ Blockly.Msg.FRONT_RIGHT = "derecha delantera"; Blockly.Msg.FRONT_RIGHT_MIDDLE = "derecha delantera en medio"; Blockly.Msg.FSR_TOOLTIP = "Obtiene la lectura actual del resistor sensible a la fuerza debajo de los pies del robot."; Blockly.Msg.GAIN = "ganancia"; -Blockly.Msg.GALLERY_ALL_ROBOTS = "All robots/systems"; // untranslated +Blockly.Msg.GALLERY_ALL_ROBOTS = "Todos los robots/sistemas"; Blockly.Msg.GALLERY_BY = "por"; Blockly.Msg.GALLERY_DATE = "creado el"; Blockly.Msg.GALLERY_DISLIKE = "no me gusta"; Blockly.Msg.GALLERY_LIKE = "Me gusta"; -Blockly.Msg.GALLERY_NEWEST = "Newest first"; // untranslated -Blockly.Msg.GALLERY_OLDEST = "Oldest first"; // untranslated -Blockly.Msg.GALLERY_PROGRAM_NAME = "Program name alph."; // untranslated -Blockly.Msg.GALLERY_ROBOT = "Robot/System alph."; // untranslated +Blockly.Msg.GALLERY_NEWEST = "Más reciente primero"; +Blockly.Msg.GALLERY_OLDEST = "Más antiguo primero"; +Blockly.Msg.GALLERY_PROGRAM_NAME = "Nombre del programa alfabéticamente"; +Blockly.Msg.GALLERY_ROBOT = "Robot/Sistema alfabéticamente"; Blockly.Msg.GALLERY_SHARED_ALREADY = "Ya has subido este programa a la galería. Si deseas modificarlo, busca la copia en la galería y modifícala. También puedes eliminarlo de la galería al eliminar la copia de la galería."; -Blockly.Msg.GALLERY_SORT_BY = "Order by"; // untranslated +Blockly.Msg.GALLERY_SORT_BY = "Ordenar por"; Blockly.Msg.GEARED_MOTOR = "motor reductor"; Blockly.Msg.GET = "obtener"; Blockly.Msg.GETSAMPLE_TOOLTIP = "Obtiene la lectura actual del sensor seleccionado"; @@ -405,7 +405,7 @@ Blockly.Msg.HINT_USER_NAME = "Ingresa tu nombre real aquí si lo deseas. Esto es Blockly.Msg.HINT_USER_PASSWORT = "12345 no es una contraseña segura. En lugar de eso, piensa en una combinación segura de números y letras que no olvidarás."; Blockly.Msg.HINT_USER_PASSWORT_CONFIRM = "¿Lo entendiste? ¡Mejor asegúrate!"; Blockly.Msg.HTCOLOUR_TOOLTIP = "Representa un sensor de color HiTechnic NXT V2."; -Blockly.Msg.HUE_TOLERANCE = "hue tolerance"; // untranslated +Blockly.Msg.HUE_TOLERANCE = "tolerancia de tono"; Blockly.Msg.HUMIDITY_TOOLTIP = "Representa un sensor de humedad."; Blockly.Msg.I2CBUS_TOOLTIP = "Representa un byte del espacio de direcciones I2C."; Blockly.Msg.ICON_BLOCKING_TOOLTIP = "Bloqueo de bloque. Este bloque necesita tiempo para ejecutarse, por lo que otros deben esperar hasta que devuelva el control a la llamada de una funcion."; @@ -523,7 +523,7 @@ Blockly.Msg.LED_PROXH_ON_TOOLTIP = "Enciende los LEDs inferiores del sensor con Blockly.Msg.LED_PROXV = "enciende LED inferior del sensor"; Blockly.Msg.LED_PROXV_ON_TOOLTIP = "Enciende los varios LEDs inferiores del sensor de distancia con los valores de brillo proporcionados. Los valores en porcentaje van desde 0% (apagado) hasta 100% (brillo máximo)."; Blockly.Msg.LED_SET_BRIGHTNESS_TOOLTIP = "Ajusta el brillo de todos los LEDs [0-100]"; -Blockly.Msg.LED_SET_BRIGHTNESS_TOOLTIP_PERCENT = "Sets the brightness of the LED [0-100]"; // untranslated +Blockly.Msg.LED_SET_BRIGHTNESS_TOOLTIP_PERCENT = "Establece el brillo del LED [0-100]"; Blockly.Msg.LED_SET_INTENSITY_TOOLTIP = "Fijarla intensidad de un grupo de LEDs."; Blockly.Msg.LED_SOUND = "enciende LED del sensor de sonido"; Blockly.Msg.LED_SOUND_ON_TOOLTIP = "Enciende el LED del micrófono con los valores de brillo proporcionados. El valor en porcentaje varía desde 0% (apagado) hasta 100% (brillo máximo)."; @@ -879,14 +879,14 @@ Blockly.Msg.MIN_ANGLE = "Ángulo mínimo"; Blockly.Msg.MIN_PULSE_WIDTH = "Ancho de pulso mínimo"; Blockly.Msg.MODE = "modo"; Blockly.Msg.MODE_ACCELERATION = "accelerar"; -Blockly.Msg.MODE_ACCURACY = "accuracy"; // untranslated +Blockly.Msg.MODE_ACCURACY = "precisión"; Blockly.Msg.MODE_ALTITUDE = "altitud"; Blockly.Msg.MODE_AMBIENTLIGHT = "luz ambiente"; Blockly.Msg.MODE_ANALOG = "análogo"; Blockly.Msg.MODE_ANGLE = "ángulo"; -Blockly.Msg.MODE_BALL = "ball information"; // untranslated +Blockly.Msg.MODE_BALL = "información de la bola"; Blockly.Msg.MODE_CALIBRATION = "Valor de calibración"; -Blockly.Msg.MODE_CALIBRATIONNEED = "calibration needed"; // untranslated +Blockly.Msg.MODE_CALIBRATIONNEED = "calibración necesaria"; Blockly.Msg.MODE_CAPACITIVE = "capacitivo"; Blockly.Msg.MODE_CLAP = "aplauso"; Blockly.Msg.MODE_CLOSE = "cerrar"; @@ -913,14 +913,14 @@ Blockly.Msg.MODE_LIGHT = "luz"; Blockly.Msg.MODE_LINE = "línea"; Blockly.Msg.MODE_LONGITUDE = "longitud"; Blockly.Msg.MODE_MAGNETICFIELD = "campo magnético"; -Blockly.Msg.MODE_MAGNETICFLUX = "magnetic flux"; // untranslated +Blockly.Msg.MODE_MAGNETICFLUX = "flujo magnético"; Blockly.Msg.MODE_MODULATED = "modulado"; Blockly.Msg.MODE_MOISTURE = "condensación"; -Blockly.Msg.MODE_MOTION = "motion"; // untranslated +Blockly.Msg.MODE_MOTION = "movimiento"; Blockly.Msg.MODE_NAMEALL = "nombres (lista)"; Blockly.Msg.MODE_NAMEONE = "nombre"; Blockly.Msg.MODE_NOT_SUPPORTED = "¡El modo seleccionado en este bloque no es compatible con este sistema!"; -Blockly.Msg.MODE_NUMBERLINES = "number of lines"; // untranslated +Blockly.Msg.MODE_NUMBERLINES = "número de líneas"; Blockly.Msg.MODE_OBSTACLE = "obstáculo"; Blockly.Msg.MODE_OPEN = "abrir"; Blockly.Msg.MODE_OPENING = "luz"; @@ -930,7 +930,7 @@ Blockly.Msg.MODE_PM25 = "PM2.5"; Blockly.Msg.MODE_PRESENCE = "presencia"; Blockly.Msg.MODE_PRESSED = "presionado"; Blockly.Msg.MODE_PRESSURE = "presión"; -Blockly.Msg.MODE_PROXIMITY = "proximity"; // untranslated +Blockly.Msg.MODE_PROXIMITY = "proximidad"; Blockly.Msg.MODE_PULSEHIGH = "tiempo de pulso ALTO"; Blockly.Msg.MODE_PULSELOW = "tiempo de pulso BAJO"; Blockly.Msg.MODE_RATE = "ratio"; @@ -939,7 +939,7 @@ Blockly.Msg.MODE_REFLEXION = "luz reflejada"; Blockly.Msg.MODE_RESISTIVE = "resistivo"; Blockly.Msg.MODE_RGB = "RGB"; Blockly.Msg.MODE_ROTATION = "rotación"; -Blockly.Msg.MODE_SENSIVITY = "sensitivity"; // untranslated +Blockly.Msg.MODE_SENSIVITY = "sensibilidad"; Blockly.Msg.MODE_SENSOR1 = "Sensor de Luz1"; Blockly.Msg.MODE_SENSOR2 = "Sensor de Luz2"; Blockly.Msg.MODE_SPEED = "velocidad"; @@ -1004,8 +1004,8 @@ Blockly.Msg.MOTOR_OTHER = "otros consumidores de potencia"; Blockly.Msg.MOTOR_PAN = "movimiento horizontal"; Blockly.Msg.MOTOR_PORT = "puerto de motor"; Blockly.Msg.MOTOR_PORT_ARDUINO = "puerto del motor 28BYJ-48"; -Blockly.Msg.MOTOR_REAR_LEFT = "rear left"; // untranslated -Blockly.Msg.MOTOR_REAR_RIGHT = "rear right"; // untranslated +Blockly.Msg.MOTOR_REAR_LEFT = "motor trasero izquierdo"; +Blockly.Msg.MOTOR_REAR_RIGHT = "motor trasero derecho"; Blockly.Msg.MOTOR_REGULATION = "regulación"; Blockly.Msg.MOTOR_RIGHT = "derecho"; Blockly.Msg.MOTOR_ROTATION = "rotación"; @@ -1123,21 +1123,21 @@ Blockly.Msg.NEW_VARIABLE = "Variable nueva…"; Blockly.Msg.NEW_VARIABLE_TITLE = "Nombre de variable nueva:"; Blockly.Msg.NN_ACTIVATION = "activación"; Blockly.Msg.NN_BIAS = "sesgo/Bias"; -Blockly.Msg.NN_CHANGE_INPUT_NEURON_VALUE = "type input value for neuron"; // untranslated +Blockly.Msg.NN_CHANGE_INPUT_NEURON_VALUE = "ingresar valor de entrada para la neurona"; Blockly.Msg.NN_CHANGE_NEURONNAME = "escribe un nuevo nombre de neurona"; Blockly.Msg.NN_CLICK_NODE = "selecciona un nodo haciendo clic y luego cambia"; Blockly.Msg.NN_CLICK_WEIGHT_BIAS = "cambia haciendo clic en peso o sesgo/ Bias"; -Blockly.Msg.NN_EXPLORE_CLICK_NODE = "select node by clicking"; // untranslated -Blockly.Msg.NN_EXPLORE_FOCUS_OPTION = "show the weight/bias"; // untranslated -Blockly.Msg.NN_EXPLORE_RESET_VALUES = "Reset neuron output values"; // untranslated -Blockly.Msg.NN_EXPLORE_RUN_FULL = "Run forward propagation for the whole network"; // untranslated -Blockly.Msg.NN_EXPLORE_RUN_LAYER = "Run forward propagation layer by layer"; // untranslated -Blockly.Msg.NN_EXPLORE_RUN_NEURON = "Run forward propagation neuron by neuron"; // untranslated -Blockly.Msg.NN_EXPLORE_SHOW_ALL = "show all"; // untranslated -Blockly.Msg.NN_EXPLORE_SHOW_NEXT_NEURON = "next neuron"; // untranslated +Blockly.Msg.NN_EXPLORE_CLICK_NODE = "seleccionar nodo haciendo clic"; +Blockly.Msg.NN_EXPLORE_FOCUS_OPTION = "mostrar el peso/sesgo"; +Blockly.Msg.NN_EXPLORE_RESET_VALUES = "Restablecer valores de salida de la neurona"; +Blockly.Msg.NN_EXPLORE_RUN_FULL = "Ejecutar propagación hacia adelante para toda la red"; +Blockly.Msg.NN_EXPLORE_RUN_LAYER = "Ejecutar propagación hacia adelante capa por capa"; +Blockly.Msg.NN_EXPLORE_RUN_NEURON = "Ejecutar propagación hacia adelante neurona por neurona"; +Blockly.Msg.NN_EXPLORE_SHOW_ALL = "mostrar todo"; +Blockly.Msg.NN_EXPLORE_SHOW_NEXT_NEURON = "siguiente neurona"; Blockly.Msg.NN_FOCUS_OPTION = "mostrar/cambiar el peso/sesgo/Bias"; -Blockly.Msg.NN_GENERATE_VALUES_FROM = "from"; // untranslated -Blockly.Msg.NN_GENERATE_VALUES_TO = "to"; // untranslated +Blockly.Msg.NN_GENERATE_VALUES_FROM = "de"; +Blockly.Msg.NN_GENERATE_VALUES_TO = "a"; Blockly.Msg.NN_GET_BIAS = "obtener sesgo/Bias"; Blockly.Msg.NN_GET_BIAS_TOOLTIP = "devuelve el valor del sesgo/Bias de una neurona."; Blockly.Msg.NN_GET_OUTPUT_NEURON_VALUE = "obtener valor de neurona de salida"; @@ -1147,23 +1147,23 @@ Blockly.Msg.NN_GET_WEIGHT_TOOLTIP = "devuelve el valor del peso entre dos neuron Blockly.Msg.NN_HIDDEN_LAYER = "capa oculta"; Blockly.Msg.NN_HIDDEN_LAYERS = "capas ocultas"; Blockly.Msg.NN_INPUT_NEURON = "neurona de entrada"; -Blockly.Msg.NN_INVALID_INPUT_NEURON_VALUE = "invalid input; please enter only numeric values"; // untranslated +Blockly.Msg.NN_INVALID_INPUT_NEURON_VALUE = "entrada no válida; por favor ingrese solo valores numéricos"; Blockly.Msg.NN_INVALID_NEURONNAME = "nombre de neurona no válido"; Blockly.Msg.NN_INVALID_NEURONNAMES = "las neuronas no están conectadas"; -Blockly.Msg.NN_INVALID_TEST_TRAIN_DATA = "Invalid test/training data uploaded"; // untranslated -Blockly.Msg.NN_LEARNING_RATE = "learning rate"; // untranslated -Blockly.Msg.NN_LEARN_EPOCH = "Train the network for one epoch"; // untranslated -Blockly.Msg.NN_LEARN_EPOCHS_TO_TRAIN = "epochs to train"; // untranslated -Blockly.Msg.NN_LEARN_EPOCH_NUMBER = "Epoch #"; // untranslated -Blockly.Msg.NN_LEARN_ITERATION_NUMBER = "test data line #"; // untranslated -Blockly.Msg.NN_LEARN_ONE_LINE = "Train the network with one line of the training data"; // untranslated -Blockly.Msg.NN_LEARN_RESET_VALUES = "Reset weights and biases to original values"; // untranslated -Blockly.Msg.NN_LEARN_RUN = "Start/pause training for the network"; // untranslated -Blockly.Msg.NN_LEARN_TRAINING_LOSS = "Training loss"; // untranslated -Blockly.Msg.NN_LEARN_UPLOAD = "Upload test/training data file (semicolon separated data accepted)"; // untranslated -Blockly.Msg.NN_LEARN_UPLOAD_POPUP = "Open a popup window and enter input-output test/training data"; // untranslated +Blockly.Msg.NN_INVALID_TEST_TRAIN_DATA = "Datos de prueba/entrenamiento cargados no válidos"; +Blockly.Msg.NN_LEARNING_RATE = "tasa de aprendizaje"; +Blockly.Msg.NN_LEARN_EPOCH = "Entrenar la red para una época"; +Blockly.Msg.NN_LEARN_EPOCHS_TO_TRAIN = "épocas para entrenar"; +Blockly.Msg.NN_LEARN_EPOCH_NUMBER = "Época #"; +Blockly.Msg.NN_LEARN_ITERATION_NUMBER = "línea de datos de prueba #"; +Blockly.Msg.NN_LEARN_ONE_LINE = "Entrenar la red con una línea de los datos de entrenamiento"; +Blockly.Msg.NN_LEARN_RESET_VALUES = "Restablecer pesos y sesgos a los valores originales"; +Blockly.Msg.NN_LEARN_RUN = "Iniciar/pausar entrenamiento para la red"; +Blockly.Msg.NN_LEARN_TRAINING_LOSS = "Pérdida de entrenamiento"; +Blockly.Msg.NN_LEARN_UPLOAD = "Cargar archivo de datos de prueba/entrenamiento (se aceptan datos separados por punto y coma)"; +Blockly.Msg.NN_LEARN_UPLOAD_POPUP = "Abrir una ventana emergente e ingresar datos de prueba/entrenamiento de entrada-salida"; Blockly.Msg.NN_OUTPUT_NEURON = "neurona de salida"; -Blockly.Msg.NN_RANDOM_WEIGHTS_BIASES = "random vals"; // untranslated +Blockly.Msg.NN_RANDOM_WEIGHTS_BIASES = "valores aleatorios"; Blockly.Msg.NN_REGULARIZATION = "regularización"; Blockly.Msg.NN_SET_BIAS = "establecer sesgo /bias"; Blockly.Msg.NN_SET_BIAS_TOOLTIP = "cambia el sesgo/bias de una neurona."; @@ -1171,16 +1171,16 @@ Blockly.Msg.NN_SET_INPUT_NEURON_VALUE = "establecer valor neurona de entrada"; Blockly.Msg.NN_SET_INPUT_NEURON_VALUE_TOOLTIP = "establece el valor de una neurona de entrada para el próximo paso de la red neuronal."; Blockly.Msg.NN_SET_WEIGHT = "establecer peso de"; Blockly.Msg.NN_SET_WEIGHT_TOOLTIP = "cambia el peso entre dos neuronas."; -Blockly.Msg.NN_SHAPE = "shape"; // untranslated +Blockly.Msg.NN_SHAPE = "forma"; Blockly.Msg.NN_SHOW_ALL = "mostrar todo, cambiar haciendo clic"; Blockly.Msg.NN_SHOW_MATH = "cálculo de neurona"; Blockly.Msg.NN_SHOW_PRECISION = "decimales"; Blockly.Msg.NN_STEP = "realizar un paso en NN"; Blockly.Msg.NN_STEP_TOOLTIP = "recupera valores de entrada, ejecuta un paso en una red neuronal, genera valores de las neuronas de salida"; Blockly.Msg.NN_TARGET = "a"; -Blockly.Msg.NN_TEST_TRAIN_DATA_UPLOAD_SUCCESS = "Uploaded $ test/training data statements"; // untranslated -Blockly.Msg.NN_TITLE_TEST_DATA = "test data"; // untranslated -Blockly.Msg.NN_TITLE_TRAINING_DATA = "training data"; // untranslated +Blockly.Msg.NN_TEST_TRAIN_DATA_UPLOAD_SUCCESS = "Se han cargado $ declaraciones de datos de prueba/entrenamiento"; +Blockly.Msg.NN_TITLE_TEST_DATA = "datos de prueba"; +Blockly.Msg.NN_TITLE_TRAINING_DATA = "datos de entrenamiento"; Blockly.Msg.NN_USED_NEURONNAME = "nombre de neurona en uso"; Blockly.Msg.NN_WEIGHT = "peso"; Blockly.Msg.NO = "no"; @@ -1192,8 +1192,8 @@ Blockly.Msg.OLDER_THEN_14 = "Tengo 16 años o más!"; Blockly.Msg.OMNIDRIVE_TOOLTIP = "Representa un sistema de conducción omnidireccional."; Blockly.Msg.ON = "encendido"; Blockly.Msg.OPTICAL_TOOLTIP = "Representa un sensor óptico también llamado sensor de luz reflejada."; -Blockly.Msg.OPTION_FILE_DOWNLOAD = "Download your program as a file"; // untranslated -Blockly.Msg.OPTION_WEBUSB = "Connect your micro:bit device to the computer
select it in the next popup and click »Connect«"; // untranslated +Blockly.Msg.OPTION_FILE_DOWNLOAD = "Descargar tu programa como un archivo"; +Blockly.Msg.OPTION_WEBUSB = "Conecta tu dispositivo micro:bit a la computadora
selecciona en la próxima ventana emergente y haz clic en »Conectar«"; Blockly.Msg.ORA_ACCESS_RIGHT_CHANGED = "El derecho compartido para el usuario »$« se ha actualizado!"; Blockly.Msg.ORA_ACCESS_RIGHT_DELETED = "El derecho compartido para el usuario »$« se ha eliminado!"; Blockly.Msg.ORA_ACCOUNT_NOT_ACTIVATED_TO_SHARE = "No tienes permiso para compartir. ¡Activa tu cuenta!
Más información ..."; @@ -1475,7 +1475,7 @@ Blockly.Msg.PROGLIST_SHARE_WITH_GALLERY = "¿Realmente quieres compartir este pr Blockly.Msg.PROGLIST_SHARE_WITH_GALLERY_TOOLTIP = "Haz click aquí para subir tu programa a la galería y así compartirlo con todos los usuarios."; Blockly.Msg.PROGRAM_ERROR_EXPRBLOCK_PARSE = "Esta expresión es sintácticamente incorrecta."; Blockly.Msg.PROGRAM_ERROR_EXPRBLOCK_TYPECHECK = "Esta expresión no es válida. La comprobación de tipo ha fallado."; -Blockly.Msg.PROGRAM_IMPORT_ERROR_MISSING_ROBOT_TYPE = "You have tried to import a program that is suitable for »$«, a group of robots/systems.
Please first select the desired robot/system here on the start page."; // untranslated +Blockly.Msg.PROGRAM_IMPORT_ERROR_MISSING_ROBOT_TYPE = "Has intentado importar un programa adecuado para »$«, un grupo de robots/sistemas.
Por favor, primero selecciona el robot/sistema deseado aquí en la página de inicio."; Blockly.Msg.PULSEHIGH = "tiempo de pulso ALTO"; Blockly.Msg.PULSELOW = "tiempo de pulso BAJO"; Blockly.Msg.PULSETOOLTIP = "Representa un sensor de pulso."; @@ -1532,26 +1532,26 @@ Blockly.Msg.SENSOR_ANALOGOUT = "sensor analógico"; Blockly.Msg.SENSOR_ANY = "cualquier lugar"; Blockly.Msg.SENSOR_APDS9960 = "APDS9960"; Blockly.Msg.SENSOR_ARM_TOOLTIP = "Devuelve verdadero si la parte seleccionada del brazo está tocada, de lo contrario, falso."; -Blockly.Msg.SENSOR_BALLDETECTOR = "ball detector"; // untranslated +Blockly.Msg.SENSOR_BALLDETECTOR = "detector de pelotas"; Blockly.Msg.SENSOR_BATTERY = "voltaje en mV"; Blockly.Msg.SENSOR_BOTTOM = "abajo"; Blockly.Msg.SENSOR_CALIBRATE = "calibrar"; Blockly.Msg.SENSOR_CAMERA = "cámera"; -Blockly.Msg.SENSOR_CAMERA_BALL_GETSAMPLE_TOOLTIP = "Returns a list [x, y, diameter] representing information about a ball matching the color set in the configuration. If no ball is found, returns a list of [-1, -1, -1]."; // untranslated -Blockly.Msg.SENSOR_CAMERA_COLOUR_GETSAMPLE_TOOLTIP = "Returns the average color of the specified camera area (configuration)."; // untranslated +Blockly.Msg.SENSOR_CAMERA_BALL_GETSAMPLE_TOOLTIP = "Devuelve una lista [x, y, diámetro] que representa información sobre una pelota que coincide con el color establecido en la configuración. Si no se encuentra ninguna pelota, devuelve una lista de [-1, -1, -1]."; +Blockly.Msg.SENSOR_CAMERA_COLOUR_GETSAMPLE_TOOLTIP = "Devuelve el color promedio del área de la cámara especificada (configuración)."; Blockly.Msg.SENSOR_CAMERA_GETSAMPLE_TOOLTIP = "Devuelve la posición x en píxeles del punto más a la izquierda de una línea o -1 si no se encontró ninguna línea."; -Blockly.Msg.SENSOR_CAMERA_MOTION_GETSAMPLE_TOOLTIP = "Returns a boolean (true or false) indicating whether a specified amount of pixel change, as defined by the sensitivity in the configuration, has occurred."; // untranslated -Blockly.Msg.SENSOR_CAMERA_NUMBERLINES_GETSAMPLE_TOOLTIP = "Returns the number of lines detected by the camera (up to 4)."; // untranslated +Blockly.Msg.SENSOR_CAMERA_MOTION_GETSAMPLE_TOOLTIP = "Devuelve un booleano (verdadero o falso) que indica si ha ocurrido un cambio especificado de píxeles, según lo definido por la sensibilidad en la configuración."; +Blockly.Msg.SENSOR_CAMERA_NUMBERLINES_GETSAMPLE_TOOLTIP = "Devuelve el número de líneas detectadas por la cámara (hasta 4)."; Blockly.Msg.SENSOR_CAMERA_THRESHOLD_TOOLTIP = "Establece el umbral para la filtración de color para el reconocimiento de marcadores y colores."; Blockly.Msg.SENSOR_CODE = "teclado de códigos"; -Blockly.Msg.SENSOR_COLORDETECTOR = "colour detector"; // untranslated +Blockly.Msg.SENSOR_COLORDETECTOR = "detector de color"; Blockly.Msg.SENSOR_COLOUR = "sensor de color"; Blockly.Msg.SENSOR_COLOURBLOB_TOOLTIP = "Devuelve información en una lista [x, y, tamaño] sobre el área más grande encontrada de un color en un rango HSV específico en píxeles."; Blockly.Msg.SENSOR_COLOURTCS3472 = "sensor de color TCS3472"; Blockly.Msg.SENSOR_COLOUR_EDISON = "rastreador de línea"; Blockly.Msg.SENSOR_COMPASS = "sensor de brújula"; Blockly.Msg.SENSOR_COMPASS_EV3 = "sensor de brújula HT"; -Blockly.Msg.SENSOR_COUNTER = "counter"; // untranslated +Blockly.Msg.SENSOR_COUNTER = "contador"; Blockly.Msg.SENSOR_DATA_READY = "¿listo?"; Blockly.Msg.SENSOR_DETECTFACE = "detector de rostros"; Blockly.Msg.SENSOR_DETECTFACE_GETSAMPLE_TOOLTIP = "Detecta un rostro previamente aprendido y guardado."; @@ -1567,14 +1567,14 @@ Blockly.Msg.SENSOR_ELECTRICCURRENT = "sensor de corriente"; Blockly.Msg.SENSOR_ELECTRICCURRENT_GETSAMPLE_TOOLTIP = "Obtiene la corriente eléctrica de la placa del motor en la articulación seleccionada."; Blockly.Msg.SENSOR_ENCODER = "encoder"; Blockly.Msg.SENSOR_ENVIRONMENTAL = "sensor ambiental"; -Blockly.Msg.SENSOR_ENVIRONMENTAL_CALIBRATION_TOOLTIP = "Calibrates the environmental sensor. This takes several minutes."; // untranslated +Blockly.Msg.SENSOR_ENVIRONMENTAL_CALIBRATION_TOOLTIP = "Calibra el sensor ambiental. Esto lleva varios minutos."; Blockly.Msg.SENSOR_ENVIRONMENTAL_GETSAMPLE_TOOLTIP = "Devuelve valores del sensor ambiental."; Blockly.Msg.SENSOR_FLAME = "sensor de llamas"; Blockly.Msg.SENSOR_FSR = "resistor de detección de fuerza"; Blockly.Msg.SENSOR_FSR_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual del resistor de detección de fuerza debajo de los pies del robot."; Blockly.Msg.SENSOR_GESTURE = "gesto"; Blockly.Msg.SENSOR_GESTURE_ACTIVE = "¿activo?"; -Blockly.Msg.SENSOR_GESTURE_COLOUR_GETSAMPLE_TOOLTIP = "Gets the current reading from the colour reading of the sensor."; // untranslated +Blockly.Msg.SENSOR_GESTURE_COLOUR_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual del sensor de color."; Blockly.Msg.SENSOR_GESTURE_DOWN = "boca abajo"; Blockly.Msg.SENSOR_GESTURE_DOWN_GETSAMPLE_TOOLTIP = "Devuelve »verdadero« si la postura está hacia abajo."; Blockly.Msg.SENSOR_GESTURE_FACE_DOWN = "en el frente"; @@ -1583,12 +1583,12 @@ Blockly.Msg.SENSOR_GESTURE_FACE_UP = "en la parte trasera"; Blockly.Msg.SENSOR_GESTURE_FACE_UP_GETSAMPLE_TOOLTIP = "Devuelve »verdadero« si la postura está boca arriba."; Blockly.Msg.SENSOR_GESTURE_FREEFALL = "cayendo libremente"; Blockly.Msg.SENSOR_GESTURE_FREEFALL_GETSAMPLE_TOOLTIP = "Devuelve »verdadero« si está cayendo libremente."; -Blockly.Msg.SENSOR_GESTURE_GESTURE_GETSAMPLE_TOOLTIP = "Gets the current gesture reading of the sensor [1-6]."; // untranslated -Blockly.Msg.SENSOR_GESTURE_PROXIMITY_GETSAMPLE_TOOLTIP = "Gets the current proxmity reading of the sensor in percent."; // untranslated +Blockly.Msg.SENSOR_GESTURE_GESTURE_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual del gesto del sensor [1-6]."; +Blockly.Msg.SENSOR_GESTURE_PROXIMITY_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual de proximidad del sensor en porcentaje."; Blockly.Msg.SENSOR_GESTURE_SHAKE = "agitar"; Blockly.Msg.SENSOR_GESTURE_SHAKE_GETSAMPLE_TOOLTIP = "Devuelve »verdadero« si está agitándose."; Blockly.Msg.SENSOR_GESTURE_TOOLTIP = "¿Está el sistema en el estado seleccionado?"; -Blockly.Msg.SENSOR_GESTURE_TXT4 = "RGB gesture sensor"; // untranslated +Blockly.Msg.SENSOR_GESTURE_TXT4 = "Sensor de gestos RGB"; Blockly.Msg.SENSOR_GESTURE_UP = "erguido"; Blockly.Msg.SENSOR_GESTURE_UP_GETSAMPLE_TOOLTIP = "Devuelve »verdadero« si la postura está erguida."; Blockly.Msg.SENSOR_GET = "obtener"; @@ -1613,10 +1613,10 @@ Blockly.Msg.SENSOR_HUMIDITY = "sensor humedad"; Blockly.Msg.SENSOR_HUMIDITY_ARDUINO = "sensor de humedad DHT11"; Blockly.Msg.SENSOR_HUMIDITY_GETSAMPLE_TOOLTIP = "Obtiene el valor actual del sensor de humedad"; Blockly.Msg.SENSOR_HUMIDITY_SENSEBOX = "sensor de humedad/temperatura HDC1080"; -Blockly.Msg.SENSOR_IMU = "Inertial measuring unit"; // untranslated -Blockly.Msg.SENSOR_IMU_GETSAMPLE_TOOLTIP = "Gets the current reading from the inertial measurement unit (IMU)."; // untranslated -Blockly.Msg.SENSOR_IMU_TOOLTIP = "Represents an Inertial Measurement Unit (IMU)"; // untranslated -Blockly.Msg.SENSOR_IMU_TXT4 = "Combi-sensor"; // untranslated +Blockly.Msg.SENSOR_IMU = "Unidad de medición inercial"; +Blockly.Msg.SENSOR_IMU_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual de la unidad de medición inercial (IMU)."; +Blockly.Msg.SENSOR_IMU_TOOLTIP = "Representa una Unidad de Medición Inercial (IMU)"; +Blockly.Msg.SENSOR_IMU_TXT4 = "Sensor combinado"; Blockly.Msg.SENSOR_INFRARED = "sensor de infrarrojos"; Blockly.Msg.SENSOR_INFRAREDLINE = "sensor de detección de línea"; Blockly.Msg.SENSOR_INFRAREDOBSTACLE = "sensor de detección de obstáculos"; @@ -1644,7 +1644,7 @@ Blockly.Msg.SENSOR_KEY_PLAY = "reproducir"; Blockly.Msg.SENSOR_KEY_REC = "grabar"; Blockly.Msg.SENSOR_KEY_RIGHT = "derecha"; Blockly.Msg.SENSOR_KEY_STOP = "detener"; -Blockly.Msg.SENSOR_KEY_TXT4 = "Mini-Switch"; // untranslated +Blockly.Msg.SENSOR_KEY_TXT4 = "Mini interruptor"; Blockly.Msg.SENSOR_KEY_UP = "arriba"; Blockly.Msg.SENSOR_LIGHT = "sensor de luz"; Blockly.Msg.SENSOR_LIGHTVEML = "sensor de luz visible/UV"; @@ -1653,8 +1653,8 @@ Blockly.Msg.SENSOR_LIGHTVEML_UVLIGHT_GETSAMPLE_TOOLTIP = "Lee el valor actual de Blockly.Msg.SENSOR_LIGHT_LIGHT_GETSAMPLE_TOOLTIP_EDISON = "Obtiene la lectura actual del sensor de luz"; Blockly.Msg.SENSOR_LIGHT_LINETRACKER = "sensor de seguimiento de línea"; Blockly.Msg.SENSOR_LINE = "sensor infrarrojo inferior"; -Blockly.Msg.SENSOR_LINE_COLOUR_TOOLTIP = "Returns the colour of at the specified index (0-3)."; // untranslated -Blockly.Msg.SENSOR_LINE_INFORMATION_TOOLTIP = "Returns a list [position [-100;100], width] of the line at the specified index (0-3)."; // untranslated +Blockly.Msg.SENSOR_LINE_COLOUR_TOOLTIP = "Devuelve el color en el índice especificado (0-3)."; +Blockly.Msg.SENSOR_LINE_INFORMATION_TOOLTIP = "Devuelve una lista [posición [-100;100], ancho] de la línea en el índice especificado (0-3)."; Blockly.Msg.SENSOR_LINE_JOYCAR = "sensor de línea"; Blockly.Msg.SENSOR_LOGOTOUCH = "sensor de logo"; Blockly.Msg.SENSOR_LOGOTOUCH_GETSAMPLE_TOOLTIP = "¿Está tocado el logo?"; @@ -1665,7 +1665,7 @@ Blockly.Msg.SENSOR_MARKERINF_TOOLTIP = "Devuelve los datos de posición como una Blockly.Msg.SENSOR_MOISTURE = "sensor de humedad"; Blockly.Msg.SENSOR_MOISTURE_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual del sensor de humedad en porcentaje."; Blockly.Msg.SENSOR_MOTION = "sensor movimiento"; -Blockly.Msg.SENSOR_MOTIONDETECTOR = "motion detector"; // untranslated +Blockly.Msg.SENSOR_MOTIONDETECTOR = "detector de movimiento"; Blockly.Msg.SENSOR_MOTION_ARDUINO = "sensor de movimiento HC-SR501"; Blockly.Msg.SENSOR_MOTION_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual del sensor de movimiento (verdadero/falso)."; Blockly.Msg.SENSOR_MS_TIMER = "en ms"; @@ -1722,7 +1722,7 @@ Blockly.Msg.SENSOR_TIME = "tiempo de espera"; Blockly.Msg.SENSOR_TIMER = "temporizador"; Blockly.Msg.SENSOR_TOP = "superior"; Blockly.Msg.SENSOR_TOUCH = "sensor de contacto"; -Blockly.Msg.SENSOR_TOUCHKEY = "display button"; // untranslated +Blockly.Msg.SENSOR_TOUCHKEY = "botón de pantalla"; Blockly.Msg.SENSOR_ULTRASONIC = "sensor de ultrasonidos"; Blockly.Msg.SENSOR_ULTRASONIC_ARDUINO = "sensor de ultrasonidos HC-SR04"; Blockly.Msg.SENSOR_ULTRASONIC_DISTANCE_GETSAMPLE_TOOLTIP_ARDUINO = "Obtiene la lectura actual del sensor ultrasónico en centímetros. La distancia máxima para medir es 400 cm."; @@ -1807,57 +1807,57 @@ Blockly.Msg.SLOT_TILTED_NO = "no"; Blockly.Msg.SLOT_TILTED_UP = "arriba"; Blockly.Msg.SLOT_YAW = "viraje"; Blockly.Msg.SOCKET = "enchufe"; -Blockly.Msg.SOUND_AIRPLANE = "airplane"; // untranslated -Blockly.Msg.SOUND_ALARM = "alarm"; // untranslated +Blockly.Msg.SOUND_AIRPLANE = "avión"; +Blockly.Msg.SOUND_ALARM = "alarma"; Blockly.Msg.SOUND_ARROW = "flecha"; Blockly.Msg.SOUND_BADDY = "malo"; Blockly.Msg.SOUND_BA_DING = "ba_ding"; -Blockly.Msg.SOUND_BELL = "bell"; // untranslated +Blockly.Msg.SOUND_BELL = "campana"; Blockly.Msg.SOUND_BIRTHDAY = "cumpleaños"; Blockly.Msg.SOUND_BLUES = "blues"; -Blockly.Msg.SOUND_BRAKING = "braking"; // untranslated -Blockly.Msg.SOUND_CARHORN_LONG = "car horn long"; // untranslated -Blockly.Msg.SOUND_CARHORN_SHORT = "car horn short"; // untranslated +Blockly.Msg.SOUND_BRAKING = "frenado"; +Blockly.Msg.SOUND_CARHORN_LONG = "bocina de coche larga"; +Blockly.Msg.SOUND_CARHORN_SHORT = "bocina de coche corta"; Blockly.Msg.SOUND_CENTRAL = "central"; Blockly.Msg.SOUND_CHASE = "persecución"; Blockly.Msg.SOUND_COLLISION = "colisión"; -Blockly.Msg.SOUND_CRACKLING_WOOD = "crackling wood"; // untranslated +Blockly.Msg.SOUND_CRACKLING_WOOD = "madera crepitante"; Blockly.Msg.SOUND_DADADADUM = "dadadadum"; Blockly.Msg.SOUND_ENTERTAINER = "animador"; -Blockly.Msg.SOUND_EXCAVATOR = "excavator"; // untranslated -Blockly.Msg.SOUND_FANTASY = "fantasy"; // untranslated -Blockly.Msg.SOUND_FARM = "farm"; // untranslated -Blockly.Msg.SOUND_FIRE = "fire noises"; // untranslated -Blockly.Msg.SOUND_FIRE_DEPARTMENT = "fire department"; // untranslated -Blockly.Msg.SOUND_FORMULAONE = "Formula 1"; // untranslated +Blockly.Msg.SOUND_EXCAVATOR = "excavadora"; +Blockly.Msg.SOUND_FANTASY = "fantasía"; +Blockly.Msg.SOUND_FARM = "granja"; +Blockly.Msg.SOUND_FIRE = "ruidos de fuego"; +Blockly.Msg.SOUND_FIRE_DEPARTMENT = "departamento de bomberos"; +Blockly.Msg.SOUND_FORMULAONE = "Fórmula 1"; Blockly.Msg.SOUND_FUNERAL = "funeral"; Blockly.Msg.SOUND_FUNK = "funk"; Blockly.Msg.SOUND_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual del sensor de sonido en el rango de 0 a 100. 0 es silencio y 100 es ruido."; Blockly.Msg.SOUND_GIGGLE = "risita"; Blockly.Msg.SOUND_HAPPY = "feliz"; -Blockly.Msg.SOUND_HELICOPTER = "helicopter"; // untranslated +Blockly.Msg.SOUND_HELICOPTER = "helicóptero"; Blockly.Msg.SOUND_HELLO = "hola"; -Blockly.Msg.SOUND_HORN_SHIP = "ships horn"; // untranslated -Blockly.Msg.SOUND_HYDRAULIC = "hydraulic"; // untranslated +Blockly.Msg.SOUND_HORN_SHIP = "bocina de barco"; +Blockly.Msg.SOUND_HYDRAULIC = "hidráulico"; Blockly.Msg.SOUND_JUMP_DOWN = "salto hacia abajo"; Blockly.Msg.SOUND_JUMP_UP = "salto hacia arriba"; -Blockly.Msg.SOUND_MOTOR_STARTING = "motor starting"; // untranslated +Blockly.Msg.SOUND_MOTOR_STARTING = "arranque del motor"; Blockly.Msg.SOUND_MYSTERIOUS = "misterioso"; Blockly.Msg.SOUND_NYAN = "nyan"; Blockly.Msg.SOUND_ODE = "ode"; Blockly.Msg.SOUND_POWER_DOWN = "apagado"; Blockly.Msg.SOUND_POWER_UP = "encendido"; Blockly.Msg.SOUND_PRELUDE = "preludio"; -Blockly.Msg.SOUND_PROPELLER = "propeller"; // untranslated +Blockly.Msg.SOUND_PROPELLER = "hélice"; Blockly.Msg.SOUND_PUNCHLINE = "remate"; Blockly.Msg.SOUND_PYTHON = "python"; -Blockly.Msg.SOUND_RAISE_HEAD = "raise head"; // untranslated +Blockly.Msg.SOUND_RAISE_HEAD = "levantar la cabeza"; Blockly.Msg.SOUND_RECORD_DURATION_TOOLTIP = "Obtener la duración del sonido grabado desde la tarjeta SD."; Blockly.Msg.SOUND_RECORD_STOP_TOOLTIP = "Detener la grabación de sonidos en la tarjeta SD."; Blockly.Msg.SOUND_RECORD_THYMIO_TOOLTIP = "Comienza a grabar sonidos en una tarjeta SD conectada a tu Thymio. La grabación se guarda como un archivo Rx.wav, donde >>x<< es el nombre de la grabación proporcionada. ¡Se requiere una tarjeta SD!"; Blockly.Msg.SOUND_RECORD_TOOLTIP = "Comenzar o detener la grabación de sonidos"; Blockly.Msg.SOUND_RINGTONE = "tono de llamada"; -Blockly.Msg.SOUND_ROLLER_COASTER = "roller coaster"; // untranslated +Blockly.Msg.SOUND_ROLLER_COASTER = "montaña rusa"; Blockly.Msg.SOUND_SAD = "triste"; Blockly.Msg.SOUND_SCARY = "aterrador"; Blockly.Msg.SOUND_SHUTDOWN = "apagado"; @@ -1867,15 +1867,15 @@ Blockly.Msg.SOUND_SPRING = "primavera"; Blockly.Msg.SOUND_STARTUP = "inicio"; Blockly.Msg.SOUND_TARGET_DETECTED = "objetivo detectado"; Blockly.Msg.SOUND_TARGET_FRIENDLY = "objetivo amigable"; -Blockly.Msg.SOUND_TILT_HEAD = "tilt head"; // untranslated +Blockly.Msg.SOUND_TILT_HEAD = "inclinación de la cabeza"; Blockly.Msg.SOUND_TOGGLE_TOOLTIP = "Enciende o apaga el altavoz."; Blockly.Msg.SOUND_TOOLTIP = "Representa un sensor de sonido"; -Blockly.Msg.SOUND_TRACTOR = "tractor"; // untranslated -Blockly.Msg.SOUND_TRUCK = "truck"; // untranslated +Blockly.Msg.SOUND_TRACTOR = "tractor"; +Blockly.Msg.SOUND_TRUCK = "camión"; Blockly.Msg.SOUND_TWINKLE = "destello"; Blockly.Msg.SOUND_WAWAWAWAA = "wawawawaa"; Blockly.Msg.SOUND_WEDDING = "boda"; -Blockly.Msg.SOUND_WINK = "wink"; // untranslated +Blockly.Msg.SOUND_WINK = "guiño"; Blockly.Msg.SOUND_YAWN = "bostezo"; Blockly.Msg.SOURCE_CODE_EDITOR_BUILD_TOOLTIP = "Compila el código fuente."; Blockly.Msg.SOURCE_CODE_EDITOR_CLOSE_CONFIRMATION = "¡Se perderán todos tus cambios!"; @@ -1889,44 +1889,44 @@ Blockly.Msg.SSID = "SSID"; Blockly.Msg.START = "Inicio del programa"; Blockly.Msg.START_ACTIVITY = "actividad"; Blockly.Msg.START_ACTIVITY_TOOLTIP = "Inicia una actividad adicional"; -Blockly.Msg.START_ALL_ROBOTS = "All systems and filter options"; // untranslated -Blockly.Msg.START_BOOKMARK_TOOLTIP = "Create a bookmark directly to your favourite robot/system."; // untranslated -Blockly.Msg.START_CONNECT_HEADLINE = "Connect your robot"; // untranslated -Blockly.Msg.START_CONNECT_TEXT = "You can directly connect your robot. The suitable NEPO program opens automatically."; // untranslated -Blockly.Msg.START_FAQ = "Find answers to questions about the Open Roberta Lab that we have been asked so far or that we have already asked ourselves."; // untranslated -Blockly.Msg.START_FAQ_HEADLINE = "Find answers to important questions"; // untranslated -Blockly.Msg.START_FEATURES = "Features"; // untranslated -Blockly.Msg.START_FIRST_HELP = "First time here? Find support and helpful information."; // untranslated -Blockly.Msg.START_FOOTER_FRAUNHOFER = "Fraunhofer Institute for Intelligent Analysis and Information Systems IAIS"; // untranslated -Blockly.Msg.START_FOOTER_INFORMATION = "Information"; // untranslated -Blockly.Msg.START_FOOTER_RESSOURCES = "Resources"; // untranslated -Blockly.Msg.START_FOOTER_ROBERTA_IAIS = "Part of the Roberta Initiative® of Fraunhofer IAIS"; // untranslated -Blockly.Msg.START_FORMATSEARCH = "search robots/systems"; // untranslated -Blockly.Msg.START_HEADLINE_PART_FOUR = "Boards"; // untranslated -Blockly.Msg.START_HEADLINE_PART_ONE = "Program"; // untranslated -Blockly.Msg.START_HEADLINE_PART_THREE = "Robots &"; // untranslated -Blockly.Msg.START_HEADLINE_PART_TWO = "your"; // untranslated -Blockly.Msg.START_IMPORT_HEADLINE = "Import your NEPO program"; // untranslated -Blockly.Msg.START_IMPORT_TEXT = "Upload your XML file to our lab and continue where you left off."; // untranslated -Blockly.Msg.START_LOGIN_HEADLINE = "Sign in"; // untranslated -Blockly.Msg.START_LOGIN_TEXT = "Log in and have access to your saved programs and settings."; // untranslated -Blockly.Msg.START_NN = "Neural networks"; // untranslated -Blockly.Msg.START_OPTIONS = "More options"; // untranslated -Blockly.Msg.START_POPULAR_ROBOTS = "Popular systems"; // untranslated -Blockly.Msg.START_PROGLANG = "Programming languages"; // untranslated +Blockly.Msg.START_ALL_ROBOTS = "Todos los sistemas y opciones de filtro"; +Blockly.Msg.START_BOOKMARK_TOOLTIP = "Crea un marcador directamente a tu robot/sistema favorito."; +Blockly.Msg.START_CONNECT_HEADLINE = "Conecta tu robot"; +Blockly.Msg.START_CONNECT_TEXT = "Puedes conectar directamente tu robot. El programa NEPO adecuado se abrirá automáticamente."; +Blockly.Msg.START_FAQ = "Encuentra respuestas a preguntas sobre el Laboratorio Open Roberta que nos han hecho hasta ahora o que ya nos hemos hecho a nosotros mismos."; +Blockly.Msg.START_FAQ_HEADLINE = "Encuentra respuestas a preguntas importantes"; +Blockly.Msg.START_FEATURES = "Características"; +Blockly.Msg.START_FIRST_HELP = "¿Es la primera vez aquí? Encuentra soporte e información útil."; +Blockly.Msg.START_FOOTER_FRAUNHOFER = "Instituto Fraunhofer para Sistemas de Análisis e Información Inteligente IAIS"; +Blockly.Msg.START_FOOTER_INFORMATION = "Información"; +Blockly.Msg.START_FOOTER_RESSOURCES = "Recursos"; +Blockly.Msg.START_FOOTER_ROBERTA_IAIS = "Parte de la Iniciativa Roberta® del Fraunhofer IAIS"; +Blockly.Msg.START_FORMATSEARCH = "buscar robots/sistemas"; +Blockly.Msg.START_HEADLINE_PART_FOUR = "Tableros"; +Blockly.Msg.START_HEADLINE_PART_ONE = "Programa"; +Blockly.Msg.START_HEADLINE_PART_THREE = "Robots &"; +Blockly.Msg.START_HEADLINE_PART_TWO = "tu"; +Blockly.Msg.START_IMPORT_HEADLINE = "Importa tu programa NEPO"; +Blockly.Msg.START_IMPORT_TEXT = "Carga tu archivo XML en nuestro laboratorio y continúa donde lo dejaste."; +Blockly.Msg.START_LOGIN_HEADLINE = "Iniciar sesión"; +Blockly.Msg.START_LOGIN_TEXT = "Inicia sesión y accede a tus programas y configuraciones guardados."; +Blockly.Msg.START_NN = "Redes neuronales"; +Blockly.Msg.START_OPTIONS = "Más opciones"; +Blockly.Msg.START_POPULAR_ROBOTS = "Sistemas populares"; +Blockly.Msg.START_PROGLANG = "Lenguajes de programación"; Blockly.Msg.START_PROGRAM = "Inicio del programa"; Blockly.Msg.START_PROGRAM_AUTOMOMOUSLIFE = "comportamiento autónomo"; Blockly.Msg.START_PROGRAM_DEBUG = "mostrar datos de sensor"; -Blockly.Msg.START_RESULTS = "results"; // untranslated -Blockly.Msg.START_SIMULATION = "Simulation"; // untranslated -Blockly.Msg.START_START = "get started"; // untranslated -Blockly.Msg.START_STARTUP_TITLE = "Welcome to Open Roberta Lab"; // untranslated -Blockly.Msg.START_TEASER = "Our open source platform »Open Roberta Lab« let you create your very own programs in no time at all using drag and drop."; // untranslated +Blockly.Msg.START_RESULTS = "resultados"; +Blockly.Msg.START_SIMULATION = "Simulación"; +Blockly.Msg.START_START = "empezar"; +Blockly.Msg.START_STARTUP_TITLE = "Bienvenido a Open Roberta Lab"; +Blockly.Msg.START_TEASER = "Nuestra plataforma de código abierto »Open Roberta Lab« te permite crear tus propios programas en muy poco tiempo usando arrastrar y soltar."; Blockly.Msg.START_TOOLTIP = "Punto de inicio del programa principal"; -Blockly.Msg.START_TOUR_HEADLINE = "Take an interactive tour"; // untranslated -Blockly.Msg.START_WIKI_HEADLINE = "Take a look at our wiki"; // untranslated -Blockly.Msg.START_YOUTUBE_HEADLINE = "Visit us on YouTube"; // untranslated -Blockly.Msg.START_YOUTUBE_TEXT = "On our YouTube channel you will find tutorials, experiments and mini-clips about programming with Open Roberta and robotics in education."; // untranslated +Blockly.Msg.START_TOUR_HEADLINE = "Realiza un recorrido interactivo"; +Blockly.Msg.START_WIKI_HEADLINE = "Consulta nuestro wiki"; +Blockly.Msg.START_YOUTUBE_HEADLINE = "Visítanos en YouTube"; +Blockly.Msg.START_YOUTUBE_TEXT = "En nuestro canal de YouTube encontrarás tutoriales, experimentos y mini clips sobre programación con Open Roberta y robótica en la educación."; Blockly.Msg.STEPMOTOR_TOOLTIP = "Representa un motor paso a paso."; Blockly.Msg.STEPS_PER_REVOLUTION = "pasos por revolución"; Blockly.Msg.STEP_MOTOR = "motor paso a paso"; @@ -1937,8 +1937,8 @@ Blockly.Msg.SWITCH = "interruptor"; Blockly.Msg.SWITCH_LED_MATRIX_TOOLTIP = "Activa/Desactiva la matriz LED para usar los pines de doble propósito."; Blockly.Msg.TAB_CONFIGURATION = "Configuración del robot"; Blockly.Msg.TAB_NN = "red neuronal"; -Blockly.Msg.TAB_NN_DEFINE = " Define"; // untranslated -Blockly.Msg.TAB_NN_LEARN = " Learn"; // untranslated +Blockly.Msg.TAB_NN_DEFINE = "Definir"; +Blockly.Msg.TAB_NN_LEARN = "Aprender"; Blockly.Msg.TAB_PROGRAM = "Programa"; Blockly.Msg.TEMPERATURE_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual del sensor de temperatura en °C."; Blockly.Msg.TEMPERATURE_TOOLTIP = "Representa un sensor de temperatura."; @@ -2014,8 +2014,8 @@ Blockly.Msg.TIMER_GETSAMPLE_TOOLTIP = "Obtiene la lectura actual del temporizado Blockly.Msg.TIMER_RESET_TOOLTIP = "Reinicia el temporizador"; Blockly.Msg.TIMER_SET_TOOLTIP = "Establece el temporizador a un período definido en milisegundos."; Blockly.Msg.TITLE = "título"; -Blockly.Msg.TITLE_GOAL = "Learning objective"; // untranslated -Blockly.Msg.TITLE_PREVIOUS = "Previous knowledge"; // untranslated +Blockly.Msg.TITLE_GOAL = "Objetivo de aprendizaje"; +Blockly.Msg.TITLE_PREVIOUS = "Conocimientos previos"; Blockly.Msg.TO = "a"; Blockly.Msg.TODAY = "Hoy"; Blockly.Msg.TOOLBOX_ACTION = "Acción"; @@ -2142,7 +2142,7 @@ Blockly.Msg.WAIT_TIME_TOOLTIP = "Espera un tiempo en milisegundos"; Blockly.Msg.WAIT_TOOLTIP = "espera hasta que la condición sea verdadera"; Blockly.Msg.WAIT_UNTIL = "esperar hasta"; Blockly.Msg.WEIGHT_KG = "peso en kg"; -Blockly.Msg.WHEEL_BASE = "wheel base"; // untranslated +Blockly.Msg.WHEEL_BASE = "Base de ruedas"; Blockly.Msg.WIRELESS_TOOLTIP = "Representa una conexión inalámbrica."; Blockly.Msg.WRITE_TO_PIN_TOOLTIP = "Manda el valor al pin elegido"; Blockly.Msg.X = "x"; diff --git a/OpenRobertaServer/staticResources/blockly/msg/json/en.json b/OpenRobertaServer/staticResources/blockly/msg/json/en.json index 92dff56d98..b184fdb990 100644 --- a/OpenRobertaServer/staticResources/blockly/msg/json/en.json +++ b/OpenRobertaServer/staticResources/blockly/msg/json/en.json @@ -1,7 +1,7 @@ { "@metadata": { "author": "Ellen Spertus ", - "lastupdated": "2024-05-10 01:56:32.254437", + "lastupdated": "2024-05-13 16:53:23.155520", "locale": "en", "messagedocumentation" : "qqq" }, diff --git a/RobotFischertechnik/src/main/java/de/fhg/iais/roberta/visitor/Txt4Methods.java b/RobotFischertechnik/src/main/java/de/fhg/iais/roberta/visitor/Txt4Methods.java index 7464e98033..00b026b4c9 100644 --- a/RobotFischertechnik/src/main/java/de/fhg/iais/roberta/visitor/Txt4Methods.java +++ b/RobotFischertechnik/src/main/java/de/fhg/iais/roberta/visitor/Txt4Methods.java @@ -22,5 +22,6 @@ public enum Txt4Methods { LINEGETCOLOUR, CLEARDISPLAY, DIFFERENTIALDRIVECURVE, - OMNIDRIVECURVE + OMNIDRIVECURVE, + SPEEDTOPWM } diff --git a/RobotFischertechnik/src/main/java/de/fhg/iais/roberta/visitor/Txt4ValidatorAndCollectorVisitor.java b/RobotFischertechnik/src/main/java/de/fhg/iais/roberta/visitor/Txt4ValidatorAndCollectorVisitor.java index 8b720bc9da..2ca0ef1be8 100644 --- a/RobotFischertechnik/src/main/java/de/fhg/iais/roberta/visitor/Txt4ValidatorAndCollectorVisitor.java +++ b/RobotFischertechnik/src/main/java/de/fhg/iais/roberta/visitor/Txt4ValidatorAndCollectorVisitor.java @@ -85,6 +85,7 @@ public Void visitMotorOnAction(MotorOnAction motorOnAction) { usedHardwareBuilder.addUsedActor(new UsedActor(motor.getOptProperty("PORT"), motor.componentType)); } usedMethodBuilder.addUsedMethod(Txt4Methods.MOTORSTART); + usedMethodBuilder.addUsedMethod(Txt4Methods.SPEEDTOPWM); return null; } @@ -96,6 +97,7 @@ public Void visitMotorOnForAction(MotorOnForAction motorOnForAction) { usedHardwareBuilder.addUsedActor(new UsedActor(motorOnForAction.getUserDefinedPort(), FischertechnikConstants.ENCODERMOTOR)); usedHardwareBuilder.addUsedSensor(new UsedSensor(motorOnForAction.getUserDefinedPort(), SC.ENCODER, FischertechnikConstants.ENCODERMOTOR)); usedMethodBuilder.addUsedMethod(Txt4Methods.MOTORSTARTFOR); + usedMethodBuilder.addUsedMethod(Txt4Methods.SPEEDTOPWM); return null; } @@ -113,6 +115,8 @@ public Void visitMotorStopAction(MotorStopAction motorStopAction) { public Void visitMotorOmniDiffOnAction(MotorOmniDiffOnAction motorOmniDiffOnAction) { requiredComponentVisited(motorOmniDiffOnAction, motorOmniDiffOnAction.power); checkDiffOrOmniDrive(motorOmniDiffOnAction); + + usedMethodBuilder.addUsedMethod(Txt4Methods.SPEEDTOPWM); usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffOnAction.getUserDefinedPort(), FischertechnikConstants.ENCODERMOTOR)); if ( configHasOmnidrive() ) { usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffOnAction.getUserDefinedPort(), FischertechnikConstants.OMNIDRIVE)); @@ -133,6 +137,7 @@ public Void visitMotorOmniDiffOnForAction(MotorOmniDiffOnForAction motorOmniDiff usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffOnForAction.getUserDefinedPort(), FischertechnikConstants.ENCODERMOTOR)); usedHardwareBuilder.addUsedSensor(new UsedSensor(motorOmniDiffOnForAction.getUserDefinedPort(), SC.ENCODER, FischertechnikConstants.ENCODERMOTOR)); usedMethodBuilder.addUsedMethod(Txt4Methods.MOTORSTART); + usedMethodBuilder.addUsedMethod(Txt4Methods.SPEEDTOPWM); if ( configHasOmnidrive() ) { usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffOnForAction.getUserDefinedPort(), FischertechnikConstants.OMNIDRIVE)); addOmnidriveDistanceMethods(motorOmniDiffOnForAction.direction); @@ -151,7 +156,7 @@ public Void visitMotorOmniDiffCurveAction(MotorOmniDiffCurveAction motorOmniDiff checkDiffOrOmniDrive(motorOmniDiffCurveAction); usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffCurveAction.getUserDefinedPort(), FischertechnikConstants.ENCODERMOTOR)); usedMethodBuilder.addUsedMethod(Txt4Methods.MOTORSTART); - + usedMethodBuilder.addUsedMethod(Txt4Methods.SPEEDTOPWM); if ( configHasOmnidrive() ) { usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffCurveAction.getUserDefinedPort(), FischertechnikConstants.OMNIDRIVE)); usedMethodBuilder.addUsedMethod(Txt4Methods.OMNIDRIVECURVE); @@ -169,6 +174,7 @@ public Void visitMotorOmniDiffCurveForAction(MotorOmniDiffCurveForAction motorOm usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffCurveForAction.getUserDefinedPort(), FischertechnikConstants.ENCODERMOTOR)); usedHardwareBuilder.addUsedSensor(new UsedSensor(motorOmniDiffCurveForAction.getUserDefinedPort(), SC.ENCODER, FischertechnikConstants.ENCODERMOTOR)); usedMethodBuilder.addUsedMethod(Txt4Methods.MOTORSTART); + usedMethodBuilder.addUsedMethod(Txt4Methods.SPEEDTOPWM); if ( configHasOmnidrive() ) { usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffCurveForAction.getUserDefinedPort(), FischertechnikConstants.OMNIDRIVE)); usedMethodBuilder.addUsedMethod(Txt4Methods.OMNIDRIVECURVE); @@ -208,6 +214,7 @@ public Void visitMotorOmniDiffTurnAction(MotorOmniDiffTurnAction motorOmniDiffTu checkDiffOrOmniDrive(motorOmniDiffTurnAction); usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffTurnAction.getUserDefinedPort(), FischertechnikConstants.ENCODERMOTOR)); usedMethodBuilder.addUsedMethod(Txt4Methods.MOTORSTART); + usedMethodBuilder.addUsedMethod(Txt4Methods.SPEEDTOPWM); if ( configHasOmnidrive() ) { usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffTurnAction.getUserDefinedPort(), FischertechnikConstants.OMNIDRIVE)); @@ -225,6 +232,7 @@ public Void visitMotorOmniDiffTurnForAction(MotorOmniDiffTurnForAction motorOmni checkDiffOrOmniDrive(motorOmniDiffTurnForAction); usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffTurnForAction.getUserDefinedPort(), FischertechnikConstants.ENCODERMOTOR)); usedHardwareBuilder.addUsedSensor(new UsedSensor(motorOmniDiffTurnForAction.getUserDefinedPort(), SC.ENCODER, FischertechnikConstants.ENCODERMOTOR)); + usedMethodBuilder.addUsedMethod(Txt4Methods.SPEEDTOPWM); if ( configHasOmnidrive() ) { usedHardwareBuilder.addUsedActor(new UsedActor(motorOmniDiffTurnForAction.getUserDefinedPort(), FischertechnikConstants.OMNIDRIVE)); usedMethodBuilder.addUsedMethod(Txt4Methods.OMNIDRIVETURNDEGREES); diff --git a/RobotFischertechnik/src/main/resources/txt4.methods.yml b/RobotFischertechnik/src/main/resources/txt4.methods.yml index 1c5467ecb9..0c1736196a 100644 --- a/RobotFischertechnik/src/main/resources/txt4.methods.yml +++ b/RobotFischertechnik/src/main/resources/txt4.methods.yml @@ -2,17 +2,23 @@ include: "classpath:/common.methods.yml" ## FunctionNames +SPEEDTOPWM: + PYTHON: | + def speed_to_pwm(speed): + speed = max(min(speed, 100), -100) + return int((speed / 100) * 512) + MOTORSTART: PYTHON: | def motor_start(motor, speed): - motor.set_speed(int((speed / 100) * 512), Motor.CCW) + motor.set_speed(speed_to_pwm(speed), Motor.CCW) motor.start() MOTORSTARTFOR: PYTHON: | def motor_start_for(motor, speed, degrees): steps = int((degrees / 360) * STEPS_PER_ROTATION) - motor.set_speed(int((speed / 100) * 512), Motor.CCW) + motor.set_speed(speed_to_pwm(speed), Motor.CCW) motor.set_distance(steps) while True: if not motor.is_running(): @@ -23,7 +29,7 @@ MOTORSTARTFOR: DIFFERENTIALDRIVE: PYTHON: | def diffdrive(speed): - speed = int((speed / 100) * 512) + speed = speed_to_pwm(speed) left_motor.set_speed(speed, Motor.CCW) right_motor.set_speed(speed, Motor.CCW) left_motor.start_sync(right_motor) @@ -92,10 +98,10 @@ OMNIDRIVESTRAIGHTDISTANCE: constant = WHEEL_DIAMETER / (2 * 4) distance_per_wheel = distance / constant / 4 steps_per_wheel = int(distance_per_wheel / (2 * math.pi) * STEPS_PER_ROTATION) - front_left_motor.set_speed(int((direction * speed_fl / 100) * 512), Motor.CCW) - front_right_motor.set_speed(int((direction * speed_fr / 100) * 512), Motor.CCW) - rear_left_motor.set_speed(int((direction * speed_rl / 100) * 512), Motor.CCW) - rear_right_motor.set_speed(int((direction * speed_rr / 100) * 512), Motor.CCW) + front_left_motor.set_speed(speed_to_pwm(direction * speed_fl), Motor.CCW) + front_right_motor.set_speed(speed_to_pwm(direction * speed_fr), Motor.CCW) + rear_left_motor.set_speed(speed_to_pwm(direction * speed_rl), Motor.CCW) + rear_right_motor.set_speed(speed_to_pwm(direction * speed_rr), Motor.CCW) front_left_motor.set_distance(steps_per_wheel, front_right_motor, rear_left_motor, rear_right_motor) while True: if (not front_left_motor.is_running() @@ -112,7 +118,7 @@ OMNIDRIVEDIAGONALTLDISTANCE: if distance < 0: speed = -speed distance = abs(distance) - speed = int((speed / 100) * 512) + speed = speed_to_pwm(speed) constant = WHEEL_DIAMETER / (2 * 4) distance_per_wheel = math.sqrt(1 / 2 * math.pow(distance, 2)) / constant / 4 steps_per_wheel = int(distance_per_wheel / (2 * math.pi) * STEPS_PER_ROTATION) * 2 @@ -133,7 +139,7 @@ OMNIDRIVEDIAGONALTRDISTANCE: if distance < 0: speed = -speed distance = abs(distance) - speed = int((speed / 100) * 512) + speed = speed_to_pwm(speed) constant = WHEEL_DIAMETER / (2 * 4) distance_per_wheel = math.sqrt(1 / 2 * math.pow(distance, 2)) / constant / 4 steps_per_wheel = int(distance_per_wheel / (2 * math.pi) * STEPS_PER_ROTATION) * 2 @@ -154,7 +160,7 @@ OMNIDRIVETURNDEGREES: if degrees < 0: speed = -speed degrees = abs(degrees) - speed = int((speed / 100) * 512) + speed = speed_to_pwm(speed) rotations = (WHEEL_DIAMETER * math.pi * degrees) / (360 * TRACK_WIDTH) steps_per_wheel = int(rotations * STEPS_PER_ROTATION) @@ -178,7 +184,7 @@ DIFFDRIVETURNDEGREES: if degrees < 0: speed = -speed degrees = abs(degrees) - speed = int((speed / 100) * 512) + speed = speed_to_pwm(speed) arc_length = math.radians(degrees) * (TRACK_WIDTH / 2) rotations = arc_length / (WHEEL_DIAMETER * math.pi) steps_per_wheel = int(rotations * STEPS_PER_ROTATION)