Está en la página 1de 14

handyboard.

com / grillo

Handy Cricket Referencia de programacin

Visin de conjunto
El Handy Cricket se programa en un lenguaje llamado "Logo Cricket", que es una versin simplificada del lenguaje Logo potente y fcil de aprender. Logo Cricket tiene las siguientes caractersticas:

procedimiento de definicin de entradas y valores de retorno; variables globales e insumos locales procedimiento; estructuras de control como si , repito , y lazo ; un nmero de 16 bits del sistema (suma, resta, multiplicacin, divisin, resta, comparacin, las operaciones bit a bit, funcin aleatoria); motor y primitivas del sensor; funciones de tiempo y funciones de juegos de tono; Registro de datos y primitivas de reproduccin; comunicaciones primitivas.

Cricket Logo Screen

La pantalla de Cricket Logo se muestra arriba. El rea de texto en la parte inferior izquierda es el "Centro de Mando". Las declaraciones escritas en esta ventana son inmediatamente transmitidas al Cricket y luego ejecutados. En la imagen de la pantalla, el primitivo pitido se muestra. Este comando hace que el Cricket para que emita un pitido corto. El rea de texto de la derecha es para los programas, y se etiqueta "Programas de Cricket Logo." En el logo de Cricket, los procedimientos individuales se definen utilizando para y final de sintaxis. En la pantalla de ejemplo anterior, el procedimiento de demostracin enciende el motor A durante dos segundos, pitidos, y despus se invierte la direccin del motor (para la siguiente vez que se enciende). El rea de texto de una lnea en la parte superior izquierda de la ventana es el "Run This" de lnea. Cuando los programas se descargan, cualquier declaracin escrito en esta rea se llevar a cabo cuando el Cricket Run / Stop se presiona el botn.Normalmente se pondra el nombre del procedimiento que desea ejecutar aqu. Para descargar los programas, haga clic en el botn "Descargar". Esto provoca que todos los procedimientos escritos en el rea de los procedimientos que se descargan en el Cricket. A continuacin, ejecute el programa presionando el botn Run / Stop en el Cricket. En este ejemplo, la demostracinprocedimiento a continuacin se ejecuta. Despus de la descarga, tambin puede ejecutar un programa escribiendo su nombre en el Centro de Comando. Pulse la tecla de retorno y el grillo se ejecutar el cdigo en esa lnea.

Motores
El Grillo tiene dos motores, que se denominan "A" y "B" Un LED bicolor indica el estado de cada motor. rdenes motoras se utilizan seleccionando en primer lugar el motor (con a, b, o ab ) y luego dicindole qu hacer (por ejemplo,en , de , er , etc.)
una, b,

Selecciona el motor A para ser controlado. Selecciona el motor B para ser controlado ab, Selecciona ambos motores a controlar. en Enciende los motores seleccionados. de Enciende los motores seleccionados. enciendepor duracin Enciende los motores seleccionados por un perodo de tiempo, donde la duracin se da en dcimas de segundos. Por ejemplo, encender por 10 Enciende los motores seleccionados en un segundo. haciaaca Establece que los motores seleccionados para ir a la

haciaalla

rd

fijapoder nivel

"haciaaca" direccin, que se define como la forma en que hace que el indicador LED de color verde. haciaaca es la direccin por defecto del motor cuando el grillo se enciende por primera vez. Establece que los motores seleccionados para ir a la "haciaalla" direccin, que se define como la forma en que hace que el indicador LED de color rojo. Invierte el sentido de los motores seleccionados. Cualquiera que sea la forma en que se va, se va a ir por el camino opuesto. Establece el motor seleccionado (s) Nivel de potencia. La entrada est en el rango de 0 (marcha libre sin energa) a 8 (potencia mxima). Las salidas del motor Cricket comienzan en el nivel de potencia 4.

Tiempo y sonido
Las primitivas de sincronizacin y el sonido son tiles para hacer que el Cricket para hacer algo por un perodo de tiempo.

Sincronizacin
Con la espera primitivo, se puede hacer que el grillo "no hacer nada", causando con ello una cierta cantidad de tiempo para pasar.Mientras que el Cricket est al ralent en esta forma, los motores se pueden dejar en, por lo que, por ejemplo:
ab, en espera de 20

a su vez, en los motores de dos segundos. Esto es equivalente a:


ab, enciendepor 20

Tambin hay un contador de tiempo de funcionamiento libre, lo que mantiene la nocin del tiempo transcurrido, aun cuando el grillo est haciendo otras cosas. Dos primitivas estn disponibles para usar el temporizador: resett , que restablece el contador a cero, yel temporizador , que indica el valor actual del temporizador. La siguiente tabla resume la espera , el temporizador y resett primitivos.
esperar duracin

temporizador

Las demoras para una duracin de tiempo, donde la duracin se da en dcimas de segundo.Por ejemplo, esperar 10 introduce un retardo de un segundo. Informes valor de free-running cronmetro de tiempo transcurrido. Las unidades de tiempo son reportados en milisegundos. As que si temporizador = 1000 , que indican 1 segundo de tiempo transcurrido. Por favor, tenga en cuenta: el temporizador slo se actualiza cada 4 milisegundos, por lo que si lo estuviera viendo continuamente, veras que cuente 0, 4, 8, 12, ... etc Tambin tenga en cuenta: el valor mximo

resett

que el cronmetro alcance es 32768. Despus de que se recicla a 0. Pone a cero el contador de tiempo transcurrido a cero.

Sonar
El Cricket tiene un zumbador piezo incorporado que puede ser utilizado para reproducir tonos simples. Hay dos primitivas para la toma de sonido: un pitido , lo que genera un pitido corto de longitud fija y tono y nota , que tiene duracin y entradas de tono:
bip tenga en cuenta la duracin pitch

Reproduce un pitido corto. Reproduce una nota de un tono especificado y duracin. Valores crecientes de la brea crear tonos ms bajos (el valor de tono se utiliza como un contador de retardo para generar cada medio de onda cuadrada del tono). La duracin se especifica un valor en dcimas de segundo de unidades. La correspondencia entre los nmeros que se utilizan para definir el tono y las notas musicales en la octava entre medio c y c alta se muestra en la tabla siguiente.

paso 119 110 110 105 100 100 94 89 84 84 79 74 74 70 66 66 62 59 nmero notacin c musical c # db d d # eb e F f g un gb g ab un bb b c2 # # #

Por ejemplo, la nota 119 5 c jugar un medio por medio segundo. Tenga en cuenta que hay dos valores de referencia diferentes para la sincronizacin: 0,1 unidades de segundo, que se utiliza enespera , enciendepor y notas , y 0,004 unidades de segundo, que se utiliza en el temporizador . El pitido comando es equivalente a observar 63 1 .

Sensores
El Grillo tiene dos puertos de sensores, denominados "A" y "B" Diversos dispositivos pueden ser conectados a estos puertos de sensores, incluyendo:

activacin / desactivacin de dispositivos como pulsadores o interruptores de palanca; resistencia variable dispositivos tales como fotoclulas sensibles a la luz y termistores sensibles a la temperatura; cualquier otro circuito electrnico que genera una tensin entre 0 y 5 voltios.

Hay dos tipos de primitivas para reportar el valor de un sensor conectado a un puerto de sensor: interruptor , que informa de una lectura de verdadero o falso (suponiendo un sensor de tipo interruptor), y sensor , que informa de una lectura numrica (de 0 a 255) en funcin del valor del sensor:
switcha switchb sensora sensorb

Informes true si el switch conectado al sensor A est presionado, y false en caso contrario. Informes true si el switch conectado al sensor B es presionado, y false en caso contrario. Reporta el valor de sensor A, como un nmero de 0 a 255 Reporta el valor de sensor B, como un nmero de 0 a 255.

Estructuras de Control
Logo Cricket admite un conjunto pequeo pero til de las formas de control. Estos consisten en estructuras de bucles, condicionales, una forma busywait, y primitivas para la interrupcin temprana de la ejecucin del procedimiento.

Visin de conjunto
La siguiente tabla resume las estructuras Logo de Cricket de control:
repetir veces [ cuerpo]

Ejecuta cuerpo para tiempos de repeticiones. veces puede ser un valor constante o calculado. lazo [ cuerpo ] Repite la instruccin cuerpo por tiempo indefinido. si condicin [ cuerpo] Si condicin es verdadera, se ejecuta el cuerpo . Una expresin condicional que evala a cero se considera falso, que no son cero expresiones son verdaderas. ifelse condicin Si condicin es verdadera, se ejecuta el cuerpo-1 , [ cuerpo-1 ] [ cuerpo- de lo contrario, se ejecuta el cuerpo-2 .
2 ] esperahasta [condicin ]

detener parar!

Prueba repetidamente la condicin , continuando la ejecucin del programa subsiguiente despus de que se hace realidad. Tenga en cuenta que el estado debe estar contenido entre corchetes, esto es a diferencia de las condiciones para si y ifelse , que no utilizan parntesis. Finaliza la ejecucin del procedimiento, devolver el control a llamar a procedimiento. Totalmente termina la ejecucin, procedimiento tiene no regresar a su invocador. Nota: si hay una tarea en segundo plano en ejecucin (ver cuando ), ser no ser detenido por la parada! comandos (use whenoff para terminar la tarea en segundo

salida de valor

plano). Finaliza la ejecucin del procedimiento, reportando valor como resultado de llamar a procedimiento.

Ejemplos
El siguiente procedimiento hace que el motor de una salida voltear hacia atrs y hacia adelante diez veces:
a Flippy repetir 10 [a, enciendepor 10 rd] final

Aqu hay dos maneras de hacer que el motor de una voltereta hacia atrs y adelante continuamente:
a flippy-para siempre-1 bucle [a, enciendepor 10 rd] final a flippy-para siempre-2 a, encender por 10 flippy-para siempre-2 final

El segundo mtodo, que evite el uso de la bucle forma, es ms eficiente, porque el compilador reconoce como la recursin de cola y lo optimiza como un goto. El siguiente procedimiento se enciende el motor A, B espera a que se presione el interruptor, y luego se apaga el motor:
a en-espera-off a, en esperahasta [switchb] de final

El siguiente procedimiento repetidamente comprueba el estado del interruptor B. Si se pulsa, el motor est hecho para seguir en el "haciaaca" direccin. Si el interruptor no est pulsado, el motor va en la direccin opuesta:
para cambiar de direccin-controlsa, en lazo [ ifelse switchb [haciaaca] [haciaalla] ] final

Nmeros
El Cricket tiene un sistema de nmero de 16-bit. Los nmeros pueden variar desde -32768 a +32767. Todos los operadores aritmticos deben estar separados por un espacio en cada

lado. Por lo tanto la expresin 3 +4 es no vlido.Utilice 3 + 4 . Normales de expresin de las reglas de prioridad son no utilizado por el compilador. En cambio, los operadores se evalan en el orden en que van apareciendo de izquierda a derecha. Por lo tanto:
3 + 4 * 5

evala a 35, ya que el compilador primero acta sobre la 3 + 4 y luego multiplica el resultado por 5. Los parntesis pueden ser libremente aplicados para obtener expresiones para evaluar la forma en que ellos proponen. Por ejemplo:
(3 + (4 * 5))

rendimiento 23. En la siguiente tabla se muestran los operadores previstas en Cricket Logo: + Infix suma. Infix resta. * Infix multiplicacin / Infix divisin. % Infix mdulo (resto de la divisin entera). < Infix menos-que prueba. Resultados en 1 si el valor de la izquierda es menor que el valor de la derecha, 0 en caso contrario. > Infijo mayor que prueba. Resultados en 1 si el valor de la izquierda es mayor de lo que la derecha valor, 0 en caso contrario. = Infix test de igualdad. Resultados en 1 si el valor de la izquierda es igual al valor de la derecha, 0 en caso contrario. y Infijo operacin AND (bit a bit). o Infijo operacin OR (bit a bit). xor Infijo operacin OR exclusivo (bit a bit). no prefijo no operacin (inversin lgica, no a nivel de bits). azar Informes pseudo-aleatorio nmero entre 0 y 32767. Utilice el operador de mdulo para reducir el rango; por ejemplo, (% aleatorio 100) se obtiene un nmero de 0 a 99.

Los procedimientos, entradas y salidas


Definicin
Un procedimiento se define mediante la a palabra clave, seguido por el nombre del procedimiento, seguido por el cuerpo del procedimiento, seguido por el extremo palabra clave. Por ejemplo, el siguiente define el procedimiento de

flash

, que se pone el motor A y desactive la salida 10 veces:

a parpadear repetir 10 [a, encender por 5 wait 5] final

Entradas
Los procedimientos pueden ser definidos para aceptar entradas, que luego se convierten en variables locales dentro del procedimiento. Esto se hace usando el carcter de dos puntos " : "como se muestra a continuacin. En este ejemplo, el flash deprocedimiento, se administra una entrada, que se utiliza entonces como el contador en la repeticin de bucle:
a parpadear: n Repito: n [a, encender por 5 wait 5] final

A continuacin, se puede utilizar este procedimiento con (por ejemplo) flash 5 , flash 10 , flash 20 , etc Aqu un ejemplo de un procedimiento con dos entradas:
a parpadear: tiempos de retardo: Repito: los tiempos [a, enciendepor: espera retardo: retraso] final

No hay lmite incorporado a Cuntas entradas de un procedimiento nico puede tener.

Salidas
Los procedimientos pueden devolver valores con la salida primitivo. En el siguiente ejemplo, la deteccin de procedimiento devuelve un valor de 0, 1, o 2, dependiendo del valor de sensor A:
global [temp] para detectar settemp sensora si temp <30 [salida 1] si temp <50 [salida 2] salida 3 final

La variable global temporal est definido. En la deteccin , la lectura del sensor A se carga en temp . Si la lectura es menor que 30, entonces se devuelve un 1. Si la lectura no menos de 30, entonces la siguiente prueba se ejecuta, y si la lectura es entonces menos de 50, un 2 se devuelve. Si esta prueba falla, entonces se devuelve un 3. Se debe tener cuidado para asegurar que si un procedimiento que a veces produce una salida, que siempre lo hace. En un procedimiento que es capaz de producir una salida, el grillo se bloquear si una ruta de ejecucin que no produce una salida es transitada.

Variables globales
Las variables globales se crean mediante el mundial [ lista de variables ] Directiva al comienzo del buffer procedimientos.Por ejemplo,
mundial [gatos perros]

crea dos variables globales, llamados gatos y perros . Adems, dos mundiales de fijacin de tipos primitivos, setcats ysetdogs , se crea una instancia. Por lo tanto, despus de la directiva global est previsto, se puede decir
setcats 3

para establecer el valor de los gatos a 3, y


setcats gatos + 1

para incrementar el valor de los gatos . Las variables globales se almacenan en la memoria RAM, por lo que su contenido se pierde cuando el Cricket est apagado. Para guardar los datos cuando el Cricket est apagado, utilice el registro de datos y las funciones de reproduccin, o las funciones de matriz global. Ambos almacenan datos en la memoria no voltil del grillo.

Las matrices globales


Arrays globales se crean utilizando la matriz primitiva en el inicio de la ventana de procedimientos. Por ejemplo,
matriz [10 clicks clacks 15]

crea dos matrices, una con nombre clics , que puede almacenar 10 nmeros, y otro denominado clacks , que puede almacenar 15 nmeros. Los elementos de la matriz se accede mediante el aget primitivo y escrito usando el ASET primitivo: Recupera el elemento en la posicin de ndice de la matriz nombre . ASET nombre de ndice de Establece el elemento de la posicin de ndice de valor en la matriz nombre . valor
aget

ndice de nombres

Los ndices de matriz empiezan en 0. As, por ejemplo, clics ASET 0 17 establece el primer elemento de clics para tener un valor de 17, y enviar clics Aget 0 hace que el valor de dicho elemento de clics que se transmite a travs de infrarrojos.

No hay ninguna comprobacin de errores para evitar que las matrices de rebasamiento de sus lmites. Las matrices se almacenan consecutivamente en la memoria como el orden en que se definen, as que (siguiendo con el ejemplo) si se hizo un clic Aset 10 17 que en realidad estara escribiendo un 17 en el primer elemento de clacks (ya que los valores de ndice de clics empezara a contar desde 0 a 9, inclusive). Valores de la matriz se almacenan en la memoria no voltil del grillo, as que su contenido se mantienen incluso cuando el Cricket est apagado.

Los datos de grabacin y reproduccin


Hay una sola matriz global para almacenar datos que posee 2.500 nmeros.
resetdp setdp borrar

posicin num

registro de recordar

valor

Restablece los datos puntero a la posicin inicial. Establece el valor del puntero de datos de posicin . La posicin de inicio es cero. Borra num puntos de datos, a partir del inicio del rea de datos, y luego se reajusta puntero de datos de nuevo al principio. Registros valor en el buffer y avanza el puntero de datos. Reporta el valor del punto de datos actual y avanza el puntero de datos.

Por ejemplo, el procedimiento de tomas de datos se puede utilizar para almacenar los datos registrados por un sensor de una vez por segundo:
para asimilar los datos resetdp repeticin de 2500 [registro sensora esperar 10] final

Para transferir datos al ordenador, utilice el software Cricket Logo estndar. En el "grillo" del men, hay una opcin "Cargar datos". Con ello se abre un cuadro de dilogo que le permite recuperar los datos desde el Cricket y luego guardarlo en un archivo de texto.Este archivo de texto se puede importar a una hoja de clculo para su anlisis y representacin grfica. Tenga en cuenta que no hay comprobacin de errores para prevenir contra grabar demasiados puntos de datos y con ello invadiendo el buffer de datos. Tenga en cuenta que los valores registrados se almacenan como valores de 8-bits (0 a 255), y si se intenta grabar un nmero superior a 255, slo el byte inferior (el resto al dividir por 256) se grabar.

Recursin
El Cricket soporta recursin, es decir, los procedimientos que se definen en

trminos de s mismos. Por ejemplo, la definicin matemtica de la funcin factorial es que el factorial de n es igual a n veces el factorial de (n - 1) , con el factorial de 1 es 1. Esta idea se puede expresar en Cricket Logo como:
a los hechos: n si: n = 1 [salida 1] salida n hecho *: n - 1 final

Para probar esto, descargue el procedimiento y escriba en el centro de mando de Cricket:


repetir hecho 3 [beep esperar 1]

Usted debe escuchar seis tonos, desde el factorial de 3 es 6. Tenga en cuenta que la memoria para mantener un registro de las llamadas recursivas durante la ejecucin es bastante pequeo, y se limita a unos seis llamadas profundas. Si los desbordamientos de pila, los detiene y emite pitidos Cricket cinco veces. "Recursin de cola" es un caso especial de la recursin cuando la instruccin muy ltimo al final de un procedimiento es la llamada recursiva. El Grillo soporta recursin de cola, la conversin de la llamada recursiva en una instruccin goto, y evitar el problema de profundidad de la pila se acaba de mencionar. El procedimiento siguiente ilustra el uso correcto de la recursin de cola, creando un bucle infinito:
a pitar para siempre bip espere 1 beep-siempre final

Multitareas
El grillo es compatible con una forma limitada de mltiples tareas. Adems de la rosca convencional de ejecucin, el Cricket puede tener una "tarea de fondo." Esta tarea comprueba repetidamente una condicin. Cuando esta condicin se convierte en realidad, la actividad de tarea interrumpe primer plano y procesa su accin especial. Cuando finaliza la tarea en segundo plano de accin, la ejecucin contina donde lo dej en la actividad de primer plano. La tarea de fondo se pone en marcha mediante el cuando primitivo. Por ejemplo, considere la siguiente lnea de cdigo:
cuando [switcha] [pitido] loop [a, encender por 5 ]

(Esta lnea puede ser escrito en el centro de mando de Cricket para probarlo).

En este ejemplo, la tarea de fondo se busca la condicin switcha . Cuando esto se hace realidad (por ejemplo, un switch conectado al puerto del sensor A est presionado), entonces se ejecuta la accin, y los pitidos de Cricket. Al mismo tiempo, el cricket ejecuta un bucle infinito, convirtiendo en un motor para el de 1/2 segundo y luego invertir la direccin. Por favor, tenga en cuenta algunos detalles sobre cmo ocurre esto:

El que debe preceder a la declaracin de bucle infinito si se sigui el bucle, la ejecucin nunca llegara a la que declaracin! El cuando declaracin en s slo inicia la actividad de fondo, y luego el flujo de ejecucin pasa a travs de la instruccin (en el ejemplo, que luego contina en el bucle de instruccin). Como tal, el cuando declaracin no debera ser colocado en un bucle que slo necesita ser ejecutado una vez para empezar. La accin asociada con el cuando se ejecuta slo una vez por cada vez que la condicin se convierte en realidad. As, en el ejemplo, si el interruptor se mantiene presionado, el Cricket no bip continuamente. La accin se ejecuta exactamente una vez cada vez que la condicin va de falso a verdadero. As, el interruptor debe ser puesto en libertad y volver a presionar para obtener el Cricket para que suene otra vez. Por favor, tenga en cuenta que el tanto de la condicin y la accin para la que cada declaracin debe ir entre corchetes. No puede haber slo una tarea en segundo plano operativo en cualquier momento dado. Si cuando se ejecuta la instruccin despus de la tarea en segundo plano ya se ha iniciado, el posterior cuando la tarea tiene prioridad sobre el anterior. Para detener la tarea en segundo plano desde operativo, utilice el primitivo whenoff .

Comunicacin por infrarrojos


Visin de conjunto
Los grillos pueden enviar seales de infrarrojos a la otra usando el enviar y recibir primitiva usando el IR primitivo. Losinfrarrojos informes primitivas el ltimo valor recibido. Una tercera primitiva, newir? , informes verdaderos cuando un byte IR se ha recibido pero no se recupera an. Como ejemplo, consideremos el siguiente par de procedimientos. El primer procedimiento, llamado emisor , se ejecutar en un grillo, y generar nmeros que se envan a un segundo Cricket. Aqu, el remitente enva un procedimiento aleatoriamente 0, 1, o 2:
al remitente enviar aleatorios% 3 bip espere 30 remitente final

La expresin 3% aleatorio produce un 0, 1, o 2, usando el operador de resto-

despus de la divisin. Este valor se enva utilizando el enviar primitivo. Entonces los pitidos procedimiento y espera 3 segundos antes de enviar un nuevo nmero. En un segundo Cricket, un procedimiento de receptor, doit , recibir estos nmeros y, o bien activar el motor A, B del motor, o de ambos motores en funcin del valor se pone:
a doit esperahasta [newir?] si ir = 0 [a, enciendepor 10] si ir = 1 [b, enciendepor 10] si ir = 2 [ab, enciendepor 10] menudencia final

Advertencias
Tenga en cuenta que el sistema de Cricket utiliza valores de 128 a 134 para operaciones de bajo nivel entre los grillos. As que lo mejor es no enviar deliberadamente esos valores alrededor, porque grillos que estn sentados sin hacer nada (encendido, pero no se est ejecutando un programa) interpretar los cdigos y posiblemente sobrescribir la memoria.

El Botn
Cuando el grillo est en reposo, pulsando su botn hace que se empiece a ejecutar remotamente inicio de la lnea 1 en la pantalla Cricket Logo. Cuando el grillo se est ejecutando un programa, al pulsar el botn hace que se detenga. Volver a la portada de Cricket

Comandos del sistema


bajo-byte alto-byte

val val

Reporta el byte bajo del argumento, lo que equivale a 256% val pero ms rpido de manera significativa. Reporta el byte alto del argumento, lo que equivale a val / 256, pero ms rpido de manera significativa. Examine Byte - informa el valor que se encuentra en la ubicacin de memoria addr . En el Handy Cricket v1.5, la memoria comienza en 0 y termina en la direccin direccin 4095 (decimal). Byte fuerte - informa el byte val en la memoria del grillo en la posicin addr . Advertencia: es fcil a la sobreescritura de la memoria de programa Cricket utilizando este comando, causando accidentes de software.

eb

addr

db

addr val

BSEND

val

bsr

val

Bus Enviar - enva el byte bajo de val por el bus perifrico Cricket. Si el bit 8 se pone, marca la comunicacin como un "byte de comando." Bus Enviar Recibir - enva el byte bajo de val por el bus perifrico Cricket y espera hasta 1/4 segundos para la respuesta. Informes respuesta o valor -1 si el tiempo de espera. Si el bit 8 del val se establece, marca la comunicacin saliente como un "byte de comando".

También podría gustarte