Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Handy Board
Handy Board
com / grillo
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.
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
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.
flash
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
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 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.
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.
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
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 .
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
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".