Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Autor: Javier Abascal Carrasco Tutor: Jose Ramn Cerquides Bueno Fecha: Mircoles, 24 de abril de 2013
0. ndice
0. 1. 2. 3. ndice .................................................................................................................................... 2 Introduccin ......................................................................................................................... 3 Antecedentes y motivaciones ........................................................................................... 5 Parte 1: Sensor y acondicionamiento de la seal. ........................................................ 7 3.1. 3.2. 3.3. 3.4. 4. Sensor .......................................................................................................................... 7 Acondicionamiento de la seal............................................................................... 13 Amplificador de instrumentacin INA125.............................................................. 16 Diseo del pcb .......................................................................................................... 18 Kits Arduino ............................................................................................................... 22 Arduino Duemilanove + Xbee Shield............................................................. 22 Arduino Fio ........................................................................................................ 24 Mdulos Xbee ................................................................................................... 25
Configuracin de los mdulos Xbee ...................................................................... 26 Entorno de desarrollo Arduino ................................................................................ 28 Programacin de los microcontroladores ............................................................. 29 Posicionamiento de los elementos ........................................................................ 31 Bateras ...................................................................................................................... 35 Camuflaje ................................................................................................................... 36
6. 7. 8. 9.
Funcionamiento y Aplicaciones mgicas. ..................................................................... 38 Futuras lneas de trabajo................................................................................................. 39 Conclusiones ..................................................................................................................... 40 Referencias. ...................................................................................................................... 41
9.1. Bibliografa ......................................................................................................................... 41 10. Apndice. .......................................................................................................................... 43 10.1. Efectos explicados ..................................................................................................... 43 10.2. Cdigos de programacin ......................................................................................... 46
1. Introduccin
La telecomunicacin es segn la ITU 1 , toda emisin, transmisin y recepcin de signos, seales, escritos e imgenes, sonidos e informaciones de cualquier naturaleza, por hilo, radioelectricidad, medios pticos u otros sistemas electromagnticos (ITU). Habitualmente las aplicaciones de los sistemas de telecomunicacin han sido los medios de transmisin de masas como el telgrafo, radio, telefona y televisin (Isabel Romn Martinez y Rafael Estepa Alonso, 2007/2008). Los nuevos servicios generados a travs de internet estn revolucionando la sociedad como son las video-llamadas, el streaming o el intercambio de archivos personales. A pesar de todo esto, todava hoy los sistemas disponen de una amplia funcin en campos de trabajo que no estamos familiarizados. Cada vez ms rpido, se descubren nuevas ocupaciones en donde el uso de estos sistemas revoluciona la prctica y posibilita una multitud de nuevos servicios al usuario (salud, educacin, administracin etc.). En este proyecto fin de carrera abordaremos un rea de trabajo poco comn, la magia. El proyecto consiste en el desarrollo y posterior realizacin de un sistema para poder realizar efectos de cartomagia. Se basa en la construccin de un soporte que permite el pesado ultrasensible de cartas de pker, en un rango de 0 a 60 y posibilita la comunicacin de forma instantnea a un receptor instalado en algn lugar y mostrar los resultados correspondientes. En primer lugar, analizaremos como generamos la seal para obtener el pesado correcto bajo la superficie del soporte, que tendr apariencia de mesa. En segundo lugar, estudiaremos el procesamiento de la seal, programacin de los equipos y el envo de la informacin al receptor inalmbrico. Y en tercer lugar, explicaremos como camuflar todo el sistema bajo una apariencia normal y aprovechar el sistema realizado para ser capaz de realizar efectos mgicos. Para comenzar, describiremos el sensor que hemos seleccionado, destacando sus caractersticas, como funciona y cmo somos capaces de realizar una lectura correcta de la medida. A su vez, conoceremos el diseo del circuito PCB creado para el acondicionamiento de la seal, el programa empleado y los resultados. A continuacin, abordaremos el procesamiento de los datos que nos genera el sensor; para ello programaremos un microcontrolador ATmega328 instalado en un kit Arduino bsico. El kit Arduino ha sido escogido por su compatibilidad con mdulos de Xbee ya prediseados, la amplia variedad de libreras de uso libre disponibles, as como su creciente popularidad. Una vez
1
realizada la digitalizacin, gracias a los mdulos Xbee podremos ser capaces de realizar el envo del resultado al receptor. Para finalizar, detallaremos las dificultades que hemos tenido para esconder el soporte en una mesa y dar una apariencia normal a un simple tapete de cartas. Adems se explicara el uso correcto del dispositivo, enunciaremos las posibles aplicaciones mgicas de ste y futuras ampliaciones del sistema.
2. Antecedentes y motivaciones
La magia es un arte del entretenimiento que se apoya en determinados juegos y experimentos con el fin de ser capaz de dar la apariencia de romper las leyes naturales. Existe desde hace miles de aos y la primera mencin en la historia fue realizada en el antiguo Egipto, alrededor del 2700 a.C. (Harmening, ISSN 1406-0957) (Regling). El ilusionismo ha ido evolucionando a la par que la sociedad y hoy en da existen multitud de disciplinas que van desde la micromagia hasta las grandes ilusiones. En mi caso, la aficin por la magia se remonta al ao 2006; un ao antes de comenzar la carrera de Ingeniero de Telecomunicacin en Sevilla. A causa del gran mpetu con el que me inici en este mundo, empec a ver con claridad la idea de mi proyecto fin de carrera tras tener mis primeros conocimientos en electrnica y seales. Para poder entender rpidamente sin tener que estudiar a fondo la teora de la magia, nos gustara explicar brevemente la diferencia que existe entre tcnica y trucaje. La parte tcnica, consiste en un conjunto de movimientos, gestos y hechos que ocultan o camuflan acciones normales con acciones tramposas para ayudar a realizar un efecto mgico. El trucaje o ardid sin embargo, es el conjunto de elementos y herramientas construidas y diseadas para poder realizar tales efectos (Nelms, 1969). Un sistema de telecomunicaciones nunca nos ayudar a acrecentar nuestra tcnica, sin embargo, si nos ayudar a construir un gran trucaje. Existen una gran variedad de especialidades dentro del mundo de la magia en las que se podra insertar un sistema de telecomunicacin y desde hace relativamente poco tiempo, estn empezando a proliferar de forma creciente trucajes electrnicos realmente novedosos que consiguen ilusiones mgicas muy impactantes. Es casi imposible saber con certeza quin fue el primer ilusionista en adaptar y utilizar la electrnica en diferentes sistemas para la magia ya que es un arte que se ha ido desarrollando en paralelo a lo largo y ancho de los continentes y hasta fechas cercanas no ha habido mucho intercambio de informacin. Adems tiempo atrs la magia no era un bien compartido y muchsimos ilusionistas se llevaron sus secretos a la tumba. An as Juan Mayoral 2 (Mayoral, 2013) cree segn sus conocimientos, que Rober Houdin fue en el siglo XIX, el primero en utilizar la electrnica. Su juego ms famoso era la maleta pesada o liguera, en la que se empleaba un electroimn. A continuacin tendramos a Anverdi, Klingsor y Christian Fechner (los tres ya fallecidos), y despus cronolgicamente estara l. Como l mismo comenta, l ha podido aprovecharse de la miniaturizacin de los elementos detalle que sus
2
Juan Mayoral ha sido uno de los magos modernos en revolucionar el mundo de la magia utilizando elementos electrnicos. Es conocido mundialmente por sus novedosas invenciones y posee el primer premio FISM de 1991 en Suiza en la categora de magia general.
predecesores no han podido disfrutar. A partir de entonces, la electrnica y telecomunicaciones en general se pusieron al alcance de todo el mundo. Teniendo en mente esto, decid investigar y ponerme en contacto con diferentes magos de Espaa y pregunt por el tipo de dispositivos electrnicos utilizados actualmente. Rpidamente nos dimos cuenta de que no exista gran variedad. A excepcin de algunos, todos consistan en un emisor/receptor de radiofrecuencia (433Mhz habitualmente) conectados a algn tipo de servomecanismo, el cul mova o realizaba alguna accin. Como ejemplo, podramos citar una campana sostenida entre dos cuerdas que suena misteriosamente a la orden del ilusionista. En este caso, el trucaje est en la base donde cuelga la campana. Existe un pequeo motor que gira 45 un imn y debido a que el badajo de la campana es de hierro es atrado por el imn. Al golpear la superficie de la campana se produce el sonido. Despus de observar este patrn emisor-receptor-servo decid buscar ideas de trucos electrnicos que implicaran algn tipo de procesamiento de seal. Y de momento, slo unos pocos juegos son de este estilo. As pues, desarroll unas cuantas ideas, me reun con mis compaeros, comparamos las ventajas y desventajas de las diferentes alternativas as como el rango de aplicaciones mgicas de cada opcin y elegimos la idea que a continuacin os presento como proyecto fin de carrera.
Las clulas de cargas o load cells. Son capaces de obtener una gran sensibilidad, aunque su funcionamiento es complejo a causa de ser un elemento activo y tener la necesidad de alimentacin. Este transductor convierte la fuerza ejercida en una seal elctrica mediante el uso de cuatro galgas extensiomtricas colocadas en configuracin tipo Puente de Wheatstone. La salida elctrica de este tipo de transductores son de muy bajo rango y es necesario una etapa de amplificacin posterior para su lectura (Senel Technologies S.A, 2013).
Por razones de sensibilidad optamos por el uso de load cells. Sus parmetros a tener en cuenta son: a) Rated load: Carga nominal de la clula, es decir, el peso mximo que es capaz de medir de forma lineal.
b) Rated output: Salida nominal de la clula. Su unidad es / que nos genera 1 por cada de alimentacin cuando el sensor est a carga mxima. A mayor valor, menor ser la amplificacin necesaria. c) Zero output: Salida de la clula de carga sin estar sometida a ninguna carga. Se mide en porcentaje del fondo de escala % . .
e) Precision temperature: Variabilidad de nuestra salida segn la temperatura a la que se encuentre el sensor. Al igual que los dos anteriores se mide en porcentaje del fondo de escala % . .
d) Overall precision: Precisin de sensibilidad que disponemos en nuestro transductor. Al igual que el anterior se mide en porcentaje del fondo de escala % . .
f) Safety Overload: Sobrecarga mxima que aguanta el sensor sin averiarse, generalmente es un 150 % del valor de carga nominal. g) Recommend excitation Voltage: Voltaje de alimentacin recomendado por el fabricante del transductor. Es de vital importancia que est conectado a una fuente regulada de tensin, para evitar errores en la lectura del transductor.
Para ayudar a entender y afrontar qu nos encontramos en una load cell estndar, vase el siguiente clculo (Anastasios Karidis, 2011): Especificaciones: -Carga nominal de 3 -Salida nominal de 1 / -Alimentacin de 10 -Precisin 0.04 % . -Precisin por temperatura 0.01 % .
10
A carga completa (3) el sensor generar 10 , es decir, una seal de salida de:
3000
= 0.0034 mV/g.
El error de precisin por temperatura lo podemos descartar por ser menor y fijo. Por lo tanto el mnimo cambio de salida en el sensor que vamos a detectar es 0.004 . Sin tener que analizar nada observemos que el mnimo cambio distinguible es mayor que un gramo, debido a que el error es mayor que la propia precisin por gramo. Con este sensor genrico encontraremos
= 0.004 .
problemas a la hora de poder diferenciar cartas, ya que el peso de una carta (1.7 ) ser: y apenas superar en un 40 % el error de la medida. Si sumamos los futuros problemas que tendremos con el CAD 3 del kit Arduino, ms errores de calentamiento y simples imprecisiones de la tensin de alimentacin u oscilaciones, hace que la load cell aqu expuesta no sea correcta al no disponer de un amplio margen de sensibilidad. Para poder disponer de un mayor margen lemos los catlogos de fabricantes y nos pusimos en contacto con distintas empresas del sector con el fin de localizar un sensor que se adapte a nuestras especificaciones. Consultando el precio de un sensor que se adaptaba al proyecto, obtuvimos una respuesta de 490 . Finalmente decidimos ceder en los requerimientos de carga nominal, la cual reduje hasta 1 , y calidad del sensor por el elevado precio. La siguiente load cell fue comprada directamente a la distribuidora AliExpress, la cual importa desde Mainland (China) a un precio de 9.89$/unidad (Aliexpress, 2012). 1.7 0.0034 / 0.0057
Figura 4. Load cell de un kilogramo. Obsrvese el tamao reducido, y los cuatro orificios para fijar el sensor y la bandeja.
Conversor analgico digital. De aqu en adelante nos referiremos a el por sus siglas.
10
Product Name Rated Load Rated Output Zero Output Overall Precision Precision Temperature Working Temperature Compensated Temperature Range Safety Overload Recommend Excitation Voltage Max Excitation VoltageM Total Size Thead Hole Diameter Cable Length Material Color Weight Package Content
Load Cell 1Kg/2.2lbs 1mV/V 0.05%F.S 0.02%F.S 0.02%F.S -10C~+50C -10C~+40C 150% 10V DC 15V DC 80 x 13 x 12mm / 3.1" x 0.5" x 0.47"(L*W*T) 3.5mm / 0.138" 4.3mm / 0.169" 230mm/ 9'' Aluminium Alloy Silver Tone 29g 1 x Load Cell
Si realizamos los mismos clculos para la load cell adquirida: A carga completa (1 ) generamos una salida de 10 , o una seal de salida de:
1000 10
= 0.01 /.
Esta vez la lectura de un gramo supera en un 500 % la precisin del error que disponemos, lo que no asegura un margen ms amplio de error. Cabe remarcar este margen de seguridad, ya que el comportamiento del sensor es bastante diferente de la teora que pone en los manuales. Gracias a que garantizamos un gran rango de seguridad, hemos logrado conseguir que todo funcione segn lo previsto y ser capaz de distinguir las cartas sin fallos.
= 0.002 .
11
Por ltimo, aadimos una bandeja al sensor para poder situar el tapete encima, y tener una superficie de juego para el correcto empleo de las cartas y objetos. El material empleado ser el metacrilato con el fin de no sobrecargar el sensor y no reducir nuestro rango de funcionamiento.
12
= 500 .
Si lo expresamos en Voltios:
= 0.9765625 /. = 4.8828 /.
Esto no es un buen dato, ya que la misma limitacin del rango del CAD nos deja muy poco rango para discernir entre varias cartas. Estamos restringiendo la sensibilidad del sensor, imponiendo un rango de lectura del CAD demasiado grande. Para ilustrar lo referido, hacemos esta pequea tabla;
210
Salida del sensor antes de la amplificacin 0.01 1.7 = 0.017 0.01 3.4 = 0.034
Salida del sensor tras la amplificacin Lectura del CAD (multiplicamos por 500) (4.8828 /) 8.5 17 1.7408 = 2
3.4816 = 3
13
Tabla 2.Clculo de la lectura del CAD en funcin de las cartas situadas sobre el sensor. Amplificacin de 500 unidades.
0.01 = 0.051 0.01 6.8 = 0.068 0.01 8.5 = 0.085 0.01 10.2 = 0.102 5.1
25.5 34 42.5 51
La consecuencia es que cualquier mnimo error que modifique el ltimo o los dos ltimos bits nos impedir distinguir las cartas4. Despus de esta tabla, Qu debemos modificar para poder mejorar nuestra resolucin en el CAD? La respuesta es amplificar nicamente la regin deseada, que hemos acotado de 0 60 cartas5. El clculo para amplificar solamente esa regin es: Es decir, vamos a amplificar 10 veces ms, o lo que es lo mismo 5000 . Con este resultado una baraja de 60 cartas situada encima del sensor, generar una salida de 5 aproximadamente y si situsemos 1 en el sensor obtendramos 10 5000 = 50 6. Al realizar esta modificacin, la lectura de nuestro CAD no va a disminuir la sensibilidad de nuestro sensor, es decir, el que limita que no podamos discernir un peso ms pequeo no va a ser el CAD, sino el propio sensor. Esa amplificacin nos permite obtener en la lectura un mximo de tres bits del CAD incorrectos y aun as ser capaces de dar una respuesta correcta, ya que las diferencias mostradas ahora en el CAD entre carta y carta son unas 17 18 7. Reescribiendo la tabla anterior con la nueva amplificacin podemos observar como disponemos de una gran distancia entre las medidas.
6F
60
4 5
Debido a la sensibilidad y calidad del sensor los ltimos bits del CAD variarn arbitrariamente. Con el objetivo de poder utilizar diferentes barajas que posean distinto peso. 6 Este resultado sera hipottico ya que estara limitado por la alimentacin y el amplificador. 7 A partir de cuatro bits, superaramos la mitad de la distancia y no podramos discernir correctamente; 24 = 16 > 9.
14
Nmero de cartas sobre el sensor 1 (1.7) 2 (3.4) 3 (5.1) 4 (6.8) 5 (8.5) 6 (10.2)
Tabla 3. .Clculo de la lectura del CAD en funcin de las cartas situadas sobre el sensor. Amplificacin de 5000 unidades.
Salida del sensor antes de la amplificacin 0.01 1.7 = 0.017 0.01 3.4 = 0.034 0.01 5.1 = 0.051 0.01 6.8 = 0.068 0.01 8.5 = 0.085 0.01 10.2 = 0.102
Salida del sensor tras la Lectura del CAD amplificacin (4.8828 /) ( ) 85 17.408 = 17
-Punto 3. Es imprescindible colocar un limitador de tensin para asegurar que la tensin recibida por el CAD no sea nunca superior a 5 aunque aadamos ms peso sobre la superficie de la mesa. Si superamos ese lmite podra causar daos en el kit Arduino. -Punto 4. Por ltimo necesitamos buscar la forma de realizar la llamada puesta a cero. Con este recurso podemos quitar de nuestra medida el peso inicial de la bandeja, el tapete, y todos aquellos elementos que influyan desde el inicio en el sensor8. Haber definido claramente los puntos a cumplir por el circuito de acondicionamiento de la seal, nos ha facilitado enormemente la labor de solventar los problemas. Solucionaremos el punto 3 por medio de la utilizacin de un diodo Zenner a 5 , y el punto 1, punto 2 y punto 4 lo conseguimos resolver gracias al amplificador de instrumentacin INA125 y un pequeo divisor resistivo, con alimentacin regulada, que nos permitir realizar la puesta a cero generando la tensin deseada a restar en la salida del sensor.
8
Factores como la presin, viento o gravedad podran causar cambios de gramos en el sensor.
15
El datasheet recomienda el uso de resistencias con tolerancias menores o iguales al uno por ciento. Para una amplificacin de 5000 debemos disponer de una resistencia de 12 .
-Offset trimming incorporado en el amplificador en uno de los pines del encapsulado. Este pin nos posibilitar restar a la salida cualquier tensin para poder alcanzar una correcta puesta a cero. -Wide supply range, nos permite alimentar a Single Supply de 2.7 hasta 36 o Dual Supply de 1.35 hasta 18 . A causa de la utilizacin del Offset trimming nos ser obligatorio alimentar el circuito con una fuente dual. Llegado a este punto del trabajo somos capaces de generar una seal analgica variable entre 0 y 5 Voltios segn qu cantidad de naipes sean
16
colocados en la plataforma. Para finalizar la informacin sobre el INA125, expongo la configuracin de pines y un esquema del mismo 9.
17
Figura 8. Esquemtico del circuito diseado para acondicionar la seal del sensor de carga. Realizado con el programa EAGLE.
10
18
En el esquemtico 1 se localiza el amplificador INA125 en la parte izquierda. Los Pines 6 y 7 son la entrada del amplificador. Estos 2 pines son la pequea seal que genera el puente de Wheatstone en la load cell. Entre los pines 8 y 9 situamos la resistencia Rg 11. En el pin 12 vemos la referencia a GND. El pin 4, es el que conectado con alguno de los pines 13, 14, 15 o 16 genera los correspondientes voltajes de referencia 1.24V, 2.5V, 5V o 10V correspondientemente. En los pines 10 y 11 observamos la seal de salida tras la amplificacin de la entrada as como el diodo Zenner que limita la tensin de salida a 5 , estos pines van unidos por definicin. Y en los pines 1 y 3 se encuentra la alimentacin del amplificador. El pin 2 (sleep mode), no va a tener uso, por lo que lo conectamos a +. Por ltimo conectado al pin 5, tenemos dos jumpers para poder elegir si restar una tensin positiva o negativa. Son dos pequeos circuitos con dos reguladores de tensin (uno positivo y otro negativo) y un divisor de tensiones. Segn se rote la rueda del potencimetro correspondiente, sumaremos o restaremos la cada de tensin en JP1 y JP3 a la seal de salida del INA125. Los 2 reguladores de tensin utilizados 12 son LM337 (Texas Instruments, 2004) (negativo) y el uA7800 (Texas Instruments, Revised 2012) (positivo). Tanto el INA125, y todos los reguladores de tensin utilizados, fueron adquiridos de las muestras gratuitas cedidas por Texas Instruments.
Figura 9. Esquemtico del circuito diseado para facilitar las entradas a los displays 7-segmentos. Realizado con el programa EAGLE.
Se colocaron cuatro espacios en el diseo para dar la posibilidad de ajustar la resistencia a un valor muy concreto. 12 En los diferentes datasheets se puede consultar la posicin y utilidad de los condensadores aadidos.
El esquemtico 2 es de los displays de 7-segmentos. Son displays AC (nodo Comn) y colocamos los pines correspondientes para poder conectar directamente todos los cables al kit Arduino y ser capaces de controlarlos con el microcontrolador. Se asign la resistencia tpica de valor 330 en el pin de
11
19
activacin para alimentar los displays a 5 sin quemarlos (salida de los pines digitales de propsito general del kit Arduino). Una vez diseado el esquemtico, la realizacin del Layout fue muy sencilla, quedando como resultado el siguiente esquema, en donde las lneas rojas marcan la capa superior, y las azules la capa inferior.
Figura 10. Layout del circuito acondicionador del sensor. Realizado con el programa EAGLE.
Figura 11. Layout del circuito para facilitar las entradas a los displays 7-segmentos. Realizado con el programa EAGLE.
20
Tras esquematizar el Layout, convertimos este diseo a formato GERBER y de ah a CircuitCAM, con el fin de poder elaborar el corte en el laboratorio 13. Una vez impresos los circuitos, soldamos todos los componentes a la placa, quedando el siguiente resultado;
Figura 13. Circuito para faclitar las entradas a los displays 7-segmentos.
Agradezco a Luis Javier Reina Tosina la ayuda prestada para realizar en el laboratorio la placa de este circuito (profesor titular de la Universidad y del departamento de Teora de la seal y Comunicaciones).
13
21
Arduino Duemilanove es la ms avanzada revisin del primer entorno de desarrollo bsico creado por Arduino. Debe su nombre italiano al ao 2009, fecha en la cual fue lanzado el producto; sus caractersticas ms importantes son las siguientes:
14 15
Xbee ser explicado en el siguiente punto Ninguno de los precios contiene el IVA
22
Microcontrolador Voltaje de funcionamiento Voltaje de entrada (recomendado) Voltaje de entrada (lmite) Pines E/S digitales Pines de entrada analgica Intensidad por pin Intensidad en pin 3.3V Memoria Flash SRAM EEPROM Velocidad de reloj
ATmega368 5V 7-12V 6-20V 14 (6 proporcionan salida PWM) 6 40 mA 50 mA 32 KB de las cuales 2 KB las usa el gestor de arranque (bootloader) 2 KB 1 KB 16 MHz
A su vez Duemilanove es compatible con Xbee Shield, el cual es una ampliacin de la placa que puede ser emplazada encima de la anterior, dando la posibilidad de conectar en un zcalo habilitado para ello un mdulo Xbee. Esta configuracin es muy cmoda ya que permite conectar debidamente el mdulo sin necesidad de perder ningn pin. Este pack estar localizado dentro de la mesa, al lado del sensor. La funcin principal del dispositivo ser la de ir leyendo constantemente la seal analgica del sensor. Una vez recibida y digitalizada, el microcontrolador trabajar con diferentes subrutinas segn lo que se le comande. Los objetivos primordiales son tener la capacidad de representar en dos displays 7-segmentos el nmero de cartas ledas, realizar una puesta a
23
cero del sensor, enviar el resultado al Arduino Fio mediante Xbee y detectar el nmero de naipes que han sido cortados 16 (Arduino, 2005-2013).
Figura 15. En la imagen izquierda se encuentra el Xbee Shield. A la derecha, la superposicin de Xbee Shield y el Arduino Duemilanove
Arduino Fio ha sido fundamentalmente desarrollado para el uso en aplicaciones inalmbricas, donde el espacio y consumo son importantes. La placa tiene incorporado un zcalo para un mdulo Xbee, debido a eso no es imprescindible el uso de una expansin (Shield) como en el caso anterior. Sus principales caractersticas son:
Microcontrolador Voltaje de trabajo Voltaje de Entrada Voltaje de Entrada en Carga Pines E/S Digital Pines de Entrada Analgica Corriente DC por pin E/S Memoria Flash SRAM EEPROM Frecuencia de Reloj ATmega328P 3.3V 3.35 -12 V 3.7 - 7 V 14 (6 proporcionan salida PWM) 8 40 mA 32 KB de los cuales 2 KB las usa el gestor de arranque (bootloader) 2 KB 1 KB 8 MHz
Cortar en este mbito se refiere a la accin de levantar un grupo de cartas de la baraja, colocarlas al lado y colocar las restantes encima de las anteriores.
16
24
Figura 16. En la imagen izquierda tenemos el esquema general del Arduino FIO. A la derecha, instalado con el mdulo Xbee
Adems de por sus caractersticas, el Arduino Fio ha sido elegido por su tamao (1.1 x 2.6 pulgadas), el cual facilita su ocultamiento en diferentes localizaciones. La funcin principal del segundo kit, ser la de recibir a tiempo real el resultado calculado por el Arduino Duemilanove y mostrarlo en dos displays 7-segmentos. Simultneamente dispondremos de la posibilidad de mandar las diferentes rdenes al sistema situado en la mesa mediante el uso de distintos pulsadores (Arduino, 2005-2013). 4.1.3. Mdulos Xbee
Xbee es el nombre de fbrica de Digi International para una familia de mdulos compatibles de radio. El mayor productor de estos mdulos es la empresa MaxStream, que fue la primera en comenzar la distribucin con la homologacin oficial en 2005. Estn basados en el estndar IEEE 802.15.4, que fija las comunicaciones por aire punto a punto y punto a multipunto a una tasa variable de hasta 250 /. Sus caractersticas principales son parecidas a las del protocolo de comunicaciones para redes de sensores Zigbee, es decir, bajo consumo de potencia (1 100 ), capacidad para crear redes con identificadores nicos bajo un coordinador y un rango de hasta 25 en sus ltimas versiones. Adems ofrecen una interfaz serial, 9 entradas/salidas analgicas y digitales y un rango de 65.000 direcciones para cada uno de los 16 canales disponibles. Para el proyecto hemos seleccionado el Xbee 2mW PCB Antena Series 2-, que nos proporciona una distancia de hasta 120 (30 en interiores) con un consumo limitado en 2 .
Xbee provee dos procedimientos de comunicacin: transmisin serial transparente (modo AT) y el modo API. En la primera de ellas, el mdulo sustituye una lnea serie, encolando todo dato recibido por el UART a travs del pin DIN para transmitir por radio. La segunda opcin trabaja con una interfaz
25
ms compleja. Est basada en frames, y la interaccin del mdulo con el sistema se realiza utilizando estructuras predefinidas para la entrada y salida (Xbee, 2009-2013) (Digi Internacional, 1996-2013).
La compatibilidad existente entre los kits Arduino simplificar enormemente la programacin del sistema, y nos permitir servirnos con funciones ya predefinidas. Una vez conectados y configurados los mdulos Xbee podremos escribir y leer por el puerto serie asegurando que estaremos estableciendo una comunicacin directa, segura e inalmbrica entre los Arduinos.
Comando ID CH SH y SL
El nmero serie del mdulo Xbee 0Diferente para (SH devuelve los 32 bits 0xFFFFFFFF cada mdulo superiores, SL los 32 inferiores). De solo(para lectura. ambos SH y SL) La direccin de 16-bit del mdulo. 0 - 0xFFFF 0
MY
26
DH y DL
La direccin de destino para las comunicaciones inalmbricas (DH son los 32 bits superiores, DL son los 32 inferiores). La velocidad de transmisin usada para las comunicaciones con el Arduino o el ordenador.
00 (para 0xFFFFFFFF ambos DH y DL) (para ambos DH y DL) 0 (1200 bps) 1 (2400 bps) 2 (4800 bps) 3 (9600 bps) 4 (19200 bps) 5 (38400 bps) 6 (57600 bps) 7 (115200 bps) 3 (9600 bps)
BD
En primer lugar los dos mdulos Xbee tienen que situarse en la misma red definida por el valor de ID, asimismo deben estar en el idntico canal precisado por el valor de CH. Finalmente la direccin destino ser dada por DH y DL y especificar qu mdulo en esa red y canal recibir los datos transmitidos. Por supuesto existen posibilidades de enviar mensajes broadcast a todos los mdulos dentro de un canal y red determinado fijando valores especiales en los registros DH y DL. En la bibliografa estn disponibles todos los casos posibles as como las rdenes de entrada, salida, restaurar valores de fbrica y guardado para los Xbee. Digi International suministra un software de configuracin con el fin de simplificar esta tarea. El programa X-CTU posee con una interfaz sencilla y una amplia base de datos con los diferentes mdulos existentes. Permite obtener el valor de los registros, as como modificarlos en un instante sin necesidad de conocer los comandos adecuados (Digi Internacional, 1996-2013). Para el proyecto el mdulo Xbee correspondiente a la mesa (localizado en el Arduino Duemilanove) fue elegido como coordinador y todos los datos emitidos son transmitidos a todo el canal (modo API). El planteamiento fue de realizar la comunicacin punto a multipunto para ser capaz de adaptar cualquier ampliacin del sistema, y permitir recibir los datos del sensor de la mesa sin necesidad de modificar nada. Tambin se escogi la velocidad ms rpida disponible 115200 (BD 7) con el fin de evitar cualquier tipo de retraso. El segundo mdulo Xbee (Arduino Fio) fue definido como end device y podr comunicarse con el coordinador y recibir los mensajes de ste.
27
28
29
Activacin de los displays de 7-segementos Para evitar el uso de salidas digitales diferentes en cada display, stos nunca se encienden simultneamente. La conmutacin se realiza en intervalos de 20 para que sea imperceptible al ojo humano. Puesta a cero digital Con el objetivo de disponer de un valor digital lo ms preciso posible de una carta se realizan dos mediciones. La primera de ellas se realiza sin ningn tipo de peso sobre el sensor (plataforma y el tapete), y la segunda lectura aadiendo el peso de la baraja seleccionada para trabajar. Una vez realizado esto, se restan los valores y se obtiene el valor digital de una carta. Ese nmero ser el escogido posteriormente en todos los clculos.
30
En las siguientes imgenes se pueden observar con mejor detalle el emplazamiento de cada una de las partes del circuito, adems de mostrar las perforaciones necesarias para los interruptores On/Off y los displays 7segmentos.
Figura 20. Sistema completo en el interior del tablero. De izquierda a derecha: Interruptores On/Off, circuito de acondicionamiento de la seal, sensor, displays 7-segmentos, Arduino Duemilanove+ Xbee Shield, circuito regulador de tensin y bateras.
La altura mxima permitida con estas medidas es de 2.6cm. El arduino Duemilanove + Xbee Shield dispone de esa medida.
17
31
Figura 21. Vista lateral del tablero. Obsrvese las dos perforaciones realizadas para acceder a los interruptores.
Figura 22. Vista lateral del tablero. Perforacin realizada para la colocacin de los displays 7-segmentos.
El sensor est ubicado debajo de la plataforma de metacrilato 18 de 2mm de espesor. La plataforma se divide en dos capas para adquirir una mayor estabilidad. El segundo nivel sobresale ligeramente 1.5 mm por encima de la superficie del habitculo con el fin de focalizar el peso de los naipes sobre el tapete. Adems, existe una holgura aproximada de 0.5mm entre los 4 laterales de la superficie y la plancha de metacrilato.
Como ya se coment, el uso del metacrilato fue crucial para poder poseer una superficie resistente y a la vez ligera.
18
32
Figura 23.Sistema cubierto con la tapa del tablero, en el medio se encuentra el sensor con la primera plancha de metacrilato.
33
Figura 25. Sistema cubierto con la tapa del tablero, en el medio el sensor ya queda cubierto por la segunda tapa de metacrilato, ajustada por milmetros a los bordes de la tapadera.
Existen diversas alternativas donde ubicar el sistema receptor. No se debe de olvidar que ser con el que podamos controlar la mesa y por ello debe de ser accesible en todo momento. Por todo lo anterior, localizamos el receptor en el interior de la chaqueta del ilusionista. Los displays 7-segmentos y el Arduino Fio sern cosidos y fijados en la manga izquierda de la chaqueta. Adems se colocarn varios interruptores en el lado izquierdo y uno de los pulsadores dentro del zapato derecho. Como se explicar en un apartado posterior, esta configuracin permitir el manejo sin sospechas del conjunto.
34
5.2. Bateras
Para el correcto funcionamiento del equipo es imprescindible el uso de tres fuentes de alimentacin. Las bateras del circuito de acondicionamiento de la seal y sensor son cuatro pilas recargables 9.0 350 Ni-MH 17R8H. Obtendremos una tensin de 18 que, tras ser regulada, alimentar al amplificador INA125 a 12.35 V. Para los dos kits Arduinos sern destinadas 2 bateras recargables AA 7.2 1800 Ni-MH.
35
Figura 27. A la izquierda se muestran las pilas de 9V para alimentar el circuito acondicionador del sensor, a la derecha la batera del Arduino.
Debido al elevado consumo de los Arduinos 19 el tiempo prctico de funcionamiento es de 8 horas. Sin embargo, las bateras de 9V perduran hasta un mximo de 24 horas (10mAh de consumo). No hay que olvidar fijar una tierra comn en el circuito instalado en la mesa. De otra manera, sera imposible realizar la correcta lectura de la seal analgica.
5.3. Camuflaje
Uno de los aspectos primordiales en el mundo de la magia al manejar objetos poco comunes, es transmitir la sensacin de claridad. En nuestro caso, una mesa es un elemento ya conocido por los espectadores y eso es una gran ventaja. La mayora de las personas estn familiarizadas con la idea de los naipes, los casinos, tapetes de cartasetc. Gracias a esto, forraremos nuestra superficie con una tela. Este tejido camuflar diferentes cosas: -Ocultar los pulsadores de encendido y apagado. Tambin esconder los displays 7-segmentos cuando estn apagados.
19
Existen pocos datos tcnicos del consumo del dispositivo. Alrededor de 100 mAh.
36
-Har inexistente la divisin del tablero de madera, evitando as la presencia de que la mesa est construida en dos partes. Por ltimo situamos un tapete de cartas por esttica y para focalizar la atencin al centro. Como puede observarse en la imagen, se hace totalmente imperceptible el sistema creado.
Figura 28. Situacin final del tablero. Obsrvese como son imperceptibles los orificios laterales.
37
6. Funcionamiento y Aplicaciones mgicas. El ilusionista dispone de dos grupos de displays 7-segmentos donde
poder mirar el nmero de cartas sobre el sensor para dar la posibilidad al mago de actuar tanto de pie ante el pblico como sentado. Los displays son activados con un interruptor localizado encima del dedo pulgar del pie derecho, dentro del calcetn. Esta preparacin es forzosa puesto que al actuar de pie focalizamos ms la atencin en nosotros, y nos es mucho ms difcil ocultar el movimiento de pulsar un botn con las manos. De esta forma, nuestras manos quedan libres. Mediante uno de los pulsadores de la chaqueta podemos alternar entre mostrar los resultados en la manga, o en el borde de la mesa. Para la ejecucin perfecta de los efectos hay muchos factores que entran en juego. Empezando por la construccin del efecto mgico a la correcta utilizacin del sistema, por ejemplo, se debe de explicar perfectamente al espectador la manera y forma de manejar y colocar las cartas sobre la mesa, para facilitar esto, podemos realizar nosotros antes los movimientos y as el pblico copiar nuestras acciones. Tambin tenemos que aprovechar los momentos de distraccin generados para hacer los vistazos a los displays y averiguar el nmero de cartas sin que puedan llegar a descubrir el secreto. Llegar a entender en un primer instante todas las aplicaciones mgicas del proyecto realizado implicara poseer un entendimiento muy elevado en el arte del ilusionismo. Como ejemplo el dispositivo nos permite localizar cartas, realizar forzajes, distinguir entre diferentes objetos, adivinaciones directas de cartas etc. Ya que ste no es el objetivo primordial del trabajo, pasaremos por alto la explicacin detallada de cada aplicacin. No obstante, en el apndice final pueden consultarse pequeos ejemplos con el fin de ilustrar al lector la potencia del sistema desarrollado.
38
39
8. Conclusiones
Tras los resultados obtenidos, manifestamos nuestra plena satisfaccin por todo lo ejecutado. La resolucin obtenida, la velocidad de transmisin, la duracin de las bateras y la cantidad aplicaciones mgicas descubiertas, superan con creces la idea inicial del proyecto planteado. Pese a que existen una multitud de mejoras ya comentadas, y si volviramos a comenzar el proyecto modificaramos el diseo, la elaboracin de este trabajo nos ha permitido adquirir una gran cantidad de conocimientos prcticos sobre las materias recibidas durante los estudios universitarios. Hemos reafirmado los conocimientos sobre electrnica, diseo de circuitos, instrumentacin, envo y recepcin de seales y programacin. Adems tambin son de gran valor las competencias conseguidas en el contacto con diferentes proveedores y en la bsqueda y recopilacin de datos para el proyecto. Por ltimo, en Junio pretendo presentar el proyecto en el 32 Congreso Nacional de magia en la categora de invencin. Me gustara agradecer enormemente la oportunidad recibida para realizar algo que quizs est algo apartado de un clsico proyecto fin de carrera, pero que me ha generado ilusin y ganas para crear algo nuevo.
40
41
Senel Technologies S.A. (25 de Februar de 2013). http://celdasdecarga.blogspot.com.es/. Recuperado el March de 2013, de http://celdasdecarga.blogspot.com.es/ Texas Instruments. (2004). Texas Instruments. Retrieved December 2012, from http://www.ti.com/lit/ds/symlink/lm137.pdf Texas Instruments. (Revised 2012, August). Texas Instruments. Retrieved December 2012, from http://www.ti.com/lit/ds/symlink/ua7805.pdf Wikipedia. (s.f.). Bicycle. Recuperado el February de 2013, de Playing card: http://en.wikipedia.org/wiki/Playing_card Wikipiedia. (2009). Wikipedia. Recuperado el December de 2012, de http://es.wikipedia.org/wiki/Arduino Xbee. (2009-2013). Xbee.CL Mdulos de transmisin inalmbrica. Recuperado el December de 2012, de http://www.xbee.cl/
42
43
3) Mientras el espectador cuenta coger el resto de la baraja y contar desde abajo 52 X cartas. Cortar por las cartas contadas, quedando as el As de corazones en la posicin correcta. Colocar de nuevo la baraja en la mesa 4) Pedir al espectador que cuente el nmero de cartas que cort en el otro montn. Y que seleccione la carta. La carta que elegir el espectador no ser otra que el As de corazones. Diferenciacin de objetos: Con esta idea somos capaces de averiguar que objeto falta de un grupo dentro de un habitculo cerrado. Como ejemplo, pensemos en un monedero y en 3 monedas. Una de plata, otra de cobre y otra de oro. Es importante que las monedas posean un peso muy diferente entre ellas. Anteriormente medimos el monedero con todas las combinaciones posibles de monedas en su interior. Es decir, medimos el monedero con la/s moneda/s: -Vaco. -Plata. -Cobre. -Oro. -Plata y cobre. -Plata y oro. -Cobre y oro. Plata, cobre y oro. Memorizar cada resultado no ser problema debido a la gran diferencia de pesos de las monedas. Una vez sabido esto, tan solo queda contar al espectador que puede escoger cualquier combinacin de monedas del interior y guardrselas en el bolsillo, mientras nosotros nos damos la vuelta y no miramos. Con tan solo mirar el resultado de la medicin sabremos que moneda escogi el espectador. Adivinacin inmediata de la carta elegida: En este efecto vamos a combinar nuestro proyecto con las barajas en posicin de mnmonica. En el mundo de la Cartomagia existen multitud de barajas ordenadas de diferentes maneras, que ofrecen la posibilidad al ilusionista de saber la carta seleccionada del espectador con tan slo mirar la carta anterior o posterior a esta o saber la posicin de la carta en la baraja. Como ejemplo pensemos en que tenemos una baraja ordenada de As a Rey y por palos Picas, Corazones, Diamantes y Trboles. Nadie sabe que la baraja est ordenada, y sabemos que la carta de
44
abajo es el As de picas. A continuacin pedimos al espectador que corte por donde quiera, y escoja la caja de corte. En el momento del corte realizamos la medicin y obtenemos que sobre la mesa todava quedan 33 cartas. Con ese nmero ya podemos saber que la carta elegida ser la nmero 34, es decir, el 8 de Diamantes (13+13+8). Con todos estos efectos, hemos intentado que el lector comprenda las posibilidades que ofrece el proyecto. En definitiva, esta parte del proyecto entra ms profundamente en el mundo del ilusionismo y por ello consideramos que no es adecuado desarrollarlo extensamente. En las futuras lneas de trabajo queda pendiente realizar una recopilacin de todas las tcnicas, efectos y usos posibles.
45
//Si su valor es 0, no se muestra en el borde de la mesa, si es 1 si se //muestra // Nmero de cartas que tiene que sobrepasar para que se considere //"corte"
float peso_base=0; //Variables utilizadas para la calibracin del sensor float peso_carta=0; float numero_cartas=00; int cifra1; int cifra2; int i; int a; // primera cifra a mostrar en los displays // segunda cifra a mostrar en los displays //variable para bucle //variable para bucle
// La rutina setup solo se inicia una vez al resetar void setup() { // Inicializamos los pines como salidas y entradas pinMode(barra1, OUTPUT); pinMode(barra2, OUTPUT); pinMode(barra3, OUTPUT); pinMode(barra4, OUTPUT); pinMode(barra5, OUTPUT); pinMode(barra6, OUTPUT); pinMode(barra7, OUTPUT); pinMode(activacion1,OUTPUT); pinMode(activacion2,OUTPUT);
46
// Fijamos la velocidad de la conexin serie Serial.begin(115200); delay(5000); //Calculamos el peso base de la plataforma sin cartas. for(a=0; a<10000;a++) { valor_analogico= analogRead(analogPin); numero_cartas=numero_cartas+valor_analogico; } numero_cartas=numero_cartas/10000; peso_base=numero_cartas; mostrar_numero(round(peso_base)); //Calculamos el peso de una carta delay(5000); numero_cartas=0; for(a=0;a<10000;a++) { valor_analogico=analogRead(analogPin); numero_cartas=numero_cartas+valor_analogico; } numero_cartas=numero_cartas/10000; peso_carta=(numero_cartas-peso_base)/numero_carta_baraja; } //Funcin para mostrar los dgitos en los displays 7-segmentos void mostrar_numero(float numero) { numero=round(numero); cifra1=floor((numero)/10); cifra2=round(((numero/10)-cifra1)*10); for (i=0; i < 20; i++) { digitalWrite(activacion1,HIGH); switch (cifra1) { case 0: display(1,0,0,0,0,0,0); break; case 1: display(1,1,1,0,1,1,0); break; case 2:
47
} delay(10); digitalWrite(activacion1,LOW); digitalWrite(activacion2,HIGH); switch (cifra2) { case 0: display(1,0,0,0,0,0,0); break; case 1: display(1,1,1,0,1,1,0); break; case 2: display(0,1,0,0,0,0,1); break; case 3: display(0,1,0,0,1,0,0); break; case 4: display(0,0,1,0,1,1,0); break; case 5: display(0,0,0,1,1,0,0); break; case 6: display(0,0,0,1,0,0,0); break;
display(0,1,0,0,0,0,1); break; case 3: display(0,1,0,0,1,0,0); break; case 4: display(0,0,1,0,1,1,0); break; case 5: display(0,0,0,1,1,0,0); break; case 6: display(0,0,0,1,0,0,0); break; case 7: display(1,1,0,0,1,1,0); break; case 8: display(0,0,0,0,0,0,0); break; case 9: display(0,0,0,0,1,0,0); break;
48
} digitalWrite(activacion1,LOW); digitalWrite(activacion2,LOW); }
} delay(10); digitalWrite(activacion2,LOW);
//Funcin que enciende los displays void display(int a,int b, int c, int d, int e, int f, int g) { digitalWrite(barra1,a); digitalWrite(barra2,b); digitalWrite(barra3,c); digitalWrite(barra4,d); digitalWrite(barra5,e); digitalWrite(barra6,f); digitalWrite(barra7,g); } // Rutina principal, se ejecuta en bucle. void loop() { // La rutina principal consiste en leer el peso del sensor, enviarlo por el puerto serie, // mostrarlo en los displays si procede y ver si tenemos alguna seal de los interruptores del //receptor. numero_cartas=0; for(a=0; a<1000; a++) { valor_analogico=analogRead(analogPin); numero_cartas=(numero_cartas+valor_analogico); } numero_cartas=numero_cartas/1000; cartas_enviadas=round((numero_cartas-peso_base)/peso_carta); Serial.write(cartas_enviadas); if(visualizar==1) { mostrar_numero(cartas_enviadas); } else
49
delay(200); if(Serial.available()>0) { valor_recibido= Serial.read(); switch(valor_recibido) { case 1: //Este caso es el RESET delay(2000); //Calculamos el peso base de la plataforma sin cartas. for(a=0; a<10000;a++) { valor_analogico= analogRead(analogPin); numero_cartas=numero_cartas+valor_analogico; } numero_cartas=numero_cartas/10000; peso_base=numero_cartas; mostrar_numero(round(peso_base)); //Calculamos el peso de una carta delay(5000); numero_cartas=0; for(a=0;a<10000;a++) { valor_analogico=analogRead(analogPin); numero_cartas=numero_cartas+valor_analogico; } numero_cartas=numero_cartas/10000; peso_carta=(numero_cartas-peso_base)/numero_carta_baraja; break; case 2: //Este caso es el corte numero_cartas=0; frontera=0; cartas_cortadas=0; for(a=0; a<1000; a++) {
} numero_cartas=numero_cartas/1000; numero_cartas=round(((numero_cartas-peso_base)/peso_carta)); cartas_cortadas=numero_cartas; cartas_antes_de_cortar=numero_cartas; if(visualizar==1); { mostrar_numero(99); } //Medimos una frontera de +/- 5 cartas. for(a=0;a<100;a++) { valor_analogico=analogRead(analogPin);
//aqu vemos cuantas hay ahora mismo (por si la hay //un grupito de cartas) valor_analogico=analogRead(analogPin); numero_cartas=numero_cartas+valor_analogico;
50
frontera=frontera+valor_analogico; } frontera=frontera/100; frontera=round(((frontera-peso_base)/peso_carta)); while(((numero_cartas-5)<=frontera)&&(frontera<=(numero_cartas +5))) { frontera=0; for(a=0;a<100;a++) { valor_analogico=analogRead(analogPin); frontera=frontera+valor_analogico; } frontera=frontera/100; frontera=round(((frontera-peso_base)/peso_carta)); } //Necesitamos los valores ms pequeos, para saber cual es el nmero menor de cartas //que ha habido en la mesa. for(i=0; i<10; i++){ //De este nmero depende de que salga bien si corta //pocas cartas o muchas. numero_cartas=0; for(a=0; a<1000; a++) { valor_analogico=analogRead(analogPin); numero_cartas=numero_cartas+valor_analogico; } numero_cartas=numero_cartas/1000; numero_cartas=round(((numero_cartas-peso_base)/peso_carta)); cartas_cortadas=min(cartas_cortadas,numero_cartas); } //Aqu ya sabremos cuantas cartas se han cortado cartas_cortadas=cartas_antes_de_cortar-cartas_cortadas; //Mandamos 5 veces esas cartas cortadas for (a=0;a<5;a++) { Serial.write(cartas_cortadas); if (visualizar==1) { mostrar_numero(cartas_cortadas); } delay(200); } break; case 3: //Este caso muestra o no en los displays situados en la mesa. visualizar = !visualizar; if (visualizar==0) { mostrar_numero(00);
51
} } }
52
// La rutina setup solo se inicia una vez al resetar void setup() { // Inicializamos los pines como salidas y entradas pinMode(barra1, OUTPUT); pinMode(barra2, OUTPUT); pinMode(barra3, OUTPUT); pinMode(barra4, OUTPUT); pinMode(barra5, OUTPUT); pinMode(barra6, OUTPUT); pinMode(barra7, OUTPUT); pinMode(activacion1,OUTPUT); pinMode(activacion2,OUTPUT); pinMode(pulsador1,INPUT); pinMode(pulsador2,INPUT); pinMode(pulsador3,INPUT); pinMode(pulsador4,INPUT); // Fijamos la velocidad de la conexin serie Serial.begin(115200); //Funcin para mostrar los dgitos en los displays 7-segmentos void mostrar_numero(float numero) {
53
numero=round(numero); cifra1=floor((numero)/10); cifra2=round(((numero/10)-cifra1)*10); for (i=0; i < 20; i++) { digitalWrite(activacion1,HIGH); switch (cifra1) { case 0: display(1,0,0,0,0,0,0); break; case 1: display(1,1,1,0,1,1,0); break; case 2: display(0,1,0,0,0,0,1); break; case 3: display(0,1,0,0,1,0,0); break; case 4: display(0,0,1,0,1,1,0); break; case 5: display(0,0,0,1,1,0,0); break; case 6: display(0,0,0,1,0,0,0); break; case 7: display(1,1,0,0,1,1,0); break; case 8: display(0,0,0,0,0,0,0); break; case 9: display(0,0,0,0,1,0,0); break; } delay(10); digitalWrite(activacion1,LOW); digitalWrite(activacion2,HIGH); switch (cifra2) { case 0: display(1,0,0,0,0,0,0); break;
54
} digitalWrite(activacion1,LOW); digitalWrite(activacion2,LOW); }
} delay(10); digitalWrite(activacion2,LOW);
case 1: display(1,1,1,0,1,1,0); break; case 2: display(0,1,0,0,0,0,1); break; case 3: display(0,1,0,0,1,0,0); break; case 4: display(0,0,1,0,1,1,0); break; case 5: display(0,0,0,1,1,0,0); break; case 6: display(0,0,0,1,0,0,0); break; case 7: display(1,1,0,0,1,1,0); break; case 8: display(0,0,0,0,0,0,0); break; case 9: display(0,0,0,0,1,0,0); break;
//Funcin que enciende los displays void display(int a,int b, int c, int d, int e, int f, int g) { digitalWrite(barra1,a); digitalWrite(barra2,b); digitalWrite(barra3,c); digitalWrite(barra4,d); digitalWrite(barra5,e); digitalWrite(barra6,f); digitalWrite(barra7,g); }
55
// Rutina principal, se ejecuta en bucle. void loop() { //La rutina principal consiste en leer los datos recibidos y obedecer a los distintos pulsadores. if (Serial.available() > 0) { numero_cartas = Serial.read(); if (digitalRead(pulsador1)== HIGH) { mostrar_numero(numero_cartas); }
if (digitalRead(pulsador2)== HIGH) //Enviamos la orden RESET { delay(1000); Serial.write(1); delay(1000); } if (digitalRead(pulsador3)== HIGH) //Enviamos la orden CORTE { delay(1000); Serial.write(2); delay(1000); } if (digitalRead(pulsador4)== HIGH) //Enviamos la orden para VISUALIZAR en la mesa { delay(1000); Serial.write(3); delay(1000); } numero_cartas=0; }
56