Você está na página 1de 48

CALICO

El Proyecto Calico es un "marco para el aprendizaje",


construyendo y jugando con las tecnologas de computacin

MANUAL DE USUARIO Y TUTORIAL

(Aplicaciones con Arduino)

Profesor: Jos Manuel Ruiz Gutirrez


j.m.r.gutierrez@gmail.com
Febrero 2015

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:

El Proyecto de Calico es un marco para el aprendizaje,


construyendo y jugando con las tecnologas de
computacin.
En su esencia es un editor integrado, una consola interactiva,
y un marco de interaccin social para
explorar la informtica a travs de
modernos lenguajes dinmicos. Est
diseado para ser un entorno sencillo, pero
potente, de desarrollo integrado (IDE) para
los estudiantes, profesores, investigadores y
tambin para la gente en general.

Funciona en casi cualquier sistema operativo, incluyendo


Linux, Mac OS X y Windows. Todas las fuentes del
Proyecto Calico estn abiertas y disponibles libremente para
utilizar de cualquier manera.
http://calicoproject.org

Jos Manuel Ruiz Gutirrez


Febrero 2015. Ver:1
Este trabajo est bajo licencia Creative Commons Attribution 3.0 Unported License)

3
Calico Jigsaw

Calico Jigsaw es un lenguaje grafico de manipulacin directa orientada a bloques que


sigue el modelo de Scrtach. Jigsaw es un miembro de pleno derecho de la familia del
calic de los lenguajes de programacin y puede interoperar sin problemas con todos los
idiomas y contextos de programacin integrado en Calico. Por ejemplo, un programa
escrito en Jigsaw puede llamar directamente a funciones escritas en cualquier otro
lenguaje Calico.

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).

1.1. Conceptos bsicos del entorno Calico


El entorno de trabajo de Calico es muy sencillo. Distinguimos hasta cinco reas bien
definidas.

Librerias: En ella se muestra las colecciones de libreiras que cargamos en


nuestra aplicaicn. Pulsadno en los bloques de color se muestran los conjuntos
de vbloques de libreria de cda uno de los tipos de librerias.

Pestaas de bloques de librera: En este area se muestran los bloques que


forman parte de uno de los subconjutos de una libreria.

Area de trabajo: En ella se arrastran y emsamblan los bloques de que formaran


parte del programa que deeamos construir. Pra eliminar un bloque basta
arrastralo hacia el area de Pestaas de Bloques para que se borre previa
aceptacion de la operacin.

Terminal de Salida: Aquie se muestra la informaicon que se envia al termrinal


de salida a traves de las instrucciones de tipo "pirin" de nuestro programa.

rea de propiedades de bloque: Aqui aparecen de manera editable los


parametros de cada bloque de librera. para editar el bloque previamente
debemos seleccionarlo.

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

Ayuda: Abre una pgina Web de ayuda http://calicoproject.org/Calico:_Help

Nuevo: seleccionamos un nuevo ejemplo marcando previamente el lenguaje en el que


trabajaremos que apracera en una ventana.

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.

Los lenguajes que incorpora la versin actual de Calico son:

1. Calico Jigsaw - un lenguaje de bloque de arrastrar y soltar


2. Calico Basic - intrprete de Basic (utiliza Calico mdulos, acceso a instancias
calico)
3. Calico Logo - Es un lenguaje sencillo que tiene gran parte de la misma belleza y
el poder de Lisp
4. Calico Python - popular lenguaje de scripts
5. Calico Ruby - popular lenguaje de scripts
8
6. Calico Boo - similar a Python, pero con tipos
7. Calico Java - Testea como un interprete de java
8. Calico Scheme - un moderno y simple lenguaje
9. Calico FSharp - similar a OCaml y ML
10.Calico Spreadsheet - una simple hoja de calculo para ver y editar
11.Calico BrainScrew - un sencillo lenguaje
12.Lenguajes experimentales.

1. Calico Lua -un lenguaje comun usado para sistemas embbebidos,


robotca, juegos, etc. (requiere un bajo nivel Lua)
2. Calico Dinah - un lenguaje de bloque de arrastrar y soltar (en desarrollo)
3. Calico CSharp -C# intepretado

1.4. Aadir y Quitar Mdulos


Cuando hemos seleccionado uno de los lenguajes con el que queremos realizar nuestros
programas de aplicacin tendremos la posibilidad de aadirle "mdulos" o libreras que
potenciaran las posibilidades del entorno.

Para aadir mdulos bastar con seleccionar Editar->Usar Mdulo pudiendo


incorporar el que seleccionemos. No todos los mdulos se pueden incluir en todos los
lenguajes.

Si lo que queremos es quitar mdulos lo haremos con la opcin Editar->Removea


Moule y seleccionamos el mdulo a quitar

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)

En general, se recogern los bloques de la pestaa y se arrastraran al espacio de trabajo.


NOTA: a menudo es muy til utilizar la funcin Buscar (men -> Editar -> Buscar ...)
para encontrar bloques. Slo tienes que introducir el texto que est buscando en el
cuadro Buscar y pulse ENTER, o control + f, control + g.

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).

NOTA: El control + c copiar el bloque o pila seleccionada de bloques del espacio de


trabajo. control + v se pegue el bloque (s) copiado en el espacio de trabajo.

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.

NOTA: si hace clic en un bloque en el espacio de trabajo y seleccione Ayuda, se le


llevar a la seccin apropiada en esta pgina, ya que dispone de una conexin a Internet.

1.5. Bloques

Las siguientes secciones describen todos los bloques predeterminados de Jigsaw.


Tambin puedes aadir ms bloques de men -> Editar -> Utilice un mdulo ... y la
seleccin de un mdulo.

Los-mejores apoyado mdulos para Jigsaw son:


Calico Jigsaw: Myro
Calico Jigsaw: Processing
Calico Jigsaw: Graphics

1.5.1. Control Tab

La ficha de control contiene bloques que pertenecen a programar el control.

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.

1.5.1.2. If-block (Bloque condicional sencillo)

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).

1.5.1.3. If-else-block (Bloque condicional completo)

Este bloque permite ejecutar las instrucciones cuando se cumple la condicin y si no se


cumple se ejecutan las instrucciones de la parte else. La expresin condicional debe ser
un valor booleano (se evala como verdadero o falso).

1.5.1.4. While-block (Bloque bucle)

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.5. Repeat-block (Bloque repeticin "nmero de veces"

El bloque de repeticin le permite ejecutar un bloque un nmero determinado de veces.

1.5.1.6. For-each-block

El bloque for each le permite ejecutar un bloque un nmero determinado de veces, en la


que cada vez que la variable item recibe el siguiente elemento de la secuencia.

1.5.1.7. Exit-block (salida)

El bloque de salida le permite salir de un bloque de control.

1.5.1.8. End-block (fin)

El bloque terminal le permite finalizar el programa inmediatamente.

1.5.2. Statements Tab (bloques tipo estamento)

La ficha Declaraciones contiene bloques que pertenecen a los estados individuales.

13
1.5.2.1. Assignment-block (bloque de asignacin)

El bloque de asignacin permite asignar un valor a una variable.

1.5.2.2. Statement-block (bloque ejecucion de estamento)

El bloque Declaracin permite ejecutar un comunicado. Por defecto, la afirmacin es


simplemente "pasar", que significa "no hacer nada". Puede escribir cualquier
declaracin vlida en el rea de declaracin.

1.5.2.3. Random-block (genera aleatorio)

El bloque aleatoria le permite obtener un nmero aleatorio entre un mnimo y mximo,


y lo guarda en una variable.

1.5.2.4. Comment-block (comentario)

El bloque de comentario permite insertar un comentario en una pila de bloques.

14
1.5.2.5. Freestyle-Comment-block

El comentario de bloque Freestyle le permite poner un comentario en cualquier parte del


espacio de trabajo.

1.5.3. Input/Output Tab (bloque tipo entrada/salida)

La pestaa Entrada / Salida contiene bloques para la obtencin de informacin y el


envo de informacin.

1.5.3.1. Print-block

El bloque de impresin le permite mostrar informacin en el terminal de salida.

1.5.3.2. Ask-block

El ask le permite solicitar el usuario alguna informacin. La informacin siempre se


devuelve como una "cadena". Para convertir una cadena a otro tipo, puede utilizar el int
() o float () funciones, como se muestra aqu:

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

El bloque Tell le permite al usuario sacar un mensaje en una ventana de dilogo.

1.5.3.4. Beep-block

El bloque Beep le permite emitir un pitido en el altavoz del equipo.

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

El bloque beep-2-frecuencias le permite hacer el pitido del equipo durante un tiempo


determinado y dos frecuencias. Las frecuencias son tpicamente en el rango de 400 a
10.00

16
1.5.3.7. Speak-block

El bloque Speak le permite hacer hablar al ordenador. Establezca el argumento de texto


en una cadena, y la computadora convierte el texto en una palabra hablada. Vase
tambin Funciones de salida Myro para una mayor funcionalidad, como cambiar la voz,
obteniendo una lista de voces, etc.

1.5.4. Procedures Tab

La pestaa de Procedimientos contiene bloques que pertenecen a decisiones y


llamando Procedimientos.

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

El bloque de retorno permite devolver un valor de un procedimiento.

17
1.5.4.3. Call-Procedure-block

Este bloque le permite llamar a un procedimiento, con argumentos, si se ha definido


como tal.

2. Ejemplos con Procedimiento


Sumar dos nmeros
Para crear un nuevo procedimiento que suma dos nmeros juntos, hacer esto:

1. Crear un nuevo fichero Jigsaw Guin Nuevo

2. Arrastre un bloque Define-Procedimiento en el espacio de trabajo


1. Haga clic en el bloque la Definir-Procedimiento
2. Cambie el nombre del procedimiento a partir de Propiedades en
MyProc a Aadir
3. Cambie el nombre Param1 de blanco para num1
4. Cambie el nombre Param2 de blanco para num2

18
3. Arrastre un bloque return de la pestaa de bloques
1. Cambie la expresin en Propiedades para num1 + num2

4. Arrastre un bloque result y ponga el nombre del procedimiento al que invoca


1. Cambio de Nombre de procedimiento a Add
2. Cambie Arg1 al 23
3. Cambie Arg2 al 47

5. Arrastre un bloque Tell que mostrara el resultado de la operacin


19
1. Cambio 'mensaje' a 'El resultado de la suma es:' + str (resultado)

Finalmente se ensamblan los bloques y se ejecuta la aplicacin. Aparecer una ventana


en a que se muestra el resultado de la suma.

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"

El bloque condicional tendr los parmetros siguientes:

Se colocaran dos bloques del tipo result=0 en los que aadimos los textos a escribir
para cada uno de los dos casos:

Finalmente se cierra el procedimiento con la isntruccion de retorno al programa


principal return(resultado).

Finalmente en el programa principal se realiza la impresin del resultado con la


instruccin print(resultado) que imprime en el terminal.

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)

3.1. Librera Advanced 4

Las siguientes funciones trabajarn con la tarjeta Arduino. En Jigsaw aparecen en la


ficha Opciones Advanced4 cuando se utiliza el mdulo de Myro (menu -> Edit -> Use
a Module -> Myro).

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

NOTA: port es un nmero entero que indica el numero de PIN de Arduino.

23
5.2 Librera M/Robot

Libreria Myro -> M/Robot (Para definir el hardware conectado o simulado)

24
4. Prcticas con Arduino utilizando el lenguaje
Jigsaw y la librera Myro.

4.1. Cuestiones previas a JIGSAW


Para trabajar con Arduino debemos tener cargado el firmware Firmata en la tarjeta de
Arduino ya que Calico lo que har a travs de los bloques de la librera Jigsaw es
comunicarse a travs del puerto USB siguiendo el protocolo implementado en este
firmware.

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.

Para trabajar con Calico-Jigsaw-Arduino debemos cargar la librera Myro.

Los bloques que configuran la comunicacin con Arduino son los siguientes

Estos dos bloques pertenecen a al conjunto de bloques llamado M/Robot de la librera


Myro

Los argumentos son los que figuran en la siguiente imagen:

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:

1. Se carga el bloque getRobotTypes() de la pestaa M/Robot de la librera Myro


2. Se define la tarjeta Aduino y su puerto de conexin con el bloque
makeRobot(robot_type,args) de la pestaa M/Robot de la librera Myro
3. Se coloca el bloque de bucle while True de la pestaa Control de la librera
Bsica
4. Dentro del bloque while se colocaran los bloque de escritura de valor digital
digitalWrite(6,1) escribe un 1 y digitalWrite(6,0) que escribe un 0 cn los
bloques intercalados de espera wait(1) espera 1 seg.

Seguidamente se pulsa en botn "Ejecutar script" y se ejecuta la aplicacin.

A continuacin se muestran los bloques con sus propiedades para facilitar la


parametrizacin de cada uno de ellos.

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).

Los bloques analogRead(0), digitaWrite(6,1) pertenecen a la sub-librera


M/Advanced4 de la libreria Myro

El bloque print(a) (pertenece a la sub-librera input/output) lo que hace es imprimir el


valor ledo del canal A0 en la ventana de monitorizacin o terminal.

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)

El algoritmo es muy sencillo. Si se lee un valor "true" (1) en el PIN4 se cumple la


condicin establecida en el bloque "if a=true"" y se escribe un 1 en el PIN6
digitalWrite(6,1) a la vez que se incremente a la variable c "c=c+1". En caso de no
cumplirse se pone a "0", digitalWrite(6,0), el PIN6 y se imprime el valor de la variable
"print(c)"

En la siguiente imagen vemos el aspecto de la aplicacin funcionando

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)

Se trata de implementa un contador ascendente y otro descendente haciendo uso del


bloque while. Se designa una variable a que es la que se incrementar y decrementar y
a la vez sacaremos por el PIN6 con la ayuda de la instruccin analogWrite(6,a).

Imprimimos el valor de la variable a en el terminal. La velocidad de incremento de la


variable se modificara con la herramienta de control de velocidad de ejecucin. El
incremento se ha realizado de 10 en 10.

Si quisiramos que la velocidad de incremento fuera fija pondramos un bloque de


tiempo wait(0.2) y debemos poner el cursor de control de velocidad a la izquierda
(mxima velocidad)

La aplicacin quedara de esta forma

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.

Si la entrada vale 1 activamos la salida

Si la entrada vale 0 desactivamos la salida.

1. En este montaje utilizarems los bloques getRobotTypes() de la pestaa M/Robot de


la libreria Myro y el bloque makeRobot(robot_type,args). Con ello configuramos
el hardware.
2. Es preciso definir el PIN4 como entrada para ello hacemos uso del bloque
PinMode(port.mode) el valor de port=4 y el valor de mode=0 (para significar que
es una entrada).
3. Dentro del bucle while leeremos el valor de la entrada PIN4 y el valor lo igualamos
a la variable a y mediante un condicional if a==true preguntaremos si la variable a
es a=true en cuyo caso enviamos el valor 1 a la salida PIN6 digitalWrite(6,1) a la
vez que imprimimos para que salga en el terminal "salida" el valor "activo"
print("activo") , en caso contrario sacaremos un 0 digitalWrite(6,0) en el PIN6 y
escribiremos "apagado" print("apagado") en el terminal

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.:

Peticin de PIN que activaremos

Pide el numero de pin pin=ask("Canal(6,9,10,11):")


35
Convierte la cadena pin en un entero pin=toInt(pin) -librera de Processing P/Data
Imprime el valor del PIN print("PIN=",pin)
Tambin podra convertirse el string pin (devuelto por la instruccin ask) en un entero
con la funcin pin=int(pin) que es un bloque sacado de la libreria Basica->Staments

Peticin del tiempo de activacin/desactivacin

Pide el numero de t t=ask("Tiempo en seg.")


Convierte la cadena t en un decimal t=toFloat(t) -librera de Processing -> P/Data
Imprime el valor de t PIN print("Tiempo",t)

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

Lo primero que debemos hacer es configurar el hardware Arduino y seguidamente crear


una ventana de tamao 255x255 con el fin de que en ella sea en la que desplacemos el
ratn para tomar los valores de las coordenadas. Definimos las salidas digitales con la
instruccin makePWMOutput.

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().

Seguidamente se escribe en las salidas PWM 10 y 11 los valores a y b, segn las


instrucciones analogWrite(10,a) y analogWrite(11,B). Despus se imprimirn los
valores en el terminal con la instruccin print(a,b)

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

Una vez definida la conexin con Arduino mediante la instruccin


makeRobot("Arduino,"COM3") se define la salida de control de servo PIN3 con la
instruccin makeServoOutput(3).

Enviaremos el valor 45 para que gire en un sentido a la velocidad equivalente de 45 -


instruccin analogWrite(3,45) - y despus le haremos girar en sentido contrario con la
velocidad equivalente a 135 - analogWrite(3,135).

La conmutacin del giro la hacemos cada 4 segundos -wait(4) -

39
4.11. Leer e imprimir un valor analgico PIN A0

En la aplicacin siguiente leemos el valor del canal analgico de entrada A0 y lo


imprimimos en el terminal

El bloque que lee el valor y lo asigna a la variable v es el siguiente:

El valor se lee e imprime en el terminal mediante la instruccin print(v).

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.

La ventaja de escribir un programa en Phyton es que disponemos de la potencia de la


sintaxis de un lenguaje y no tenemos que ceirnos a un juego de bloques de instruccin
como n el caso de la trabajar con el lenguaje grafico Jisaw explicado anteriormente.

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)

NOTE: port es un entero.

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.

Para definir la conexin lo hacemos con la funcin makeRobot("Arduino",


"COM3").

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.).

Se define el PIN6 como salida makeDigitalOutput(6)


Dentro del bucle que se repetir hasta 10 veces ponemos las instrucciones para
activar y desactivar la salida -digitalWrite(6,1) - y las temporizaciones - wait(.5) -
Para finalizar invocamos la funcin blink.

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

Para leer un canal analgico A0 de manera permanente e imprimir su valor en el


terminal recurrimos ala instruccin while True: que implementa un bucle continuo.
dentro del bucle designamos la variable v=analogRead(0) y despus la imprimimos
print(v).

Podemos ver en el terminal de salida el valor de v que oscila entre 0 y 1023

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.

En este caso vamos a necesitar algunas funciones de la librera grafica de Processing


que cargamos al principio del programa.

Una vez ejecutndose aparecer la ventana con el trazado de la seal.

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

La ejecucin de estas dos funciones se realiza y se detiene la aplicacin.

Jos Manuel Ruiz Gutirrez


Febrero 2015. Ver:1
Este trabajo est bajo licencia Creative Commons Attribution 3.0 Unported License)

48

Você também pode gostar