Escolar Documentos
Profissional Documentos
Cultura Documentos
1
ndice
1. Introduccin
2. Calico Jigsaw
3. Empezando
4. Ejemplos con procedimiento
5. Librera Myro
6. Prcticas con Arduino utilizando el lenguaje
Jigsaw y la librera Myro
7. Prcticas con Arduino utilizando el lenguaje
Phyton
2
1. Introduccin:
3
Calico Jigsaw
Calico Jigsaw puede utilizar cualquiera de la serie de mdulos escritos para Calico,
incluido Myro (con robots, conversin de texto a voz, imgenes), produccin (arte), y
grficos (objetos, simulacin de la fsica, y ms).
4
En el area de trabajo aprecen varias pestaas: Inicio, Shell y tantas como ejemplos vayamos
abriendo con el nombre del fichero abierto.
La ms importante es Inicio
Inicio
5
Esta pestaa contiene una pantalla con las opciones siguientes:
Primeros Pasos: abre una pgina Web de ayuda general del entorno
http://calicoproject.org/Calico:_Getting_Started
Abrir: Nos permite abrir un fichero ya guardado. Aparece una ventana con el rbol de
carpetas para que seleccionemos la ruta y el fichero a abrir.
ltimos usados: Aparece una ventana con la lista de los ltimos ejemplos abiertos
6
Examples: Abre los ejemplos de los lenguajes que tengamos seleccionados para trabar.
1.2. Mens
A continuacin vamos a repasar las opciones de la barra de botones de Calico. en al
figura podemos leerr lo que hace cada uno d elos botones.
Merece especial relevancia los botones y el slider de la derecha que son los encargados
de controlar la simulacion o ejecucon d euna aplicacin. La ejecucion de la aplicacion,
en ocasnes equiere que se ralentice con el fin de poder observar el comportameinto del
algoritmo creado. Si ponemos el slider a la izquierda la ejecun se realiza a la maxima
veocidad y a la derecha a la minima velocidad.
7
1.3. Aadir Lenguajes
Lo ms importante de Calico es su carcter "multilenguaje", es decir la posibilidad de
crear aplicaciones en distintos lenguajes, la mayor parte de ellos muy conocidos y
utilizados en los mbitos acadmicos..
Para aadir lenguajes y hacerles disponibles a hora de crear una aplicacin basta cn
seleccionar la opcin Calico->Lenguajes y se despliega una ventana con una lista de ls
que incluye. en esta lista marcamos los que deseemos tener disponibles.
9
Empezando
Antes de comenzar, usted necesita para asegurarse de Jigsaw se ha activado:
1. Vaya al men -> Calico -> Lenguajes
2. Asegrese de que Jigsaw tiene una marca junto a ella
3. si no seleccionarlo
Usted slo tendr que activar Jigsaw una vez. Calico recordar que, y lo cargar en
el arranque.
Puedes comenzar a editar un script Jigsaw en una de tres maneras:
Crear un nuevo script Jigsaw desde cero (Men -> Archivo -> Nuevo)
Abrir un ejemplo existente (men -> Archivo -> Ejemplos -> Jigsaw)
Abra uno de los scripts creados anteriormente (Men -> Archivo -> Abrir)
Haga doble clic en un bloque se ejecutar (y todos los siguientes bloques conectados).
Al hacer clic en un bloque en el espacio de trabajo, aparecer una tabla de Propiedades
junto a la ficha Salida. En la ficha de propiedades, puede editar las propiedades,
incluyendo argumentos, nombres de variables, etc.
Bloques afines estn codificados por color para que coincida con la otra. Cada ficha
tiene su propio color y bloques de esa ficha coincidir.
En un bloque, artculos con el texto azul sobre un fondo blanco indican un elemento que
se puede cambiar. Seleccione el bloque (con el ratn) y los artculos que se pueden
cambiar aparecen en la ficha de la propiedad (al lado de la ficha Salida).
Jigsaw utiliza Python para evaluar expresiones. Es decir, cualquier expresin general
(como "1 + 1", "aob" o "int ('45 ')") utiliza Python para averiguar el significado.
Jigsaw se extiende por dos modelos: el modelo de proceso de bloque Jigsaw, y el
10
modelo de Python. Por ejemplo, cuando se define un procedimiento, es tanto un
procedimiento de Jigsaw, sino tambin un procedimiento de Python.
1.5. Bloques
11
1.5.1.1. When script starts (Bloque de inicio)
Este es el bloque principal que comienza cualquier programa de Jigsaw. Usted puede
tener ms de uno de estos bloques, que se desarrollarn en paralelo.
El bloque Si le permite ejecutar una pila de bloques slo cuando una condicin es True.
La expresin condicional debe ser un valor booleano (se evala como verdadero o
falso).
12
El bloque Mientras le permite ejecutar un bloque mientras una condicin es True. La
expresin condicional debe ser un valor booleano (se evala como verdadero o falso).
1.5.1.6. For-each-block
13
1.5.2.1. Assignment-block (bloque de asignacin)
14
1.5.2.5. Freestyle-Comment-block
1.5.3.1. Print-block
1.5.3.2. Ask-block
15
result = Ask('Question:')
result = int(result)
or
result = Ask('Question:')
result = float(result)
Adems, siempre se puede convertir un nmero en una cadena mediante la funcin str ().
1.5.3.3. Tell-block
1.5.3.4. Beep-block
1.5.3.5. Beep-frequency-block
La bloque beep le permite hacer el pitido del equipo para una duracin y frecuencia
determinada. Las frecuencias son tpicamente en el rango de 400 a 10.000.
1.5.3.6. Beep-2-frequencies-block
16
1.5.3.7. Speak-block
1.5.4.1. Define-Procedure-block
El bloque define le permite definir un nuevo procedimiento, con sus parmetros, si asi
lo desea.
1.5.4.2. Return-block
17
1.5.4.3. Call-Procedure-block
18
3. Arrastre un bloque return de la pestaa de bloques
1. Cambie la expresin en Propiedades para num1 + num2
Un ejemplo ms.
En esta ocasin montaremos un ejemplo en el que se nos pide un dato haciendo uso del
bloque ask que despliega una ventana para solicitar un valor.
El valor recogido como respuesta lo asociamos a una variable a la que hemos llamado A
20
A continuacin definimos el procedimiento Test que evaluara si el nmero es mayor o
menor que "0"
Se colocaran dos bloques del tipo result=0 en los que aadimos los textos a escribir
para cada uno de los dos casos:
21
A continuacin mostramos dos caso de ejecucin del programa uno dando un numero
positivo y el otro un numero negativo
22
3. Libreria Myro
Libreria Myro -> M/Advanced4 (Para controlar Arduino)
analogRead(port)
Lee un PIN analgico (0..5)
digitalRead(port)
Lee un Pin digital (0..13)
analogWrite(port, value)
Escribe en un PIN PWM
digitalWrite(port, value)
Escribe en un PIN digital
pinMode(port, mode)
Establece el modo de trabajo de un PIN
makeInput(port)
Establece una entrada
makeDigitalOutput(port)
Establece una salida digital
makePWMOutput(port)
Establece una salida PWM
makeServoOutput(port)
Establece una salida SERVO
23
5.2 Librera M/Robot
24
4. Prcticas con Arduino utilizando el lenguaje
Jigsaw y la librera Myro.
La forma de trabajo con este software es en modo On-line, es decir desde e ordenador
no se genera cdigo que se descargue en la tarjeta Aduino, lo que se hace es leer y
escribir datos en la tarjeta siguiendo el protocolo de Firmata y el algoritmo se
implementa en el propio fichero de trabajo. Una vez que se detiene la ejecucin del
algoritmo Arduino queda incomunicado con el software y sus entradas/salidas inactivas,
como mucho en el estado que estaban al detener la aplicacin.
Los bloques que configuran la comunicacin con Arduino son los siguientes
Tendremos que asegurarnos del puerto el que se comunica Arduino y ponerlo en los
parmetros del bloque makeRobot.
25
Tambin se podra configurar la tarjeta Arduino con estos dos bloques de la misma
librera:
Los ejemplos que veremos en este manual se han realizado con la versin Arduino
UNO Rev.3
Los bloques fundamentales que manejan las entradas/salidas de Arduino son los
pertenecientes a la sub-librera M/Advanced4 de la librera Myro de la que ya hemos
hablado anteriormente.
26
4.2. Salida Intermitente en el PIN6
Con este ejemplo se trata de activar y desactivar cada cierto tiempo la salida digital
PIN6
El procedimiento ser:
27
28
4.3. Salida Intermitente en el PIN6 con Tiempo variable
Se trata de activar y desactivar cada cierto tiempo la salida digital PIN6. El tiempo ser
recogido del canal analgico de Arduino A0.
En este ejemplo leemos el valor de la seal analgica del canal de entrada de Arduino
A0 , a=analogRead(0), y lo asociamos al la variable "a", activamos, digitalWrite (6,1),
y desactivamos, digitalWrite (6,0), la salida digital PIN6 con una cadencia de tiempo
establecida por el valor de "a/1000", wait(a/100).
29
4.4. Contador de impulsos por el PIN4
Con este ejemplo contaremos los impulso que llegan por el PIN digital 4 , asociando la
cuenta a una variable ala que llamamos c. El valor de c se imprime por el terminal y
cada vez que llega un impulso se activa las salida digital PIN6
Como vamos a utilizar una entrada digital es necesario que definamos el PIN4 como
una entrada para lo cual hacemos uso del bloque pinMode(4,0) que define este pin
como entrada. De la misma forma debemos definir la variable c y darle el valor , por
defecto, de "0" "c=0". El valor digital que leemos en el PIN4 lo asociamos una variable
que designamos con el nombre de "a", esto lo hacemos con el bloque a=digitalRead(4)
30
31
4.5. Efecto Fading en una salida digital
Con este ejemplo lo que harems ser sacar un valor numrico comprendido entre 0 y
255 por una de las salidas PWM PIN6. Debemos configurar este PIN con el bloque
makePWMOutup(6)
32
33
4.6. Activacin de una salida mediante una entrada
Con este ejemplo vamos a gobernar el estado de una salida PIN6 en funcin del estado
de una entrada PIN4.
34
4.7. Activacin de una salida seleccionada con un tiempo
tambin seleccionado
Se trata de activar y desactivar una salida con un tiempo de cadencia entre el encendido
y el apagado pero en el que la seleccin del PIN y el tiempo la hacemos mediante una
ventana de peticin de datos.
Se utiliza la libreia "Porcessing para las funciones de convertir un strin (que es el que
ponemos en la ventana de recogida de valor9 en un entero para el numero de PIN y en el
caso en un numero decimal para el caso del tiempo.
Los bloques que sirven para recoger y convertir los datos ledos en la ventana de
peticin de datos son los siguientes.:
El resto del programa ya lo hemos visto en el anterior ejemplo. dentro del bucle while lo
que hacemos es activar y desactivar el PIN de valor pin durante un tiempo t.
36
4.8. Efecto fading en dos salidas en funcin de las posiciones
del ratn sobre la pantalla
Se trata de recoger los valores de las posiciones del ratn en la pantalla de ejecucin,
valores mouseX() y mouseY() y sacar estos valores en los pines PIN10 y PIN11
configurados como PWM
Se definen las variables a y b (instrucciones de asignacin a=0 y b=0)que sern las que
recojan los valores de las posiciones X e Y del ratn con las instrucciones a=mouseX()
y b=mouseY().
37
4.9. Control de un servo de manera cclica
En este ejemplo realizamos el gobierno de un servo colocado en el PIN3 de una manera
cclica: El valor del ngulo a se va incrementando hasta llegar a 180 en saltos de 10
para despus decrementarse de la misma manera.
38
4.10. Control de un servo continuo -trucado-
Para controlar un servo de giro continuo podemos hacer uso de la instruccin
analogWrite que enva a un canal de salida compatible con servo un valor equivalente
al sentido de giro y a la velocidad de giro. No olvidemos que a travs de Firmata se
puede controlar un servo trucado (servo continuo) con los valores que oscilan entre 0 y
180, teniendo en cuenta que de 0 a 90 gira en un sentido con una velocidad variable y
de 90 a 180 en sentido contrario tambin con una velocidad variable
39
4.11. Leer e imprimir un valor analgico PIN A0
La velocidad del escaneo de dato se puede fijar con el control de velocidad de ejecucin
de Calico.
40
4.12. Control de la Frecuencia de un Tono
En este ejemplo se utilizara el bloque de funcin beep que permite emitir un tono en el
que se puede controlar la duracin y la frecuencia.
Leeremos el valor del canal analgico A0 y pasaremos este valor como parmetro para
recoger la frecuencia del tono - bloque de instruccin v=analogRead(0) - .
Imprimiremos el valor ledo de A0 en el terminal de Calico
41
5. Prcticas con Arduino Utilizando el lenguaje
Phyton.
Vamos a programar Arduino con el entorno Calico pero esta vez programando en
Phyton y utilizando las libreras Myro y algunas otras.
De manera previa debemos tener en cuenta que la tarjeta Arduino debe tener cargado el
firmware Firmata.
Para trabajar con Phyton dentro del entorno Calico bastar seleccionar el lenguaje a la
hora de crear una nueva aplicacin, teniendo o en cuenta que previamente debemos
tener seleccionado el lenguaje en la opcin Phyton.
42
Cuando seleccionamos nueva aplicacin nos aparece la venta de lenguajes activados y
seleccionamos Phyton.
Una vez seleccionado el lenguaje nos aparecer la venta para escribir el cdigo y
estando abierta tambin podremos invocar y capturar las libreras que nos interesen
mediante la opcin Editar-> Usar Mdulo.
Las funciones de Arduino dentro de la libreria Myro son las de la seccin Advanced4
(menu -> Edit -> Use a Module -> Myro).
analogRead(port)
digitalRead(port)
analogWrite(port, value)
digitalWrite(port, value)
pinMode(port, mode)
makeInput(port)
makeDigitalOutput(port)
makePWMOutput(port)
makeServoOutput(port)
43
5.1. Blink 10 veces sobre el PIN 6
Lo primero que debemos hacer es cargar el modulo de librera Myro - from Myro
import * -cuyas funciones nos permitirn la conexin con Arduino.
Lo que hacemos a continuacin es definir una funcin que llamamos def blink()
dentro de la cual pondremos las instrucciones que realmente se encargaran de
activar y desactivar el PIN6 cada cierto tiempo (0.5 seg.).
44
Otra forma de realizar la aplicacin seria definiendo un Objeto asociado a la
conexin con Arduino: ard=makeRobot("Arduino","com3")
En este caso pondremos delante de los comando la palabra "ard". Al final ponemos
el comando ard.Close() que cierra la comunicacin con el puerto USB
45
7.2 Lectura de un canal Analgico
46
7.3. Lectura y Representacin del valor de una seal analgica
leda del canal A0
Con este programa deseamos leer una sea analgica que recogemos del canal A0 de
Arduino y representar su valor en una ventana grafica.
47
3.1. Activacin PWM y Blink sobre dos Pines digitales
respectivamente.
Con este programa vamos a realizar dos funciones distintas que se ejecutarn una
detrs de la otra.
La primera funcin - pulse() - consiste en sacar 5 impulso en el PIN10
La segunda funcin - blink() -es generar una rampa de subida y otra de
bajada sobre el PIN9 que trabajar en forma de salida PWM
48