6.c. Ejemplo de Scripts
Parpadeo de LED
El siguiente script provoca que el LED rojo de Maestro parpadee cada segundo:
# Parpadeo del LED rojo cada segundo.
begin
led_on
100 delay
led_off
900 delay
repeat
Es buena idea repasar el script antes de seguir. En particular, preste atención a cómo el comando
"100" pone el número 100 en la pila y el comando DELAY consume ese número. En el lenguaje de
scripts de Maestro, los argumentos siempre tienen colocarse en la pila antes que los comandos que
los utilizan, por lo que parece que vaya al revés de otros lenguajes. También nos indica que puedes
organizar el código de maneras diferentes. Por ejemplo, este programa es equivalente a la anterior:
# Blinks the red LED once per second.
begin
900 100
led_on delay
led_off delay
repeat
Los números se meten en la pila al principio del bucle, cuando se consumen más tarde. Presta
atención en el orden empleado aqui: el 900 entra en la pila primero y se usa el último.
Una simple secuencia de servo
El siguiente script muestra como direccionar el servo 0 a cinco posiciones diferentes en un bucle.
# Mover servo 0 a cinco posiciones diferentes, en el bucle.
begin
4000 0 servo # ajusta servo 0 a 1.00 ms
500 delay
5000 0 servo # ajusta a 1.25 ms
500 delay
6000 0 servo # ajusta a 1.50 ms
500 delay
7000 0 servo # ajmusta a 1.75 ms
500 delay
8000 0 servo # ajusta a 2.00 ms
500 delay
repeat
El modo serie no debe estar configurado para detectar la velocidad de transmisión en esta secuencia
de comandos. En ese modo Maestro no permite ninguna de las salidas de los servos hasta que el
byte de inicio ha sido recibido.
Tenga en cuenta que la posición de los servos se especifica en unidades de 0,25 us, por lo que un
valor de 4000 corresponde a 1 ms. Los comentarios son esenciales para programas complicados. Es
importante tener en cuenta los comandos DELAY, sin los cuales, el script no espera a entre todos
los comandos ejecutándose el bucle cientos de veces por segundo.
Comprender la secuencia
El programa anterior tiene 58 bytes de espacio de programa: 11 bytes para cada posición del servo y
3 para el bucle. A este ritmo, podríamos almacenar hasta 92 posiciones en la memoria de 1024
bytes de Micro Maestro, o 744 posiciones la memoria de 8192 bytes de los Mini-Maestros.
Para obtener el máximo rendimiento de la memoria que es limitada, hay una gran variedad de
formas de comprimir el programa. Lo más importante es hacer uso de subrutinas. Por ejemplo, ya
que se repiten las instrucciones de "0 servo 500 delay" en varias ocasiones, podemos pasar a una
subrutina para ahorrar espacio. Al mismo tiempo, esto simplifica el código y hace que sea más fácil
hacer las futuras modificaciones, como cambiar la velocidad de la secuencia completa.
# Move servo 0 to five different positions, in a loop.
begin
4000
frame
30