domingo, 28 de septiembre de 2014

programación para super cricket

handyboard.com / grillo
casa
acerca
documentación
programa
bus
Preguntas más frecuentes
descarga
conseguir uno
construir
tecnología
enlaces
discutir
Para dar formato para la impresión, haga clic aquí .

Práctico Cricket programación de referencia


Información general

El Cricket práctico está programado en un lenguaje llamado "Logo Cricket", que es una versión simplificada de la potente y fácil de aprender el lenguaje Logo.
Cricket Logo tiene las siguientes características:
  • definición de procedimiento con entradas y valores de retorno;
  • las variables globales y las entradas a procedimiento local;
  • estructuras de control, como si , repetir , y de lazo ;
  • un sistema de número de 16 bits (suma, resta, multiplicación, división, resta, comparación, operaciones bit a bit, función aleatoria);
  • primitivas de motor y el sensor;
  • funciones y funciones de tono de papeles de temporización;
  • grabación y reproducción de datos primitivos;
  • primitivas de comunicaciones.

Cricket Logo Screen

La pantalla Logo Cricket se muestra arriba.
El área de texto en la parte inferior izquierda es el "Centro de Comando". Declaraciones escritas en esta ventana se transmiten inmediatamente al Cricket y luego ejecutados. En la imagen de la pantalla, la primitiva pitido se muestra. Este comando hace que el Cricket para que emita un pitido corto.

El área de texto a la derecha es para los programas, y la etiqueta es "Logo Programas de Cricket." En Cricket Logo, procedimientos individuales se definen utilizando para y final de sintaxis. En la pantalla de ejemplo anterior, el procedimiento de demostración se enciende el motor A durante dos segundos, emite un pitido, y luego invierte la dirección del motor (para la próxima vez que esté encendida).
El área de texto de una línea en la parte superior izquierda de la ventana es el "Run This" de línea. Cuando se descargan programas, cualquier declaración escrito en esta área se llevará a cabo cuando se pulsa el botón de la Cricket Run / Stop. Que normalmente poner el nombre del procedimiento que desea ejecutar aquí.
Para descargar los programas, haga clic en el botón "Descargar". Esto hace que todos los procedimientos escritos en el área de procedimientos que se descargan en el Cricket.
A continuación, ejecute el programa presionando el botón Run / Stop en el Cricket. En este ejemplo, la demostración a continuación, se ejecuta el procedimiento.
Después de la descarga, también puede ejecutar un programa escribiendo su nombre en el Centro de Mando. Pulsa la tecla de retorno y el Cricket se ejecutará el código en esa línea.

Motors

El Cricket tiene dos motores, que se denominan "A" y "B" Un LED bicolor indica el estado de cada motor.
Comandos de motor se utilizan seleccionando en primer lugar el motor (usando una, b, o ab, ) y luego diciéndole qué hacer (por ejemplo, en , fuera , rd , etc).
a,
Selecciona motor A para ser controlado.
b,
Selecciona el motor B para ser controlado
ab,
Selecciona ambos motores a controlar.
en
Enciende los motores seleccionados.
off
Enciende los motores seleccionados.
enciendepor duración
Activa los motores seleccionados durante un duración de tiempo, donde la duración se da en décimas de segundo. Por ejemplo, encender por 10 convierte los motores seleccionados durante un segundo.
thisway
Hace que los motores seleccionados vayan en la "thisway" dirección, que se define como la forma en que hace que los indicadores LED se iluminan en verde. thisway es la dirección del motor por defecto cuando el grillo se enciende por primera vez.
thatway
Establece que los motores seleccionados vayan en la dirección "thatway", que se define como la forma en que hace que los indicadores LED se iluminan en rojo.
rd
Invierte la dirección de los motores seleccionados. Cualquiera que sea la forma en que se van, van a ir por el camino opuesto.
fijapoder nivel
Establece el nivel de potencia del motor seleccionada (s). La entrada está en el rango de 0 (por inercia sin poder) a 8 (plena potencia). Las salidas de motor Cricket comienzan en nivel de potencia 4.

Tiempo y sonido

El momento y el sonido primitivas son útiles para hacer que el Cricket para hacer algo por un período de tiempo.

Timing

Con la espera primitiva, se puede hacer que el Cricket para "no hacer nada", provocando de este modo por una cierta cantidad de tiempo para pasar. Mientras que el grillo al ralentí de esta manera, los motores se pueden dejar, así que, por ejemplo:
ab, en espera de 20 off
a su vez, los motores durante dos segundos. Esto es equivalente a:
ab, enciendepor 20
También hay un contador de tiempo de funcionamiento libre, que realiza un seguimiento del tiempo transcurrido, incluso cuando el grillo está haciendo otras cosas. Dos primitivas están disponibles para el uso del temporizador: iniciarcron , que restablece el contador a cero, y el contador de tiempo , que depende del valor actual del temporizador.
La siguiente tabla resume los espera , temporizador , y Re-inicializa primitivas.
espere duraciónLas demoras para una duración de tiempo, donde la duración se da en décimas de segundo.Por ejemplo, esperar 10 incorpora un retardo de un segundo.
temporizadorValor Informes de free-running transcurrido temporizador. Las unidades de tiempo son reportados en milisegundos. Así que si temporizador = 1,000 , que indicaría 1 segundo de tiempo transcurrido. Tenga en cuenta: el temporizador sólo se actualiza cada 4 milisegundos, así que si estabas viendo continuamente, verías que valga 0, 4, 8, 12, ... etc También tenga en cuenta: el valor máximo que el cronómetro alcance es 32768 . Después de que se recicla a 0.
iniciarcronRestablece el contador del tiempo transcurrido a cero.

Sonido

El Cricket tiene un zumbador piezo incorporado que puede ser utilizado para reproducir tonos simples. Hay dos primitivas para hacer sonido: pitido , lo que genera un pitido corto de longitud y de paso fijo, y nota , que tiene duración y tono entradas:
beepReproduce un pitido corto.
nota duración de tonoReproduce una nota de un tono y la duración especificada. El aumento de los valores del terreno de juego crear tonos más bajos (el valor del tono se utiliza como un contador de retardo para generar cada medio de onda cuadrada del tono). La duración del valor se especifica en décimas de segundo unidades. La correspondencia entre los números que se utilizan para definir el terreno de juego y las notas musicales en la octava entre c media y alta c se muestra en la siguiente tabla.
número de parcela
119

110

110

105

100

100

94

89

84

84

79

74

74

70

66

66

62

59
notación musical
c

c #

db

d

d #

eb

e

f

f #

gb

g

g #

ab

un

un #

bb

b

c2
Por ejemplo, la nota 119 5 jugarán un c media durante medio segundo.
Por favor, tenga en cuenta que hay dos valores diferentes de referencia para temporización: 0,1 unidades de segunda, que se utilizan en espera , encender por , y nota , y 0.004 unidades de segunda, que se utilizan en el temporizador .
El pitido comando es equivalente a nota 63 1 .

Sensores

El Cricket tiene dos puertos de sensor, llamado "A" y "B" Varios dispositivos puede ser conectado a estos puertos de sensores, incluyendo:
  • activación / desactivación de dispositivos como pulsadores o interruptores de palanca;
  • dispositivos de resistencia variable como fotocélulas sensibles a la luz y termistores sensibles a la temperatura;
  • cualquier otro circuito electrónico que genera una tensión entre 0 y 5 voltios.
Hay dos tipos de primitiva para informar el valor de un sensor conectado a un puerto de sensor: interruptor , que reporta una lectura de verdadero o falso (suponiendo un sensor de tipo interruptor), y sensor , que reporta una lectura numérica (de 0 a 255) en función del valor del sensor:
switchaInformes true si se pulsa el interruptor conectado al sensor A, y falso en caso contrario.
switchbInformes true si se pulsa el interruptor conectado al sensor B, y falso en caso contrario.
sensoraReporta el valor de sensor A, como un número de 0 a 255
sensorbReporta el valor de sensor B, como un número de 0 a 255.


Estructuras de Control

Cricket Logo compatible con una pequeña pero útil conjunto de formas de control. Estos consisten en estructuras de bucle, condicionales, una forma ocupado: espere y primitivas para la terminación temprana de la ejecución del procedimiento.

Información general

La siguiente tabla resume las estructuras de control de Cricket Logo:
repetidas veces [cuerpo ]Ejecuta cuerpo de veces repeticiones. veces pueden ser un valor constante o calculado.
lazo [ cuerpo ]Repetitivamente ejecuta cuerpo indefinidamente.
si condición [ cuerpo]Si la condición es verdadera, ejecuta cuerpo . Una expresión condicional que evalúa a cero se considera falsa; expresiones que no son cero son verdaderas.
ifelse condicióncuerpo-1 ] [ body-2]Si la condición es verdadera, ejecuta cuerpo-1 ; de lo contrario, se ejecuta el cuerpo-2 .
esperahasta [condición ]Prueba repetidamente la condición , continuando la ejecución del programa subsiguiente después de que se convierte en realidad. Tenga en cuenta que la condición debe estar contenida entre corchetes; esto es a diferencia de las condiciones para si y ifelse , que no utilizan paréntesis.
DeténgaseFinaliza la ejecución del procedimiento, devolver el control al procedimiento de llamada.
Deténgase!Termina completamente ejecución; procedimiento no no regresar a su llamador. Nota: si hay una tarea en segundo plano en ejecución (ver cuando ), será no ser detenido por la parada! comandos (uso whenoff para terminar la tarea en segundo plano).
Salida de valorFinaliza la ejecución del procedimiento, la presentación de informes de valor como consecuencia de procedimiento de llamada.

Ejemplos

El siguiente procedimiento hace que el motor de una salida de voltear hacia atrás y adelante diez veces:
a flippy
  repetir 10 [a, encender por 10 rd]
fin
Aquí hay dos maneras de hacer la tapa del motor A un lado a otro de forma continua:
a Flippy-forever-1
  bucle [a, enciendepor 10 rd]
fin

a Flippy-forever-2 
  una, enciendepor 10 rd
  flippy-forever-2
fin
El segundo método, que evita el uso de la bucle de la forma, es más eficiente, porque el compilador reconoce como la recursión de cola y optimiza como un GOTO.
El siguiente procedimiento se enciende el motor A, espera a que el interruptor B para ser presionado, y luego se apaga el motor:
a en-espera-off
  una, en
  esperahasta [switchb]
  off
fin
El siguiente procedimiento a prueba en varias ocasiones el estado de conmutador B. Si se pulsa, el motor se hace para seguir en la dirección "thisway". Si no se pulsa el interruptor, el motor va en la dirección opuesta:
para cambiar-controles-dirección
  una, en
  lazo [
    ifelse switchb [thisway] [thatway]
  ]
fin

Números

El Cricket tiene un sistema de números de 16 bits. Las cifras pueden variar -32,768-32.767.
Todos los operadores aritméticos deben estar separados por un espacio en cada lado. Por lo tanto la expresión 3 + 4 es no válido.Utilice 3 + 4 .
Las reglas normales de precedencia expresión se no utilizados por el compilador. En cambio, los operadores se evalúan en el orden en que van apareciendo de izquierda a derecha. Por lo tanto:
3 + 4 * 5
evalúa a 35, ya que el compilador actúa por primera vez en la 3 + 4 y luego multiplica el resultado por 5.
Los paréntesis se pueden aplicar liberalmente para obtener expresiones para evaluar cómo los piensa. Por ejemplo:
(3 + (4 * 5))
produce 23.
En la siguiente tabla se muestran los operadores establecidos en Cricket Logo:
+Además Infijo.
-
Sustracción Infijo.
*Infijo multiplicación
/División Infijo.
%
Módulo Infijo (resto después de la división entera).
<
Prueba Infijo menos-que. Resultados en 1 si el valor de la izquierda es menor que el valor de la derecha; 0 en caso contrario.
>
Prueba Infijo mayor-que. Resultados en 1 si el valor de la izquierda es mayor que el valor de la mano derecha; 0 en caso contrario.
=
Prueba de igualdad Infijo. Resultados en 1 si el valor de la izquierda es igual al valor de la derecha; 0 en caso contrario.
y
Infijo operación AND (bit a bit).
o
Infijo operación O (bit a bit).
xor
Infijo OR exclusiva operación (bit a bit).
no
NO operación prefijo (inversión lógica, no bit a bit).
al azar
Informes de números pseudo-aleatorios de 0 a 32767 Utilice el operador de módulo para reducir el rango;por ejemplo, (% aleatoria 100) se obtiene un número de 0 a 99.

Los procedimientos, entradas y salidas

Definición

Un procedimiento se define mediante el que la palabra clave, seguido por el nombre del procedimiento, seguido por el cuerpo del procedimiento, seguido por el final de palabras clave. Por ejemplo, el siguiente define el procedimiento de flash , lo que convierte el motor de una salida de encendido y apagado 10 veces:
a parpadear
  repetir 10 [a, enciendepor 5 esperar 5]
fin

Entradas

Los procedimientos pueden ser definidos para aceptar entradas, que luego se convierten en variables locales dentro del procedimiento. Esto se hace utilizando el carácter de dos puntos " : "como se muestra a continuación. En este ejemplo, el flash de procedimiento se da una entrada, que se utiliza entonces como el contador en la repetición de bucle:
a parpadear: n
  repetir: n [a, enciendepor 5 esperar 5]
fin
Entonces uno puede utilizar este procedimiento con (por ejemplo) de flash 5 , flash de 10 , flash de 20 , etc
Aquí un ejemplo de un procedimiento con dos entradas:
a parpadear: tiempos: retraso
  repetir: veces [a, enciendepor: retardo de espera: demora]
fin
No hay límite incorporada a la cantidad de entradas de un solo procedimiento puede tener.

Salidas

Los procedimientos pueden devolver valores con la salida primitiva. En el siguiente ejemplo, el detectar procedimiento devuelve un valor de 0, 1, o 2 dependiendo del valor de sensor de A:
mundial [temp]

para detectar
  settemp sensora
  si la temperatura <30 1="" 2="" 3="" fin="" la="" pre="" salida="" si="" temperatura="">
La variable global temp se define. En la detectan , una lectura de sensor A se carga en temp . Si la lectura es menor que 30, entonces un 1 se devuelve. Si no la lectura de menos de 30, entonces la próxima prueba ejecuta, y si la lectura es entonces menos de 50, se devuelve un 2. Si esta prueba falla, entonces un 3 se devuelve.
Se debe tener cuidado para asegurar que si un procedimiento a veces produce una salida, que siempre lo hace. En un procedimiento que es capaz de producir una salida, el grillo se estrellará si una ruta de ejecución que no produce una salida se viaja.

Variables globales

Las variables globales se crean utilizando el [global lista de variables ] Directiva al inicio del buffer procedimientos. Por ejemplo,
globales [gatos perros]
crea dos variables globales, llamados gatos y perros . Además, dos de fijación mundiales primitivas, setcats y setdogs , se crean instancias. Por lo tanto, después de que se proporciona la directiva global, se puede decir
setcats 3
para ajustar 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 sus contenidos se pierden cuando el Grillo se apaga. Para guardar los datos cuando el grillo está apagado, por favor, utilice el registro de datos y las funciones de reproducción, o las funciones de matriz global. Ambos almacenan datos en la memoria no volátil del Cricket.

Matrices globales

Arrays globales se crean utilizando el array primitiva al comienzo de la ventana de procedimientos. Por ejemplo,
array [encaje 10 clacks 15]
crea dos arrays, uno con nombre clics , que puede contener 10 números y otro llamado clacks , que puede contener 15 números.
Elementos de la matriz se accede mediante el aget primitivo y escriben utilizando la aset primitiva:
aget índice de nombresRecupera el elemento en la posición de índice de array nombre .
aset valor índice de nombresEstablece el elemento de la posición de índice de valor en la matriz nombre .
Índices de matrices comienzan en 0 Así, por ejemplo, aset clics 0 17 juegos del primer elemento de clicks para tener un valor de 17, y enviar aget clics 0 hace que el valor de ese elemento de clics para ser transmitida a través de infrarrojos.
No hay ninguna comprobación de errores para evitar que las matrices de rebasamiento de sus límites. Las matrices se almacenan de forma consecutiva en la memoria como el orden en que se definen, por lo que (siguiendo con el ejemplo) si hizo un aset clics 10 17 usted desea realmente estar escribiendo un 17 en el primer elemento de clacks (ya que los valores de índice de clics deben correr desde 0 al 9, ambos inclusive).
Los valores del array se almacenan en la memoria no volátil del Cricket, por lo que su contenido se conservan incluso cuando el grillo se apaga.

Registro de datos y Reproducción

Hay una sola matriz global para el almacenamiento de datos que contiene números de 2500.
inicia-adRestablece el puntero de datos a la posición de inicio.
setdp posiciónEstablece el valor del puntero de datos de posición . La posición de inicio es cero.
borrar numBorra num puntos de datos, comenzando desde el principio del área de datos y, a continuación restablece puntero de datos de nuevo al principio.
registro de valorRegistros valor en el buffer de datos y avanza el puntero de datos.
recuerdoReporta el valor del punto de datos actual y avanza el puntero de datos.
Por ejemplo, los procedimientos tomar-datos pueden ser utilizados para almacenar los datos registrados por un sensor de una vez por segundo:
tomar-datos
  inicia-ad
  repeat 2500 [registro sensora esperar 10]
fin
Para transferir datos al ordenador, utilice el software Cricket Logo standard. En el menú "Cricket", hay una opción "Cargar datos." Con ello se abre un cuadro de diálogo 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 cálculo para el análisis y la representación gráfica.
Tenga en cuenta que no hay ninguna comprobación de errores para prevenir contra grabación demasiados puntos de datos y con ello invadiendo el búfer de datos.
Tenga en cuenta que los valores registrados se almacenan como valores de 8 bits (0 a 255); si intenta grabar un número superior a 255, sólo el byte inferior (resto de la división por 256) se registrarán.

La recursividad

El Cricket admite la recursividad, es decir, los procedimientos que se definen en términos de sí mismos.
Por ejemplo, la definición matemática de la función factorial es que el factorial de n es igual a n veces el factorial de (n - 1) , con el factorial de 1 siendo 1. Esta idea se puede expresar en Logo Cricket como:
de hecho: n
  si n = 1 [salida 1]
  salida n * hecho: n - 1
fin
Para probar esto, descargue el procedimiento a continuación, escriba en el centro de mando del Cricket:
repita hecho 3 [BIP esperar 1]
Deberá escuchar seis pitidos, ya que el factorial de 3 es 6.
Tenga en cuenta que la memoria para hacer el seguimiento de las llamadas recursivas durante la ejecución es bastante pequeño, y limitado a unas seis llamadas profundas. Si los desbordamientos de pila, el grillo se detiene y emite cinco veces.
"Recursión de cola" es un caso especial de la recursión cuando la última instrucción en el extremo de un procedimiento es la llamada recursiva. El Cricket soporta recursión de cola, la conversión de la llamada recursiva en una instrucción goto, y evitar el problema de profundidad de la pila se acaba de mencionar.
El procedimiento siguiente ilustra el uso correcto de la recursión de cola, creando un bucle infinito:
a pitar-forever
  beep
  espere 1
  bip-forever
fin

Multi-tarea

El Cricket es compatible con una forma limitada de la multitarea. Además de la rosca convencional de ejecución, el Cricket puede tener una "tarea de fondo." Esta tarea comprueba repetidamente una condición. Cuando esta condición se convierte en verdad, la tarea interrumpe la actividad de primer plano y procesa su acción especial. Cuando la acción de la tarea en segundo plano termina, la ejecución continúa donde lo dejó en la actividad de primer plano.

La tarea de fondo se pone en marcha usando el cuando primitivo. Por ejemplo, considere la siguiente línea de código:
cuando [switcha] [beep] bucle [a, enciendepor 5 ª]
(Esta línea puede ser escrito en el centro de mando del Cricket para probarlo.)
En este ejemplo, la tarea de fondo está buscando la condición switcha . Cuando esto se hace realidad (por ejemplo, se pulsa un interruptor conectado al puerto del sensor A), a continuación, se ejecuta la acción, y los pitidos de Cricket. Al mismo tiempo, el Cricket ejecuta un bucle infinito, el motor que gira A en un segundo medio y luego revertir su dirección.

Tenga en cuenta algunos detalles sobre cómo está sucediendo:

  • El cuando declaración debe preceder al bucle infinito si se siguió el bucle, la ejecución nunca llegaría a la cuandodeclaración!

  • El cuando declaración en sí sólo inicia la actividad de fondo, y luego el flujo de ejecución pasa a través de la declaración (en el ejemplo, entonces se continúa en el bucle de declaración). Como tal, la cuando la declaración no debe ser colocado en sí en un bucle que sólo necesita ser ejecutado una vez para empezar.

  • La acción asociada con el cuando se ejecuta sólo una vez por cada vez que la condición se convierte en verdad. Así, en el ejemplo, si el interruptor se mantiene presionado, el Cricket no sonará continuamente. La acción se ejecuta exactamente una vez cada vez que la condición cambia de falso a verdadero. Así, el interruptor debe ser puesto en libertad y volver a presionar para obtener el Cricket para que suene de nuevo.

  • Tenga en cuenta que el tanto de la condición y la acción para la que cada declaración deben ir entre corchetes.

  • Sólo puede haber una tarea de fondo que opera en un momento dado. Si una cuando se ejecuta la declaración después de que ya se ha iniciado la tarea en segundo plano, la posterior cuando la tarea sustituye a la anterior.

  • Para detener la tarea de fondo de la operación, use el primitivo whenoff .

Comunicación por infrarrojos

Información general

Los grillos pueden enviar señales de infrarrojos entre sí utilizando el enviar primitiva y recibirlos mediante el ir primitivo. Losinfrarrojos informes primitivos el último valor recibido. Una primitiva tercera, nuevoIR? , reporta cierto cuando un byte de IR se ha recibido pero aún no recuperado.
Como ejemplo, considere el siguiente par de procedimientos. El primer procedimiento, llamado emisor , se ejecutará en uno de críquet, y generar números que se envían a un segundo Cricket. Aquí, el remitente procedimiento envía aleatoriamente un 0, 1, o 2:
al remitente
  enviar al azar 3%
  beep
  espere 30
  remitente
fin
La expresión aleatoria 3% produce un 0, 1, o 2, usando el operador de resto-después de la división. Este valor se envía mediante el envío primitiva. Entonces el procedimiento emite un pitido y espera 3 segundos antes de enviar un nuevo número.
En un segundo Cricket, un procedimiento receptor, doit , recibirá estos números y, o bien activar el motor A, B del motor, o ambos motores en función del valor que obtiene:
a doit
  esperahasta [nuevoIR?]
  si IR = 0 [a, enciendepor 10]
  si IR = 1 [b, enciendepor 10]
  si IR = 2 [ab, enciendepor 10]
  doit
fin

Advertencias

Tenga en cuenta que el sistema de Cricket utiliza valores de 128 a 134 para operaciones de bajo nivel entre grillos. Así que lo mejor es no enviar deliberadamente esos valores alrededor, porque grillos que están sentados inactivo (encendido, pero no ejecutan un programa) interpretarán esos códigos y posiblemente sobrescribir su memoria.

El Botón

Cuando el grillo está inactivo, al pulsar su botón hace que se comience la ejecución de la línea remota de arranque 1 en la pantalla Logo Cricket.
Cuando el grillo se está ejecutando un programa, al pulsar el botón hace que se detenga.
Volver a Cricket Inicio

Comandos del sistema

byte bajo valReporta el byte bajo del argumento; equivalente a 256% val , pero significativamente más rápido.
byte alto valReporta el byte alto del argumento; equivalente a val / 256 , pero significativamente más rápido.
 
eb addrExamine Byte - informa el valor situado en la posición de memoria addr . Por v1.5 Cricket práctico, la memoria comienza en la dirección 0 y termina en la dirección 4095 (decimal).
db addr valDepósito Byte - informa el byte val en la memoria del grillo en la ubicación addr . Advertencia: es fácil de memoria de programa sobre-escritura de Cricket utilizando este comando, causando accidentes de software.
 
BSEND valBus Enviar - envía el byte bajo de val por el bus periférico Cricket. Si el bit 8 se pone, marca la comunicación como un "byte de comando."
bsr valBus Enviar Recibir - envía el byte bajo de val por el bus periférico Cricket y espera hasta cuarto segundo de respuesta. Informes responden valor o -1 si ha agotado el tiempo. Si el bit 8 del val se establece, marca la comunicación saliente como un "byte de comando."