sensores inteligentes y sus aplicaciones

Upload: christian-silva-arrieta

Post on 08-Jul-2015

932 views

Category:

Documents


5 download

TRANSCRIPT

Sensores inteligentes y sus aplicacionesGua del Estudiante

VERSION 1.0

GARANTAParallax garantiza sus productos contra defectos en sus materiales o debidos a la fabricacin por un perodo de 90 das a partir de la recepcin de los mismos. Si usted descubre un defecto, Parallax segn corresponda, reparar, reemplazar o regresar el valor de la compra. Antes de regresar el producto a Parallax, simplemente pida un nmero de autorizacin de regreso de mercanca (Return Merchandise Authorization, RMA), escriba el nmero en el exterior de la caja y envela a Parallax. Por favor incluya su nombre, nmero telefnico, direccin y una descripcin del problema. Parallax le regresar su producto o el reemplazo, usando el mismo mtodo de correo que usted us para enviar el producto a Parallax.

GARANTA DE 14 DAS DE REGRESO DEL DINEROSi dentro de los 14 das en que usted recibi su producto, encuentra que no es conveniente para sus necesidades, puede regresarlo, recibiendo un reembolso. Parallax regresar el precio de compra del producto, excluyendo los gastos de envo y manejo. Esto no se aplica si el producto ha sido alterado o daado. Consulte la seccin de Garanta arriba acerca de las instrucciones para regresar un producto a Parallax.

DERECHOS DE COPIA Y MARCAS REGISTRADASEste documento tiene derechos de copia Copyright 2006 por Parallax, Inc. Al descargar este documento o software por Internet o al obtener una copia dura usted acepta los derechos de copia y se compromete a usar este material solamente con productos comercializados por Parallax, Inc. Cualquier otro uso no est permitido y representa una violacin de los derechos de copia, propiedad intelectual y derechos de autor de Parallax, Inc. y dicha violacin es objeto de las penas que marcan las leyes Federal de derechos de autor y propiedad intelectual. Parallax Inc. expresamente no permite la reproduccin con fines comerciales. Se permite la reproduccin con fines educativos, reproduccin sujeta a las siguientes condiciones: el texto, ya sea en su totalidad o cualquier parte del mismo, no puede ser duplicado para uso comercial; puede ser duplicado solo para fines educativos cuando se use nicamente en conjunto con los productos Parallax y el estudiante abone solo el costo de la duplicacin. Este texto est disponible en formato impreso por Parallax Inc. Dado el tiraje de la impresin del mismo, el precio al consumidor es frecuentemente menor que los costos tpicos por duplicacin. BASIC Stamp, Stamps en Class, Board of Education, Boe-Bot SumoBot, SX-Key y Toddler son marcas registradas de Parallax, Inc. Si usted decide usar cualquiera o cualesquiera de las marcas registradas de Parallax Inc. en sus pginas de Internet o en cualquier material impreso, forzosamente deber agregar la aclaracin: (la marca en cuestin) es una marca registrada de Parallax, Inc. Otros nombres de productos y marcas son marcas registradas de sus respectivos dueos.

ISBN 1-928982-39-5

DESVINCULACIN DE RESPONSABILIDADParallax, Inc. no es responsable de daos por consecuencias, incidentes o daos especiales que resulten de cualquier violacin de la garanta, bajo cualquier teora legal, incluyendo prdida de beneficios, tiempos muertos, buena fe, dao o reemplazo de equipo o propiedad y cualesquiera costos de recuperacin, reprogramacin o de reproduccin de datos guardados o usados dentro de los productos Parallax. Parallax tampoco es responsable de cualquier dao personal, incluyendo vida o muerte, resultado del uso de cualquiera de nuestros productos. Usted tiene absoluta responsabilidad por la aplicacin que desarrolle con el BASIC Stamp, sin importar la naturaleza del riesgo de la misma.

SEGUNDA IMPRESION SITIOS WEB Y LISTAS DE DISCUSINMantenemos foros de discusin activa basados en la red mundial dirigidos a personas interesadas en los productos Parallax. Estos foros o listas de discusin son accesibles desde www.parallax.com: Propeller chip Esta lista es especficamente para clientes que usan los circuitos y productos Propeller. BASIC Stamp esta lista es extensamente utilizada por Ingenieros, aficionados y estudiantes, quienes comparten sus proyectos y preguntas acerca del BASIC Stamp. Stamps en Class Creada para educadores y estudiantes, los suscriptores de esta lista discuten el uso del material de Stamps en Class en sus cursos. La lista prove la oportunidad tanto a estudiantes como a educadores de hacer preguntas y obtener respuestas. Parallax Educators Es un foro exclusivo para educadores y aquellos que contribuyen al desarrollo de Stamps en Class. Parallax creo este grupo con el fin de obtener retroalimentacin en el desarrollo de nuestro currculum y proveer un sitio para que los educadores desarrollen y obtengan Guas para Profesores. Robotics Diseado para los robots Parallax, este foro fue creado para ser un dilogo abierto entre entusiastas de la robtica. Los temas incluyen el ensamble, cdigo fuente, expansiones y actualizaciones de manuales. Los robots Boe-Bot, Toddler, SumoBot, HexCrawler y QuadCrawler son ampliamente discutidos aqu. SX Microcontrollers y SX-Key Discusin de la programacin del microcontrolador SX con herramientas del lenguaje ensamblador Parallax SX Key y compiladores de terceros en lenguajes BASIC y C. Javelin Stamp Discusin de aplicaciones y diseos usando Javelin Stamp, un modulo Parallax que es programado utilizando un subconjunto de comandos del lenguaje de programacin Java de Sun Microsystems.

ERRATASi bien se realiza un gran esfuerzo para asegurar la precisin de nuestros textos, an puede haber errores. Continuamente nos esforzamos para mejorar todos nuestros materiales educativos y documentos y frecuentemente revisamos nuestros textos. Ocasionalmente se publica en nuestro sitio www.parallax.com una hoja de fe de errata con una lista de los errores y correcciones conocidos para un texto determinado. Por favor, revise las pginas individuales de los productos para obtener una descarga gratuita de este archivo de fe de errata.

Tabla de Contenido Pgina i

Tabla de ContenidoPrefacio.......................................................................................................................iiiIntroduccin y notas del autor........................................................................................ iii Idea general.................................................................................................................... v Antes de comenzar......................................................................................................... v La serie educativa Stamps en class .............................................................................. vi Traducciones ................................................................................................................ vii Colaboradores especiales ............................................................................................ vii

Captulo 1: La Pantalla LCD Serial Parallax.............................................................1LCDs en Productos.........................................................................................................2 El LCD serial Parallax - Su terminal porttil de depuracin............................................2 Actividad #1: Conexin y prueba de la pantalla LCD .....................................................4 Actividad #2: Despliege de mensajes simples................................................................8 Actividad #3: Aplicacion en un timer.............................................................................17 Actividad #4: Caracteres personalizados y animacin en LCD ....................................19 Actividad #5: Avance de texto traves de la pentalla .....................................................25 Resumen ......................................................................................................................34

Captulo 2: El Sensor Ultrasnico de Distancia Ping)))........................................41Cmo trabaja el Sensor Ping)))? ................................................................................41 Actividad #1: Medicin del tiempo de eco ....................................................................42 Actividad #2: Mediciones de CentmetroS....................................................................46 Actividad #3: Medicin de pulgadas .............................................................................49 Actividad #4: Mediciones en movimiento......................................................................51 Actividad #5: El efecto de la temperatura en la velocidad del sonido...........................58 Resumen ......................................................................................................................61

Captulo 3: El Acelermetro MEMS de dos ejes....................................................65EL Acelermetro MX2125 como funciona .................................................................67 Actividad #1: Conexin y prueba de pendiente con el MX2125 ...................................68 Actividad #2: Mediciones en movimiento......................................................................71 Actividad #3: Divisin proporcional y compensacin de los valores de entrada ..........76 Actividad #4: Dividiendo en 1/100 g .............................................................................83 Actividad #5: Medicin de Rotacin Vertical de 360 ...................................................85 Actividad #6: Medicin de la inclinacin respecto a la Horizontal ................................98 Resumen ....................................................................................................................112

Captulo 4: El Mdulo de brjula Hitachi HM55B ................................................119Interpretacin de las mediciones de la brjula ...........................................................119 Actividad #1: Conexion y prueba del mdulo de brjula.............................................120 Actividad #2: Calibracin del mdulo de brjula.........................................................128

Pgina ii Sensores inteligentes y sus aplicaciones

Actividad #3: Probando la Calibracin........................................................................ 138 Actividad #4: Mejora de las mediciones de la brjula a travs del promedio ............. 143 Actividad #5: Mediciones en movimiento ................................................................... 148 Resumen .................................................................................................................... 159

Captulo 5: Fundamentos de juegos con el Acelermetro ................................ 167Actividad #1: Desplegado de caracters grficos PBASIC .......................................... 168 Actividad #2: Guardado y refrescado de fondo con la EEPROM ............................... 179 Actividad #3: Inclinando la grfica de burbuja ............................................................ 188 Actividad #4: Control de juego.................................................................................... 196 Resumen .................................................................................................................... 205

Captulo 6: Ms Proyectos con el Acelermetro ................................................ 211Actividad #1: Medicin de altura de eficios, rboles, Etc. .......................................... 211 Actividad #2: Grabacin y reproduccin..................................................................... 213 Actividad #3: Uso de la EEPROM para cambio de modos......................................... 219 Actividad #4: Registro Remoto de la Aceleracin ...................................................... 223 Actividad #5: Estudio de la aceleracin en un auto de radio control .......................... 230 Actividad #6: Estudio de la aceleracin en un truco con patineta .............................. 240 Actividad #7: Distancia de recorrido de una bicicleta ................................................. 247 Resumen .................................................................................................................... 255

Captulo 7: Graficos de Barra en LCD para Distancias e inclinaciones........... 261Actividad #1: Intercambio de caracteres personalizados ........................................... 261 Actividad #2: Graficos de Barras Horizontales para Distancia con Ping))) ................ 271 Actividad #3: Grafica de Barra de dos ejes para inclinacin del Acelermetro .......... 281 Resumen .................................................................................................................... 294

Apndice A: Tabla de caracteres ASCII............................................................... 303 Apndice B: Documentacin de la pantalla LCD Serial Parallax ...................... 305 Apndice C: Definiciones de Caracteres Hexadecimales.................................. 317 Apndice D: Listado de Partes ............................................................................. 321 ndice ....................................................................................................................... 323

Prefacio Pgina iii

PrefacioINTRODUCCIN Y NOTAS DEL AUTORLa primera vez que v el trmino sensor inteligente fue en el texto Sensores Aplicados de Tracy Allen (entonces conocido como Mediciones Ambientales). De manera adecuada, Tracy aplic este trmino al termmetro digital DS1620, el cual tiene elementos electrnicos interconstrudos que simplifican las mediciones de temperatura del microcontrolador. Adicionalmente, poda recordar la configuracin1 que reciba del microcontrolador y, ms an, funcionar independientemente como un controlador de termostato. En contraste con los sensores inteligentes, los sensores primitivos son dispositivos o materiales que tienen alguna propiedad elctrica que cambia con algn fenmeno fsico. Un ejemplo de un sensor primitivo en Qu es un Microcontrolador? es la fotorresistencia de sulfato de cadmio. Su resistencia cambia con la intensidad de la luz. Con el programa y el circuito adecuados, es posible realizar mediciones de luz con un microcontrolador. Otros ejemplos de sensores primitivos comunes son los sensores de temperatura con salida de corriente/tensin, transductores de micrfonos y an el potencimetro, que es un sensor de posicin rotacional. Dentro de cada sensor inteligente radica uno o ms sensores primitivos y la circuitera de soporte. Lo que hace a un sensor inteligente inteligente es la electrnica interconstruda adicional. Esta electrnica hace que estos sensores sean capaces de hacer una o ms de las siguientes funciones: Pre-procesar los valores medidos en cantidades que posean algn significado. Comunicar las medidas con seales digitales y protocolos de comunicacin. Orquestar las acciones de los sensores primitivos y sus circuitos para tomar mediciones. Tomar decisiones e iniciar alguna accin en base a las condiciones sensadas, de manera independiente al microcontrolador. Recordar la calibracin o la configuracin de sus parmetros.

Durante mi primer encuentro con un sensor inteligente pens: Vaya! Un kit completo de estos sensores con un libro podra ser REALMENTE interesante! En verdad espero1

En ingles, setting (N. del T)

Pgina iv Sensores inteligentes y sus aplicaciones

que alguien haga un kit y un libro as pronto No tena idea que pronto terminara siendo casi seis aos despus, y que alguien terminara siendo yo. Y si alguno de mis jefes me hubiera dicho entonces que ese kit contendra un acelermetro, un medidor de distancias ultrasnico, una brjula digital y una pantalla o visor LCD2 serial para mediciones en movimiento, quiz la impresin me hubiera deshecho por completo. Puesto que solo recientemente fue posible para nosotros conjuntar un grupo de componentes tan sorprendente en un solo kit, debera decir que la espera vali la pena. En concordancia con el resto de los tutoriales Stamps en Class, este libro es una coleccin de actividades, algunas de las cuales cubren aspectos bsicos, algunas otras cubren otros aspectos ms avanzados, y otras demuestran aplicaciones o arman bloques para varios productos e inventos. La primera mitad del libro presenta al sensor junto con algunas mediciones en movimiento desplegadas en una pantalla LCD. Luego, la segunda mitad del libro tiene una cantidad considerable de aplicaciones para que usted las intente, tales como juegos de video por inclinacin, herramientas de medicin personalizadas y dispositivos de diagnstico para entusiastas del deporte y del bricolaje. El lmite de pginas para este libro delimitado por nuestro empaque es 350 y fue difcil detenerme all. Se pueden encontrar actividades adicionales de sensores inteligentes para el robot Boe-Bot en el foro de Stamps en Class en www.parallax.com. Si bien este libro cubre los fundamentos y demuestra algunas aplicaciones como ejemplos, solamente rasga la superficie de lo que usted puede hacer con estos dispositivos. El propsito principal de este libro es proveer algunos bloques de construccin e ideas para proyectos e inventos futuros. Por ejemplo, despus de completar el captulo 3, nuestro revisor del libro Kris Magri puso su tarjeta de entrenamiento Board of Education con el acelermetro y la LCD sobre el tablero de su auto, y ahora su auto tiene un medidor de aceleracin en planos a un lado de su velocmetro. Con algunas modificaciones al cdigo, se pudo haber cambiado por un sistema de alerta de volcadura en autos de doble traccin. Despus de revisar el dispositivo mecnico de vigilancia para predecir condiciones de avalancha en reas montaosas basado en la inclinacin de la ladera, Ken Gracey desarroll en una noche la versin digital con las mismas partes que tena Kris en su auto. El acelermetro en el tablero del auto y el medidor de riesgo de avalancha son dos ejemplos nicos de las muchas aplicaciones, proyectos e inventos que pueden ser inspirados por el kit de sensores inteligentes y su texto. Nos gustara ver lo que usted2

Visor o pantalla de cristal lquido; de sus siglas en ingls, Liquid Cristal Display (N. del T.)

Prefacio Pgina v

puede hacer con su kit en el foro de Stamps en Class. No importa si piensa que su proyecto esta en onda, es nico, poco original o lo que sea. Solo tome unos minutos para publicar las cosas que ha hecho con estos sensores inteligentes en http://forums.parallax.com/forums/ Stamps en Class. Asegrese de incluir algunas fotos, una descripcin breve y preferentemente un esquema y el programa PBASIC. Entonces, divirtase con este kit y este libro y nosotros veremos sus inventos en el foro de Stamps en Class.

IDEA GENERALEl kit de sensores inteligentes contiene cuatro dispositivos que, cuando se usan con BASIC Stamp y la Tarjeta Board of Education o la tarjeta HomeWork Board, pueden ser bloques de construccin para una variedad de inventos y proyectos de estudiantes. He aqu una lista de los dispositivos: Pantalla LCD Serial Parallax 2x16 Buscador de rangos ultrasnico Ping))) Acelermetro de 2 ejes 2125 Mdulo de Brjula Hitachi HM55B

Adems de proveer tanto el equipo como la informacin de cmo se usa este para proyectos estudiantiles, este texto hace 2 nfasis mayores que proveen teora, ejemplos y los clculos requeridos, lo cual puede ser usado para reforzar una variedad de conceptos de medicin, de fsica/ingeniera y de trigonometra. Estos nfasis son: Tcnicas matemticas para escalar los valores de sensores primarios hasta mediciones con significado propio dado que son expresadas en sistemas de unidades comunes. Interpretacin de la proyeccin de los vectores de campos magnticos y de gravedad sobre ejes cartesianos.

ANTES DE COMENZARPara ejecutar los experimentos en este texto, necesitar tener su tarjeta Board of Education o bien HomeWork Board conectada a su computadora, el software Editor de BASIC Stamp instalado en su computadora y haber verificado que hay comunicacin enre su computadora y su BASIC Stamp. Para instrucciones detalladas a este respecto, consulte Qu es un Microcontrolador?, disponible como descarga gratuita en

Pgina vi Sensores inteligentes y sus aplicaciones

www.parallax.com. Tambin necesitar las partes contenidas en el kit de partes de Sensores Inteligentes. Consulte el apndice D para una lista completa del sistema, software y requerimientos de hardware.

LA SERIE EDUCATIVA STAMPS EN CLASSLa serie Stamps en Class de textos y kits provee recursos econmicamente alcanzables para la educacin en electrnica e ingeniera. Todos los libros listados estn disponibles para descarga gratuita en www.parallax.com. Las versiones citadas a continuacin se encontraban disponibles en el momento de este tiraje. Por favor, revise nuestros sitios web www.parallax.com o www.stampinclass.com para las ltimas revisiones; continuamente nos esforzamos para mejorar nuestro programa educativo.Guas del Estudiante Stamps en Class:

Qu es un Microcrontolador? es el nivel recomendado de entrada a la serie educativa Stamps en Class. En vez de ello, algunos estudiantes empiezan con Robtica con el BoeBot, tambin diseado para principiantes. Qu es un Microcontrolador?, Gua del Estudiante, Version 2.2, Parallax Inc., 2004 Robotica con el Boe-Bot, Gua del Estudiante, Version 2.2, Parallax Inc., 2004 Podr entonces continuar con otros tpicos de proyectos educativos, o quiz prefiera explorer nuestros kits Robticos.Kits de Proyectos Educativos:

Los siguientes textos y kits proven una variedad de actividades que son tiles para aficionados al bricolaje, inventores y diseadores de productos interesados en intentar un amplio espectro de proyectos: Sensores inteligentes y sus aplicaciones, Gua del Estudiante, Version 1.0, Parallax Inc., 2006 Control de Procesos, Gua del Estudiante, Version 1.0, Parallax Inc., 2006 Sensores Aplicados, Gua del Estudiante, Version 1.3, Parallax Inc., 2003 Basicos Analgicos y Digitales, Gua del Estudiante, Version 1.3, Parallax Inc., 2004 Entendiendo las seales, Gua del Estudiante, Version 1.0, Parallax Inc., 2003

Prefacio Pgina vii

Kits Robticos:

Para adquirir experiencia con robtica, considere continuar con las siguientes Guas Del Estudiante Stamps en Class, cada una tiene un kit robot correspondiente: Control remoto IR para el Boe-Bot, Gua del Estudiante, Version 1.1, Parallax Inc., 2004 Robotica Aplicada con el SumoBot, Gua del Estudiante, Version 1.0, Parallax Inc., 2005 Robtica avanzada con el Toddler, Gua del Estudiante, Version 1.2, Parallax Inc., 2003Referencias

Este libro es una referencia esencial para todas las Guas del Estudiante Stamps en Class. Se presenta con informacin de la serie de modulos microcontroladores BASIC Stamp, nuestro Editor BASIC Stamp y nuestro lenguaje de programacin PBASIC. Manual BASIC Stamp, Version 2.2, Parallax Inc., 2005

TRADUCCIONESLos textos educativos Parallax pueden ser traducidos a otros idiomas con nuestro permiso (correo electrnico: [email protected]). Si usted planea hacer alguna traduccin por favor contctenos y as podremos proveerle con los documentos MS Word en el formato adecuado, imgenes, etc. Tambin mantenemos un grupo privado de discusin para traductores al cual quiz quiera unirse. Esto asegurar que se le mantiene al corriente con nuestras frecuentes revisiones de texto.

COLABORADORES ESPECIALESParallax Inc. quiere dar reconocimiento a sus miembros del equipo de Educacin: al administrador del Proyecto Aristides Alvarez, el Ilustrador Tcnico Rich Allred, Diseadora Grfica Larissa Crittenden, Revisor Tcnico Kris Magri y la Editora Tecnica Stephanie Lindsay. Adicionalmente, gracias a nuestro cliente Steve Nicholson por poner a prueba de usuario la mayoria de nuestras actividades. Como siempre, un agradecimiento especial a Ken Gracey, fundador del programa educativo Stamps en Class de Parallax Inc.

Pgina viii Sensores inteligentes y sus aplicaciones

Cap 1: La pantalla LCD Serial Parallax Pgina 1

Captulo 1: La Pantalla LCD Serial ParallaxEl desplegado de informacin que un sensor enva en un formato comprensible tiene muchos usos y, en algunas aplicaciones, es todo lo que importa. El termmetro digital es un ejemplo comn que puede ser encontrado en muchos hogares. Dentro de cada termmetro digital, hay una sonda de temperatura, un microcontrolador y una pantalla de cristal lquido (LCD) para mostrar las mediciones. El microcontrolador BASIC Stamp y la pantalla LCD Serial Parallax mostrados en la Figura 1 1 son 2 de los elementos del termmetro digital. Ese arreglo es excelente para mostrar mediciones en movimiento, haciendo posible desconectar su tarjeta de la PC, depurar esta terminal y probar en campo sus sensores inteligentes.Figura 1-1: BASIC Stamp, Board of Education, y Pantalla LCD Serial Parallax

Las actividades en este captulo presentan algunos fundamentos de la pantalla LCD Parallax, como conectarla al BASIC Stamp, encenderla y apagarla, colocar su cursor y desplegar texto y dgitos. Los captulos posteriores mostrarn cmo crear y animar caracteres personalizados y mostrar mensajes con movimiento.

Pgina 2 Sensores Inteligentes y sus Aplicaciones

LCDS EN PRODUCTOSTodos los productos mostrados en la Figura 1-2 tienen pantallas de cristal lquido. Son fciles de leer y los ms pequeos consumo poca energa. Piense cuntos productos que usted posee tienen pantallas de cristal lquido. Al avanzar en las actividades de este texto, piense acerca los proyectos de BASIC Stamp, los prototipos y los inventos que tiene en progreso y cmo una pantalla LCD serial puede mejorarlos o ayudarle a completarlos.Figura 1-2: Ejemplos de Productos con pantallas LCD De arriba a abajo y de izquierda a derecha: telfono celular, GPS porttil, calculadora, multmetro digital, reloj de oficina, computadora lap-top, osciloscopio, telfono de oficina.

EL LCD SERIAL PARALLAX - SU TERMINAL PORTTIL DE DEPURACINSi ha trabajado con otros textos de la serie Stamps en Class, probablemente le es familiar lo valiosa que puede ser la herramienta de Terminal de Depuracin. La Terminal de Depuracin es una ventana que puede usar para que su computadora muestre mensajes

Cap 1: La pantalla LCD Serial Parallax Pgina 3

que recibe del BASIC Stamp. Es especialmente til para mostrar mensajes de diagnstico y valores de variables, haciendo ms fcil aislar los problemas en un programa. Tambin es til para probar circuitos, sensores y ms. La Terminal de Depuracin tiene una desventaja y es la conexin por cable serial. Considere cuantas veces fue inconveniente tener su tarjeta conectada a la computadora para probar un sensor, o para descubrir qu estaba viendo su robot Boe-Bot con sus detectores infrarrojos en la otra habitacin. Estas son situaciones que pueden ser remediadas con la pantalla LCD Serial Parallax mostrada en la Figura 1-3. Una vez que construya un circuito sensor en su tarjeta Board of Education, puede usar una batera y su pantalla LCD Serial parallax para llevar el arreglo tan lejos de su terminal de programacin como usted quiera, mientras que despliega las mediciones de su sensor y otra informacin de diagnstico.

Figura 1-3 LCD Serial Parallax (216)

La pantalla LCD Serial Parallax 216 tiene dos renglones de 16 caracteres cada uno para desplegar mensajes. La pantalla es controlada por mensajes seriales desde el BASIC Stamp. El BASIC Stamp enva estos mensajes desde un solo pin de entrada/salida que est conectado a la entrada serial de la LCD. Hay dos versiones, estndar y con luz de fondo: Version Estndar Con Luz Parte Parallax # 27976 27977

Pantallas LCDs Seriales vs Paralelas La pantalla LCD paralela es probablemente el tipo ms comn de pantallas LCD. Requiere un mnimo de 6 pines de entrada/salida para ser controlada por el BASIC Stamp. Tambin, si no est usando un BASIC Stamp 2p, 2pe o 2px, el cdigo para controlar la pantalla tiende a ser ms complejo que el cdigo para una pantalla LCD serial. La pantalla LCD serial en realidad es una pantalla LCD con un microcontrolador extra. Este microcontrolador extra convierte los mensajes seriales del BASIC Stamp en mensajes paralelos que controlan la pantalla LCD paralela.

Pgina 4 Sensores Inteligentes y sus Aplicaciones

ACTIVIDAD #1: CONEXIN Y PRUEBA DE LA PANTALLA LCDAdems de las conexiones elctricas y algunos programas PBASIC muy simples para probar la pantalla LCD Serial Parallax, esta actividad presenta el comando SEROUT. Tambin demuestra cmo el comando DEBUG es un caso especial de SEROUT. Esto es especialmente til al trabajar con su pantalla LCD serial porque puede tomar muchos de los argumentos de comando DEBUG y usarlos con el comando SEROUT para controlar y dar formato a la informacin que muestre su pantalla LCD.Partes Requeridas

(1) Pantalla LCD Serial Parallax 216 (3) Segmentos de cable Adems de la pantalla LCD Serial Parallax y los 3 cables, es especialmente importante que tenga la documentacin de la pantalla (incluida en el Apndice B de este texto). An cuando son unas cuantas pginas, tienen una larga lista de valores que puede enviar a su LCD para hacer que ejecute funciones similares a las que ha usado en la Terminal de Depuracin. Funciones como control de cursor, retorno de carro, retorno, limpiar pantalla, etc., todas tienen sus propios cdigos especiales. Algunos de estos cdigos son idnticos a los de la Terminal de Depuracin; otros son bastante diferentes.Armando el circuito de la pantalla LCD Serial

La conexin de la pantalla LCD Serial Parallax al BASIC Stamp es sorprendentemente simple, como se muestra en la Figura 1-4. Solo tiene que hacer tres conexiones: una para la alimentacin, otra para tierra y una mas para la seal. El pin RX de la LCD es para la seal y debe ser conectada al pin de entrada/salida del BASIC Stamp. En esta actividad, usaremos el pin P14. El pin de tierra GND de la pantalla debe ser conectado a VSS en la tarjeta Board of Education, y el pin 5 V de la pantalla debe ser conectado a Vdd.PRECAUCIN: Una conexin errnea puede daar esta pantalla LCD. La Revisin D y los modelos anteriores de esta pantalla LCD tienen 5 pines. Si Ud. tiene un modelo de 5 pines, por favor vea la Figura B-1 en la pgina 306 para verificar cules son los pines correctos a usar en los circuitos de este libro. La versin de 5 pines no es compatible con los modelos Scott Edwards o Matrix Orbital. Si usted ha usado otras marcas de pantallas LCD seriales antes, note que este diagrama de pines es diferente. No cometa el error de usar el mismo alambrado que us para otros modelos.

Cap 1: La pantalla LCD Serial Parallax Pgina 5

Desconecte la alimentacin de energa de su tarjeta Board of Education. Conecte la terminal Vss de la tarjeta Board of Education al pin GND de la LCD. Conecte la terminal P14 de la tarjeta Board of Education al pin RX de la LCD, como se muestra en la Figura 1-4. Conecte la terminal Vdd de la tarjeta Board of Education al pin 5V de la LCD. No conecte la fuente de energa an.

Figura 1-4: Diagramas esquemtico y de conexiones

Pgina 6 Sensores Inteligentes y sus Aplicaciones

Probando la pantalla LCD Serial

La LCD Serial Parallax tiene un modo de auto-prueba que puede usar para asegurarse que esta en condiciones de operar y que el contraste est ajustado adecuadamente. La Figura 1-5 muestra la parte posterior del modulo de la LCD. Los interruptores SW1 y SW2 son para entrar en modo de auto-prueba y para ajustar la velocidad de transmisin baud, el contraste se ajusta con un potencimetro INCREASE CONTRAST.

Figura 1-5 Vista posterior del Mdulo de la pantalla LCD

Su tarjeta Board of Education an debe estar desenergizada. Encuentre los interruptores SW1 y SW2 en la parte baja del mdulo de la pantalla LCD como se muestran en la Figura 1-6 . Coloque SW1 en posicin off. Coloque SW2 en posicin off. Re-energice su tarjeta nuevamente ahora.Figura 1-6 Configurando los interruptores de velocidad Baud en el modo de auto- prueba

Cuando re-energice, la LCD debe mostrar el texto "Parallax, Inc." en la lnea superior (Lnea 0) y "www.parallax.com" en la lnea inferior (Lnea 1), como se muestra en la Figura 1-3. Si deja la pantalla en este modo por un rato, un carcter personalizado bien conocido por los jugadores de video juegos de los 80s aparecer comindose el texto.

Cap 1: La pantalla LCD Serial Parallax Pgina 7

Si la pantalla parece atenuada o en blanco, puede girar el potencimetro de ajuste de contraste mostrado en la Figura 1-7con un desarmador. Si los caracteres en la pantalla se ven bien, quiz no necesite ajustarlo. Si los caracteres estn muy oscuros o como cuadros grises, el ajuste al potencimetro podra ser de ayuda. Ajuste el potencimetro de contraste si se requiere.

Figura 1-7 Potencimetro de Ajuste de Contraste

Ajustando la pantalla LCD para recibir Mensajes del BASIC Stamp

La comunicacin de datos en serie involucra una velocidad de transmisin baud . Esto es el nmero de bits por segundo (bps) que el emisor transmite y a los que el receptor tiene que estar listo para recibir los datos a la misma velocidad baud. En las actividades de este captulo, el BASIC Stamp ser programado para enviar mensajes a la LCD a 9600 bps. Puede ajustar los mismos interruptores que us para el modo auto-prueba ahora para fijar la velocidad baud. Desenergice la tarjeta Board of Education. Deje el interruptor SW1 en la posicin OFF. Coloque el interruptor SW2 en la posicin ON como se indica en la Figura 1-8. Energice la tarjeta nuevamente ahora.

La pantalla se mantendr en blanco hasta que programe el BASIC Stamp 2 para controlar la pantalla.Figura 1-8 Velocidad Baud. Interruptores a 9600 bps

Pgina 8 Sensores Inteligentes y sus Aplicaciones

La Figura 1-9 muestra la tabla impresa en la parte posterior de la LCD Serial Parallax. Si quiere enviar mensajes a otras velocidad baud (2400 o 19,200 bps), use esta tabla y ajuste los interruptores SW1 y SW2 segn sea el caso.

Figura 1-9 Configuracin de los interruptores de Velocidad Baud

ACTIVIDAD #2: DESPLIEGE DE MENSAJES SIMPLESComo se mencion antes, los comandos que envan texto, nmeros y elementos que dan formato y cdigos de control (caracteres de control) a la LCD serial estn relacionados con el comando DEBUG. De hecho, el comando DEBUG es solo una versin especial de un comando ms general llamado SEROUT. El comando SEROUT tiene muchos usos, algunos son enviar mensajes a la LCD serial, a otros mdulos BASIC Stamp y a computadoras. En esta actividad, usted programar el BASIC Stamp para hacer que la LCD despliegue mensajes de texto y valores numricos. Como un primer paso en la animacin, tambin modificar los programas para que el texto y los nmeros parpadeen. El comando SEROUT ser su herramienta para cumplir estas tareas. Usar el comando SEROUT para enviar texto, nmeros, cdigos de control y elementos de formato a la pantalla LCD Serial Parallax. Como pronto ver, el texto, los nmeros y los formateadotes son idnticos a los que usa con el comando DEBUG. Los cdigos de control sern un poco diferentes, pero con un poco de prctica sern tan fciles de usar como CR, CLS, HOME, y CRSRXY. (Si no est familiarizado con CRSRXY, podr aprender ms de l en el captulo 6, Actividad # 1). La versin minima de la sintaxis del comando SEROUT es como sigue:SEROUT Pin, BaudMode, [ DataItem, {DataItem, ...} ]

En nuestros programas, el argumento Pin tiene que ser 14 puesto que el pin RX (de recepcin de datos) de la pantalla LCD's est conectada a pin de entrada/salida P14 del BASIC Stamp.

Cap 1: La pantalla LCD Serial Parallax Pgina 9

El argumento BaudMode es un valor que le dice al BASIC Stamp qu tan rpido deber enviar los datos en serie y tambin determina algunas de las caractersticas de la seal serial. El programa de ayuda del Editor del BASIC Stamp tiene tablas que dan los valores de BaudMode para velocidades baud y seales comunes. Al consultarlas, resulta que 84 es el valor del argumento de BaudMode para 9600 bits por segundo (bps), palabras de 8 bits, sin paridad, seal verdadera. Esto es exactamente para lo que la LCD Serial Parallax fue diseada para recibir. Los argumentos DataItem pueden ser escritos entre comillas como Hola. Tambin pueden ser caracteres de control como CR, CLS, o valores, con o sin formateadotes como DEC, BIN, y ?. Si se enva con formateadores, ellos son enviados como los caracteres que representan el valor. Si se envan sin formateadores, ellos sern enviados como valores, como 22, 12 y 13. Podemos enviar valores sin formato como estos a la LCD, los cuales sern interpretados como cdigos de control.Ms acerca SEROUT Si usted desea intentar usar la terminal de Depuracin con SEROUT en vez de DEBUG, primero brala desde la barra de herramientas con Run Debug New. Luego, seleccione Run Identify para ver qu puerto est usando su BASIC Stamp. Entonces, en la Terminal de Depuracin, haga coincidir la designacin del puerto de comunicacin. Note que tambin puede cambiar la velocidad Baud de la Terminal de Depuracin as como otros parmetros de comunicacin. Hay mucho ms que aprender acerca de SEROUT. Tanto el Manual del BASIC Stamp como la Gua de Sintaxis del Editor PBASIC dan explicacin amplia acerca el comando SEROUT. El Manual del BASIC Stamp est disponible como descarga gratis en www.parallax.com Downloads Documentation. Si su Editor de BASIC Stamp soporta PBASIC 2.5, probablemente ya tenga la Gua de Sintaxis de PBASIC. Para accesar, simplemente seleccione el ndice desde el men de ayuda del Editor de BASIC Stamp.

Mensajes de Texto Simples y Cdigos de Control

A diferencia de la Terminal de Depuracin, la LCD serial necesita ser encendida con un comando desde el BASIC Stamp. La pantalla debe recibir el valor 22 desde el BASIC Stamp para activarse. Este es el comando PBASIC para enviarlo a la LCD serial:SEROUT 14, 84, [22]

Usado as, 22 es un ejemplo de un cdigo de control de la pantalla LCD. Otros cdigos de control bsicos son:

Pgina 10 Sensores Inteligentes y sus Aplicaciones

12 limpia la pantalla. Nota: siempre debe seguir PAUSE 5 para dar tiempo a la

LCD de limpiarse.13 es un retorno de carro; manda al cursor a la siguiente lnea. 21 apaga la pantalla LCD. 22 enciende la pantalla LCD.Para encender y apagar la luz de fondo (solo pantallas LCD con Luz de fondo): Algunas pantallas de LCD tienen luz de fondo para poder leerlas cuando est oscuro. Si usted tiene esta versin de LCD Serial Parallax (parte # 27977), puede controlar la luz de fondo con estos valores:

17 para encender la luz de fondo. 18 para apagar la luz de fondo.

En PBASIC, CR es una constante predefinida para el valor 13. Siempre que en el comando DEBUG use la constante CR, enva el valor 13 a la Terminal de Depuracin. La Terminal de Depuracin mueve el cursor al principio de la siguiente lnea siempre que recibe el valor 13. En este caso, los dos comandos a continuacin son equivalentes: SEROUT 14, 84, ["Ve esto?", CR, "La LCD funciona!"] SEROUT 14, 84, ["Ve esto?", 13, "La LCD funciona!"] Si bien funciona para CR, no funciona para otras constantes PBASIC predefinidas. Por ejemplo, CLS, que es una constante predefinida para el nmero 0, no limpia la LCD. El equivalente de CLS de la LCD Serial Parallax es 12. HOME, que es una constante predefinida para el valor 1, no manda el cursor al carcter en casa en la esquina superior izquierda de la LCD. El cdigo de control que lo hace para la LCD Serial Parallax es 128.

Programa Ejemplo - LcdTestMessage.bs2

Introduzca, salve y corra LcdTestMessage.bs2. Verifique que muestre el mensaje "See this?" en la lnea 0 y "The LCD works!" en la lnea 1 (ver Figura 1-10).

' Sensores inteligentes y sus Aplicaciones - LcdTestMessage.bs2 ' Muestra un mensaje de prueba en la LCD Serial Parallax. ' {$STAMP BS2} ' {$PBASIC 2.5} ' Dispositivo Objeto ' Lenguaje = BASIC Stamp 2 = PBASIC 2.5

Cap 1: La pantalla LCD Serial Parallax Pgina 11

SEROUT 14, 84, [22, 12] PAUSE 5 SEROUT 14, 84, ["See this?", 13, "The LCD works!"] END

' Inicializa la LCD

' Mensaje de texto, retorno de carro ' mas texto en la linea 1. ' Fin del Programa

Figura 1-10 Desplegado de texto.

Si la LCD no despliega adecuadamente: Revise su cableado, su programa y los interruptores en la parte posterior de la LCD. Desconecte y reconecte la batera de su tarjeta Board of Education. Vaya a las instrucciones que anteceden al programa y verifique que cada una haya sido completada correctamente.

Su Turno - Cdigos de Control para que el desplegado encienda y apague

Recuerda que 22 enciende la pantalla y que 21 la apaga? Puede usar estos cdigos de control para hacer que el texto parpadee. Reemplace el comando END en LcdTestMessage.bs2 con este bloque de cdigo.DO PAUSE 600 SEROUT 14, 84, [22] PAUSE 400 SEROUT 14, 84, [21] LOOP ' ' ' ' ' ' Inicia el bloque DO...LOOP Retraso de 6/10 de segundo Enciende la pantalla Retraso de 4/10 de segundo Apaga la pantalla Repite el bloque DO...LOOP

Corra el programa modificado y note el efecto.

Pgina 12 Sensores Inteligentes y sus Aplicaciones

Desplegando Nmeros con Formateadores

Muchos de los formateadores usados para mostrar nmeros con la terminal de Depuracin funcionan con la LCD Serial Parallax. El formateador DEC es probablemente el ms til, pero tambin puede usar DIG, REP, ASC, BIN, HEX, SDEC, y muchos de los otros. Por ejemplo, si quiere desplegar el valor decimal de una variable llamada counter, puede usar comandos como este:SEROUT 14, 84, [DEC counter]

Programa Ejemplo - LcdTestNumbers.bs2

Adems de demostrar que puede desplegar valores de variables en la LCD serial, este programa tambin muestra qu pasa si el programa manda ms de 16 caracteres a la lnea 0. Los ajusta hacia la lnea 1. Tambin, despus de llenar la lnea 1 con otros 16 caracteres, el texto se vuelve a ajustar hacia la lnea 0. Introduzca, salve y corra LcdTestNumbers.bs2

' Sensores inteligentes y sus Aplicaciones - LcdTestNumbers.bs2 ' Muestra valores numericos con la LCD Serial Parallax. ' {$STAMP BS2} ' {$PBASIC 2.5} counter VAR Byte ' Dispositivo Objeto ' Lenguaje = BASIC Stamp 2 = PBASIC 2.5

' Variable del ciclo FOR...NEXT ' Inicializa la LCD ' Retraso 5 ms para limpiar la pantalla ' Cuenta hasta 12; incrementa cada 1/2 s

SEROUT 14, 84, [22, 12] PAUSE 5 FOR counter = 0 TO 12 SEROUT 14, 84, [DEC counter, " "] PAUSE 500 NEXT END

' Programa end

Verifique que la pantalla se asemeje a la Figura 1-11.

Cap 1: La pantalla LCD Serial Parallax Pgina 13

Figura 1-11 Despliegue de nmeros

Su Turno - Otros Formateadores

Intente reemplazar DEC con DEC2 y observe qu pasa. Repita con el formateador ?. Si es necesario, busque estos comandos en el Manual BASIC Stamp o en la ayuda del Editor BASIC Stamp. Ensyelos tambin en la Terminal de Depuracin. Cules son las similitudes y diferencias entre usar estos formateadores en la Terminal de Depuracin y usarlos en la LCD Serial Parallax?

Cdigos de Control para Posicionar el Cursor

Los cdigos de control de la LCD son diferentes de los caracteres de control del comando DEBUG. Por ejemplo, HOME y CRSRXY simplemente no tienen el mismo efecto que tienen en la Terminal de Depuracin. Sin embargo, hay comandos de cursor para la LCD Serial Parallax que puede usar para controlar las coordenadas X y Y del cursor. Tambin puede enviar el cursor a la posicin superior izquierda o posicin de casa. Revise el conjunto de comandos en la seccin de la documentacin de la LCD al principio de la pgina 312. Enlista todos los comandos de control vlidos para la LCD; a continuacin se indican algunos ejemplos de la lista que controlan la posicin del cursor.

8 9 10 128 to 143 148 to 163

Cursor a la izquierda Cursor a la derecha Cursor abajo (la linea inferior ajustara en la linea superior) Posiciona el cursor en la linea 0, caracteres 0 al 15 Posiciona el cursor en la linea 1, caracteres 0 al 15

Pgina 14 Sensores Inteligentes y sus Aplicaciones

Los valores 128 to 143 y 148 to 163 son particularmente tiles. La Figura 1-12 muestra donde cada valor posiciona al cursor. Puede usar valores de 128 to 143 para colocar al cursor en los caracteres 0 al 15 en la lnea superior de la LCD (lnea 0). De manera semejante, puede usar valores de 148 to 163 para colocar el cursor en los caracteres 0 al 15 de la lnea inferior (lnea 1).

Figura 1-12 Desplegado de Texto

Luego de colocar el cursor, el siguiente caracter que enve a la LCD ser desplegado en esa posicin. Por ejemplo, he aqu un comando SEROUT con un argumento Pace opcional configurado a 200 ms. Este comando mostrar los caracteres "L", "I", "N", "E", "-", y "0", igualmente espaciados a lo ancho de la lnea superior, un caracter cada 200 ms.SEROUT 14, 84, 200, [128, 131, 134, 137, 140, 143, "L", "I", "N", "E", "-", "0"]

Si se despliegan caracteres mltiples despus de dar una posicin inicial, la LCD an cambiar el cursor a la derecha despus de cada caracter. Por ejemplo, tambin puede colocar el cursor en el caracter 7 de la lnea superior y entonces desplegar "ALL", luego mover el cursor al carcter 6 de la lnea inferior y desplegar "DONE!", as:SEROUT 14, 84, [135, "ALL", 154, "DONE!"]

Cap 1: La pantalla LCD Serial Parallax Pgina 15

He aqu un bloque de cdigo que har que el texto "Line 1" resbale abajo a la linea inferior, de derecha a izquierda.FOR index = 9 TO 0 ' IMPORTANTE: Deje un espacio luego del 1 en "Line 1 " SEROUT 14, 84, [148 + index, "Line 1 "] PAUSE 100 NEXT

Borrando Caracteres Siempre puede barrar un caracter colocando el cursor donde lo desee y enviando el caracter de espacio " " para sobreescribir lo que sea que all haya. Es por esto que el texto "Line 1 " tiene un espacio despus del caracter "1", para borrar los caracteres a su derecha conforme se mueve el texto a la izquierda.

Programa Ejemplo - CursorPositions.bs2

Este programa introduce unos trucos bsicos para colocar el cursor. Revise CursorPositions.bs2 y trate de predecir lo que el programa har que haga la LCD. Tambin trate de predecir la secuencia y el tiempo. Introduzca, salve y corra CursorPositions.bs2. Compare el comportamiento de la LCD con sus predicciones.

' Sensores inteligentes y sus Aplicaciones - CursorPositions.bs2 ' Muestra valores numericos con la LCD Serial Parallax. ' {$STAMP BS2} ' {$PBASIC 2.5} index character offset VAR VAR VAR Nib Byte Byte ' Dispositivo Objeto ' Lenguaje = BASIC Stamp 2 = PBASIC 2.5

' Variable del ciclo FOR...NEXT ' Guardado del caracter ' Valor de compensacion ' Inicializa la LCD ' Retraso de 1/2 segundo

SEROUT 14, 84, [22, 12] PAUSE 500

' Muestra caracteres equidistantes en la linea 0 cada 200 ms. SEROUT 14, 84, 200, [128, "L", 131, "I", 134, "N", 137, "E", 140, "-", 143, "1"] PAUSE 1000

Pgina 16 Sensores Inteligentes y sus Aplicaciones

' Cambia "Line 1" sobre la linea 1 de derecha a izq, luego izq a derecha. FOR index = 9 TO 0 ' IMPORTANTE: Asegurese de que haya un espacio luego del 1 en "Line 1 ". SEROUT 14, 84, [148 + index, "Line 1 "] PAUSE 100 NEXT FOR index = 0 TO 9 ' IMPORTANTE: Asegurese de que haya un espacio entre " y la letra L. SEROUT 14, 84, [148 + index, " Line 1"] PAUSE 250 NEXT PAUSE 1000 ' 1 segundo de retraso

' Limpia LCD, luego muestra "ALL DONE" al centro y flashea 5 veces SEROUT 14, 84, [12]: PAUSE 5 ' Limpia la LCD SEROUT 14, 84, [135, "ALL", 13, 154, "DONE!"]' "ALL" y "DONE" centrados FOR index = 1 TO 4 SEROUT 14, 84, 500, [21, 22] NEXT END ' Flashea 5 veces

' Fin del programa

Su Turno - Mas sobre el Posicionado

Desplegados ms elaborados se pueden beneficiar con ciclos y las tablas de valores. He aqu un ejemplo del mensaje "T E S T" en un ciclo y con la ayuda de un par de comandos LOOKUP. Note que usted puede controlar la posicin de cada caracter ajustando los valores de offset en la segunda lista de valores del comando LOOKUP.PAUSE 1000 SEROUT 14, 84, [12]: PAUSE 5 SEROUT 14, 84, ["This is a", 13] ' Limpia la pantalla ' Texto y CR

FOR index = 0 TO 3 ' secuencia de Caracteres PAUSE 600 LOOKUP index, ["T", "E", "S", "T"], character LOOKUP index, [ 1, 5, 9, 13], offset SEROUT 14, 84, [(148 + offset), character] NEXT

Intntelo!

Cap 1: La pantalla LCD Serial Parallax Pgina 17

ACTIVIDAD #3: APLICACION EN UN TIMEREsta actividad aplica las tcnicas de la actividad # 2 a un timer de hora-minuto-segundo.Mostrando el Tiempo Transcurrido

He aqu un bloque de cdigo que enciende la LCD, la limpia y coloca algunos caracteres que no cambiarn. El resto del programa puede entonces desplegar los valores numricos cambiantes de hora, minuto y segundo junto a los caracteres fijos "h", "m" y "s".SEROUT 14, 84, [22, 12] PAUSE 5 SEROUT 14, 84, ["Time Elapsed...", 13] SEROUT 14, 84, [" h m s"] ' Enciende LCD y limpia ' Pausa 5 ms para limpiar ' Texto + retorno de carro ' Texto en la segunda linea

Para esta aplicacin, los cdigos de control para colocacin del cursor son particularmente tiles. Por ejemplo, el cursor puede ser colocado en la lnea 1, caracter 0 antes de enviar el valor decimal de 2 dgitos de las horas. El cursor puede ser movido a la lnea 1, caracter 5 para desplegar los minutos y luego movido a la lnea 1, caracter 10 para desplegar los segundos. Un comando SEROUT que mustra los valores de las 3 variables, en posiciones correctas:SEROUT 14, 84, [ 148, DEC2 hours, 153, DEC2 minutes, 158, DEC2 seconds ]

El siguiente programa ejemplo aplica este concepto con tan solo las habilidades de tiempo del modulo BASIC Stamp. La precisin no es por mucho la de un reloj de mueca digital; sin embargo es lo suficientemente Buena para mostrar como el desplegar la hora puede trabajar con el posicionado de caracteres. Para mayor precisin, intente incorporar el circuito integrado de tiempo DS1302. Est disponible en www.parallax.com, solo teclee DS1302 en el campo de bsqueda.Programa Ejemplo - LcdTimer.bs2

Este programa ejemplo despliega las horas, los minutos y los segundos transcurridos con la LCD Serial Parallax. Apretando el botn de RESET en la tarjeta Board of Education, usted puede reiniciar el timer. Introduza, salvey corra LcdTimer.bs2. Verifique que la pantalla trabaja adecuadamente.

Pgina 18 Sensores Inteligentes y sus Aplicaciones

' Sensores inteligentes y sus Aplicaciones - LcdTimer.bs2 ' Muestra el tiempo transcurrido con BS2 y Parallax Serial LCD. ' {$STAMP BS2} ' {$PBASIC 2.5} hours minutes seconds VAR VAR VAR Byte Byte Byte ' Directiva de Stamp ' Directiva de PBASIC ' Guarda horas ' Guarda minutos ' Guarda segundos ' Inicia LCD y limpia pantalla ' Pausa 5 ms para limpiar ' Texto + retorno de carro ' Texto en segunda linea

SEROUT 14, 84, [22, 12] PAUSE 5 SEROUT 14, 84, ["Time Elapsed...", 13] SEROUT 14, 84, [" h m s"] DO

' Rutina Principal ' Calcula horas, minutos, segundos IF seconds = 60 THEN seconds = 0: minutes = minutes + 1 IF minutes = 60 THEN minutes = 0: hours = hours + 1 IF hours = 24 THEN hours = 0 ' Muestra digitos en LCD en Linea 1. Los valores 148, 153, 158 colocan ' el cursor en los caracteres 0, 5, y 10 para los valores de tiempo. SEROUT 14, 84, [148, DEC2 hours, 153, DEC2 minutes, 158, DEC2 seconds ]

PAUSE 991 seconds = seconds + 1 LOOP

' Pausa + consumo ~ 1 segundo ' Incrementa segundo contador ' Repite Rutina Principal

Su Turno - Definiendo Cdigos de Control con Constantes

Hasta este punto, los cdigos de control de la LCD han tenido valores decimales. Sin embargo, cuando est escribiendo o leyendo un programa largo, memorizar todos estos valores de cdigos de control puede ser tedioso. Es mejor declarar una constante para cada cdigo de control al principio del programa. Luego, usar nombres de constantes en vez de nmeros. Tambin puede hacer lo mismo con el valor de BaudMode y luego tambin agregar una directiva PIN para el pin P14 de entrada/salida. He aqu un ejemplo:LcdPin T9600 LcdCls LcdCr LcdOff PIN CON CON CON CON 14 84 12 13 21 ' pin de E/S de la LCD ' True, 8-bits, no parity, 9600 ' Form feed -> clear screen ' Retorno de Carro ' Apaga la pantalla

Cap 1: La pantalla LCD Serial Parallax Pgina 19

LcdOn Line0 Line1

CON CON CON

22 128 148

' Enciende la pantalla ' Linea 0, caracter 0 ' Linea 1, caracter 0

Estas declaraciones harn a su cdigo ms fcil de entender, lo cual es especialmente importante si decide hacer cambios a su programa despus de no haberlo visto por varios meses. Por ejemplo, el primer comando SEROUT puede ser re-escrito as:SEROUT LcdPin, T9600, [LcdOn, LcdCls]

El comando SEROUT en LcdTimer.bs2 que muestra los nmeros en la lnea 1 de la LCD puede ser re-escrito como sigue:SEROUT LcdPin, T9600, [(Line1 + 0), DEC2 hours, (Line1 + 5), DEC2 minutes, (Line1 + 10), DEC2 seconds]

Salve LcdTimer.bs2 bajo un nuevo nombre. Agregue constantes descriptivas a su programa. Reemplace tantos nmeros como pueda con nombres de constantes significativos. Corra su programa y corrija segn lo requiera.

ACTIVIDAD #4: CARACTERES PERSONALIZADOS Y ANIMACIN EN LCDSi Bien no toda imagen ahorra mil palabras, an las que ahorra una frase o dos son tiles cuando solo cuenta con 32 espacios de caracteres para trabajar. Un ejemplo de una imagen til es el cursor de reloj de arena que su computadora muestra para hacerle saber que el programa est ocupado. Este simple cono animado trabaja mucho mayor que un mensaje en algn lugar de la pantalla diciendo por favor espere, el programa est ocupado. Esta actividad usa un reloj de arena para introducir tcnicas para definir, guardar, desplegar y animar caracteres personalizados.Caracteres Personalizados en la LCD Parallax

La LCD Serial Parallax tiene espacio asignado para ocho caracteres mostrados en la Figura 1-13. Para desplegar el carcter personalizado 0, solo mande a la LCD el valor 0 con el comando SEROUT. De igual manera, para mostrar el caracter Personalizado 1, solo mande un 1, para mostrar el caracter Personalizado 2, mande un 2, etc. Note que los Caracteres 0 y 1 estn pre-configurados como la contradiagonal y el tilde. He aqu un ejemplo de comando SEROUT que muestra ambos - SEROUT 14, 84, [0, 1].

Pgina 20 Sensores Inteligentes y sus Aplicaciones

Figura 1-13: Caracteres personalizados predefinidos O (contradiagonal) y 1 (Tilde)

Programa Ejemplo: PredfinedCustomCharacters.bs2

Este ejemplo enva a la LCD serial los dos comandos para desplegar los caracteres personalizados 0 y 1, la contradiagonal "\"y el tilde"~". Introduzca y corra el programa y verifique que muestra la contradiagonal y el tilde.

' Sensores inteligentes y sus Aplicaciones - PredefinedCustomCharacters.bs2 ' {$STAMP BS2} ' {$PBASIC 2.5} SEROUT 14, 84, [22, 12] PAUSE 5 ' Inicializa la LCD ' 5 ms retardo para limpiar

' Muestra caracteres personalizados pre-definidos:"\" (caracter predefinido 0) ' y "~" (caracter predefinido 1). SEROUT 14, 84, [0, 1]

Definiendo (and Redefiniendo) Caracteres Personalizados

Los caracteres personalizados de la LCD Serial Parallax estn guardados en su RAM. Para definir uno de sus ocho caracteres personalizados, su commando SEROUT tiene que decirle a la LCD cul de los 8 caracteres personalizados est definiciendo y entonces describer los estados de encendido/apagado de cada pixel en el caracter. Cada carcter tiene 40 pixeles, 8 pixeles de alto por 5 de ancho. La Figura 6-14 muestra los comandos de Definicin que puede enviar a la LCD para decirle cul es el caracter que est a punto de definir. Tambin lo puede ver as: para decirle a la LCD cul caracter est definiendo, envele el valor del caracter personalizado, ms 248. Por ejemplo, si usted quiere definir el caracter personalizado 0, mande 248, si quiere definir el caracter personalizado 1, mande 249, y as sucesivamente hasta 255 para el caracter personalizado 7.

Cap 1: La pantalla LCD Serial Parallax Pgina 21

Figura 1-14: Comandos de Definicin de Caracteres personalizados

Luego de enviar el cdigo que le dice a la LCD cul caracter personalizado va a definir, debe enviar 8 bytes que describan al caracter. La LCD usa los 5 bits ms bajos de cada byte que recibe para describir cada una de las 8 lneas de 5 pixeles de ancho que hay en el caracter. La Figura 1-15 muestra un ejemplo de la definicin del caracter personalizado 0 para un reloj de arena que acaba de ser volteado.SEROUT 14, 84, [248, %00000, %11111, %11111, %01110, %00100, %01010, %10001, %11111]

Figura 1-15 Redefiniendo el caracter personalizado 0

Note como cada valor sucesivo en el comando SEROUT corresponde a una lnea de pixeles en el caracter personalizado. Note tambin como los unos corresponde a pixeles negros y los ceros corresponden a blancos.Las definiciones de caracteres personalizados SEROUT no son permanentes. Cada vez que la LCD es encendida y apagada los caracteres personalizados son borrados. Puesto que BASIC Stamp y la LCD comparten la misma batera, el programa BASIC Stamp tambin reinicia cuando la energa es restituida. Es buena prctica definir los caracteres personalizados que planea usar al principio del programa, de tal forma que BASIC Stamp pueda definir los caracteres personalizados cada vez que la energa se conecte.

Pgina 22 Sensores Inteligentes y sus Aplicaciones

Esta definicin de caracter personalizado de un reloj de arena con sus 4 pixeles de arena abajo usa 255 para decirle al LCD que lo haga para el Caracter personalizado 7. Tambin usa una tcnica para dibujar los caracteres con asteriscos en los comentarios a la derecha del comando SEROUT. Empieza SEROUT con todos los valores binarios colocados en %00000 y entonces dibuja el caracter con asteriscos en el comentario a la derecha. Despus de que se ve bien, usa los asteriscos para indicar cules ceros deben ser cambiados a unos.SEROUT 14, 84, [255, %00000, %11111, %10001, %01010, %00100, %01110, %11111, %11111] ' ' ' ' ' ' ' ' ' Define Caracter Personalizado 7 * * * * * * * * * * * * * * * * * * * * *

* *

Figura 1-16 muestra como los dos comandos SEROUT recin discutidos redefinen los caracteres personalizados de la LCD.Figura 1-16: After Defining Caracteres personalizados 0 y 7

Algunas veces los caracteres personalizados se definen con valores hexadecimales. Incluso ver esto en programas ejemplos disponibles como descargas en la pgina del producto LCD Serial Parallax en www.parallax.com. Para informacin de cmo trabaja la definicin hexadecimal de caracteres, intente la actividad en el apndice B.

Con estas nuevas definiciones puede escribir un ciclo para hacer que el reloj de arena cambie de vaco a lleno, indicando que el usuario debe esperar. El siguiente bloque DO...LOOP hace esto primero colocando el cursor en la lnea 0, caracter 5 en la LCD. Luego muestra el caracter personalizado 0, el reloj de arena recin volteado. Despus de una breve PAUSE, el programa enva el comando de espacio atrs (8) para que el cursor regrese al caracter 5. Luego, manda el caracter personalizado 7, el reloj de arena con la arena ya en su base. Repitiendo esta secuencia parece como si el reloj de arena ha sido volteado, drenado, volteado otra vez, drenado nuevamente, etc.

Cap 1: La pantalla LCD Serial Parallax Pgina 23

DO SEROUT 14, 84, SEROUT 14, 84, PAUSE 1250 SEROUT 14, 84, SEROUT 14, 84, PAUSE 1500 LOOP [133] [0] [8] [7] ' ' ' ' ' ' Cursor -> Linea 0, char Muestra Caracter Personalizado 0 Retraso de 1.25 segundos Espacio atras Muestra Caracter Personalizado 7 Retraso de 1.50 segundos

Programa Ejemplo: Hourglass.bs2

Este programa define y muestra los caracteres personalizados del reloj recin discutidos. Introduzca, salve y corra el programa. Verifique que despliega alternadamente los dos caracteres de reloj de arena en el sexto caracter de la lnea superior de la LCD.

' -----[ Titulo ]------------------------------------------------------------' Sensores inteligentes y sus Aplicaciones - Hourglass.bs2 ' Define y muestra caracteres personalizados. ' {$STAMP BS2} ' Dispositivo objeto = BASIC Stamp 2 ' {$PBASIC 2.5} ' Lenguaje = PBASIC 2.5 ' -----[ Inicializacion ]----------------------------------------------------PAUSE 250 SEROUT 14, 84, [248, %00000, %11111, %11111, %01110, %00100, %01010, %10001, %11111] SEROUT 14, 84, [255, %00000, %11111, %10001, %01010, %00100, %01110, %11111, %11111] ' Estabiliza fuente de energia ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' Define Caracter Personalizado 0 * * * * * * * * * * * * * * * * * * * * * * *

Define Caracter Personalizado 7 * * * * * * * * * * * * * * * * * * * * *

* *

Pgina 24 Sensores Inteligentes y sus Aplicaciones

SEROUT 14, 84, [22, 12] PAUSE 5

' Enciende pantalla y limpia ' 5 ms retraso para limpiar

' -----[ Main Rutina ]------------------------------------------------------DO SEROUT 14, 84, SEROUT 14, 84, PAUSE 1250 SEROUT 14, 84, SEROUT 14, 84, PAUSE 1500 LOOP [133] [0] [8] [7] ' ' ' ' ' ' Cursor -> Linea 0, char Muestra Caracter Pers. 0 Retraso de 1.25 seconds Espacio atras Muestra Caracter Pers. 7 Retraso de 1.50 seconds

Su Turno

La Figura 1-17 muestra a los caracteres personalizados describiendo a los granos de arena en el reloj movindose de arriba hacia abajo.Figura 1-17: Caracteres personalizados para reloj de arena animado

Salve Hourglass.bs2 como HourGlassYourTurn.bs2. Expanda la rutina de Inicializacin de tal forma que defina los ocho caracteres personalizados que se muestran en la Figura 1-17. Modifique la Rutina Principal de tal forma que de un efecto animado de los granos de arena cayendo de arriba a abajo.

He aqu una Rutina principal que puede tambin intentar para animar los ocho caracteres personalizados una vez que los haya dado de alta en la seccin de Inicializacin:DO ' Coloca el cursor en el caracter 5, y muestra el Caracter personalizado 0. SEROUT 14, 84, 100, [133, 0] PAUSE 750 ' Retraso de 0.750 segundos

Cap 1: La pantalla LCD Serial Parallax Pgina 25

' Espacio atras, Caracter Pers. 1, espacio atrs, Caracter Pers. 2, etc. ' Ritmo opional en el argumento de 100 manda cada valor cada 1/10 segundo. SEROUT 14, 84, 100, [8, 1, 8, 2, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7, 8] PAUSE 750 LOOP

Intntelo!An cuando la LCD solo guarda 8 caracteres personalizados a la vez, su programa puede guarder tantos como necesite. Recuerde, su programa puede redefinir los caracteres personalizados en cualquier momento. Si su aplicacin necesita 20 caracteres personalizados, su programa PBASIC puede guardarlos y redefinirlos en la LCD segn se requiera. Usted puede desplegar el reloj de arena con un solo caracter personalizado. La animacin del reloj de arena completa puede hacerse con un solo caracter personalizado. El truco est en redefinirlo cada vez que la pantalla es actualizada.

ACTIVIDAD #5: AVANCE DE TEXTO TRAVES DE LA PENTALLASi su mensaje es muy ancho para desplegarse en los 16 caracteres de la pantalla, puede ser que funcione hacerlo avanzar a lo largo de la misma. La Figura 1-18 muestra un ejemplo. Con el avance, el texto empieza en la parte de la derecha de la pantalla. Luego, el texto cambia a lo largo de la pantalla una letra a la vez.

Figura 1-18 Text Avanzando

El cdigo para el avance que se presenta en esta actividad es bastante diferente del programa ejemplo en la Actividad #2, el cual hizo que la lnea 1 se moviera a lo ancho de

Pgina 26 Sensores Inteligentes y sus Aplicaciones

la pantalla. La principal diferencia estriba en que en la Actividad # 2 el mensaje se detena en la parte izquierda. Cuando el mensaje es mas largo que la pantalla, el detenerse en la parte izquierda de la pantalla impide hacer visible el resto del mensaje. Para hacer que un texto avance sobre solo una lnea, el programa tiene que empezar con la primera letra en el mensaje y desplegarla en la posicin extrema derecha. Despus de un corto retraso, el programa debe mover el cursor a la segunda posicin (de derecha a izquierda) de caracteres de la pantalla, y all imprimir tanto la primera como la segunda letra. Debe continuar este proceso hasta que el cursor llegue hasta la parte izquierda de la pantalla. Entonces, el cursor debe ser reposicionado repetidamente a la misma posicin en la que porciones de texto de 16 caracteres puedan ser desplegadas, haciendo que el mensaje aparezca con corrimiento de derecha a izquierda, una letra a la vez. La tcnica de programacin para este proceso es llamada de ventana corrediza. Adems de ser de utilidad para la LCD Parallax, esta tcnica es lo que ve cuando sube y baja texto en programas como el Editor de BASIC Stamp o su explorador de Internet. Tambin se usa en programas para transmitir y recibir paquetes TCP/IP. Cada vez que abre su explorador de red, hay ms de una instancia de cdigo de ventana corrediza trabajando.Una Subrutina de Desplazamiento Configurable

El siguiente programa ejemplo presenta una subrutina que es conveniente para desplegar una variedad de mensajes con desplazamiento con una cantidad mnima de esfuerzo. Todo lo que involucra es poner los mensajes en directivas DATA precedidas por nombres Smbolos, establecer algunas variables y luego llamar la subrutina de desplazamiento. He aqu algunos ejemplos de directivas DATA.Message1 Message2 Message3 Message4 DATA @ 2, "Message " DATA "again" DATA "Larger message, going faster" DATA

El primer mensaje de texto empieza en una direccin EEPROM igual al valor del smbolo del Message1, el cual ha sido establecido en 2 a travs del argumento opcional @Address de la directiva DATA. La direccin despus del final del Message1 es la direccin EEPROM 11. Esto es denotado por la etiqueta Message2, lo cual es tambin el inicio del Segundo mensaje. Puesto que usted puede establecer variables iguales a los valores de Message1 a Message4, es un sistema especialmente flexible para una variedad de mensajes.

Cap 1: La pantalla LCD Serial Parallax Pgina 27

El siguiente programa ejemplo tambin tiene variables que usted puede establecer para configurar diferentes posiciones de ventana, anchos e incrementos. Despus de establecer estos valores de variables, usted puede entonces hacer una llamada a la subrutina Scroll_Message, y ella har el resto del trabajo. He aqu un ejemplo de un bloque de cdigo que hace que la subrutina despliegue todos los caracteres entre las etiquetas Message1 y Message2 en los cuatro caracteres centrales de la lnea superior de la LCD.messageStart = Message1: windowLeft = 134: increment = 1 GOSUB Scroll_Message messageEnd = message2 windowRight = 137

Las direcciones EEPROM inicial y final son guardadas en las variables messageStart y messageEnd. Las direcciones de los caracteres de la LCD inicial y final que definen la ventana son guardadas en windowLeft y windowRight. Finalmente pero no por ltimo, la variable increment se establece al nmero de caracteres que el texto mueve cada vez que cambia. Con todos esos valores establecidos, la subrutina Scroll_Message tiene todo lo que necesita para hacer su trabajo. Hay tres ejemplos ms en la rutina principal del siguiente programa. No todos los ejemplos asignan valores a todas las variables. Algunos de los ejemplos solo establecen algunos valores porque son valores que se reciclan y que fueron asignados antes de la previa llamada de subrutina. Por ejemplo, el valor de la variable increment fue establecido en 1 antes de la primera llamada de subrutina. Puesto que la subrutina Scroll_Message no hace cambios a esa variable, el valor 1 no necesita ser reasignado antes de llamar a la subrutina Scroll_Message nuevamente.' Cambia los valores de varias variables de configuracion ' y demuestra el efecto sobre la pantalla con cada cambio. windowLeft = 131: windowRight = 140 GOSUB Scroll_Message

He aqu el ultimo ejemplo en la Rutina Principal. Note que re is the last ejemplo en the Main Routine. Note que se encarga de buena parte de la segunda linea y avanza dos caracteres a la vez:messageStart = Message3: windowLeft = 150: increment = 2 GOSUB Scroll_Message messageEnd = message4 windowRight = 161

Pgina 28 Sensores Inteligentes y sus Aplicaciones

Programa Ejemplo - TestScrollingSubroutine.bs2

Revise los bloques de cdigo en la Rutina Principal del programa y prediga qu tan ancha sera la ventana de avance, qu texto sera desplegado y cuntos caracteres cambiar el mensaje a la vez. Introduzca, salve y corra TestScrollingSubroutine.bs2. Compare sus predicciones a lo que realmente ocurrio y reconcilie las diferencias.

' -----[ Titulo ]------------------------------------------------------------' Sensores inteligentes y sus Aplicaciones - TestScrollingSubroutine.bs2 ' Avanza un mensaje de texto a traves de una ventana de 4 caracteres en la LCD ' {$STAMP BS2} ' {$PBASIC 2.5} ' -----[ directivas ' Directiva BASIC Stamp ' Directiva PBASIC DATA]----------------------------------------------------

Message1 DATA @ 2, "Message " Message2 DATA "again" Message3 DATA "Larger message, going faster..." Message4 DATA ' -----[ Definiciones E/S]---------------------------------------------------LcdPin PIN 14 ' Pin de E/S de la LCD

' -----[ Constantes ]--------------------------------------------------------T9600 LcdCls LcdCr LcdOff LcdOn Line0 Line1 TimeOn TimeOff CON CON CON CON CON CON CON CON CON 84 12 13 21 22 128 148 250 0 ' ' ' ' ' ' ' True, 8-bits, no parity, 9600 Form feed -> limpia pantalla Retorno de carro Apaga la pantalla Enciende la pantalla Linea 0, caracter 0 Linea 1, caracter 0

' Caracter de tiempo de encendido ' Caracter de tiempo de atenuac.

' -----[ Variables ]---------------------------------------------------------' Variables funcionales para la subrutina Scroll_Message. cursorStart head tail pointer character VAR VAR VAR VAR VAR Byte Byte Byte Byte Byte ' ' ' ' ' Posicion del primer caracter Inicio del texto desplegado Fin del texto desplegado apuntador de direccion EEPROM Guarda un caracter

Cap 1: La pantalla LCD Serial Parallax Pgina 29

' Variables de configuracion para la subrutina Scroll_Message. increment windowRight windowLeft messageStart messageEnd VAR VAR VAR VAR VAR Nib Byte Byte Byte Byte ' ' ' ' ' ' ' Caracteres por cambiar Direccion del caracter de extrema derecha Direccion del caracter de extrema izquierda Direccion EEPROM para inicio Direccion EEPROM para fin

' -----[ Inicializacion ]----------------------------------------------------SEROUT LcdPin, T9600, [LcdOn, LcdCls] ' Enciende y limpia pantalla PAUSE 5 ' Retraso 5 ms ' -----[ Rutina Principal]---------------------------------------------------' Establece valores de variables de configuracion, luego llama Scroll_Message. messageStart = Message1: windowLeft = 134: increment = 1 GOSUB Scroll_Message messageEnd = message2 windowRight = 137

' Cambia los valores de varias variables de configuracion y demuestra el ' efecto en la pantalla con cada cambio. windowLeft = 131: GOSUB Scroll_Message messageStart = Message1: GOSUB Scroll_Message messageStart = Message3: windowLeft = 150: increment = 2 GOSUB Scroll_Message END ' -----[ Subrutina - Scroll_Message ]---------------------------------------Scroll_Message: cursorStart = windowRight - increment + 1 head = 0 tail = increment - 1 ' ciclo de avance ' Caracter ExtremaDer en ventan ' Inicializa head y tail ' del mensaje windowRight = 140

messageEnd

= message3

messageEnd = message4 windowRight = 161

Pgina 30 Sensores Inteligentes y sus Aplicaciones

DO WHILE tail (windowRight - windowLeft) THEN head = head + increment ELSE head = 0 ENDIF ciclo ' Repite ciclo de avance RETURN

La ventana corrediza de la subrutina Scroll_Message

Digamos que la ventana de texto en movimiento es de 4 caracteres de ancho en la lnea superior porque hay otros mensajes que deben ser desplegados todo el tiempo en la LCD. El asunto ahora es recorrer el texto en la ventana pequea sin sobreescribir cualquiera de los caracteres desplegados fuera de ella.

Cap 1: La pantalla LCD Serial Parallax Pgina 31

La Figura 1-19 muestra el arreglo y Paso 0 de una ventana de 4 caracteres. En el paso de configuracin, nada se despliega en la ventana. Luego, el paso 0 coloca el cursor en la posicin 137 y despliega el carcter 0, esto es, la letra "M".Figura 1-19: Cambiando Texto a travs de la ventana, paso de Configuracin y Paso 0

La Figura 1-20 muestra los pasos 1 y 2. Despus de esperar un momento para que la "M" sea visible, el cursor tiene que ser colocado en la posicin 136 y luego los caracteres 0 y 1, "Me", podrn ser desplegados. Luego, el cursor se mueve a la posicin 135 y desplegar los caracteres 0 al 2, "Mes".

Figura 1-20: Cambiando Texto a travs de la ventana, Pasos 1 y 2

Pgina 32 Sensores Inteligentes y sus Aplicaciones

La Figura 1-21 muestra los Pasos 3 y 4. El cursor movindose a la posicin 134 y desplegando los caracteres 0 al 3, "Mess", describe an la misma secuencia, pero cuando la "M" abandona la ventana, la secuencia tiene que cambiar. El punto de inicio del cursor, o apuntador de inicio, no puede avanzar a la izquierda; debe permanecer en la posicin 134. Tambin, en vez de desplegar los caracteres 0 al 3, los caracteres 1 al 4, "essa", deben ser desplegados.

Figura 1-21: Cambiando Texto a travs de la ventana, Pasos 3 y 4

La posicin de inicio del cursor tiene que mantenerse en 134 mientras que los caracteres de head (punta) y tail (cola) continan avanzado: 2 al 5 - "ssag", 3 al 6 - "sage". La ventana se mantiene corriendo y la Figura 1-22 muestra del penltimo paso de los caracteres 6 al 9 - "e" seguida por tres espacios, y finalmen te el ltimo paso, 7 al 10 cuatro caracteres de espacio.

Figura 1-22: Cambiando Texto a travs de la ventana, Pasos 9 y 10

Cap 1: La pantalla LCD Serial Parallax Pgina 33

TestScrollingSubroutine.bs2 usa las variables mostradas en la Figura 1-23 para la ventana corrediza. La variable cursorStart guarda la posicin en la que el cursor es colocado cada momento antes de que empiece a escribir las letras en el mensaje. En la figura, cursorStart guarda el valor 135. La siguiente vez que el texto cambia a la izquierda, guardar 134. Dos variables, head y tail, guardan las direcciones de principio y fin del texto que entrarn en la ventana de mensaje. En la figura, head guarda 0, y tail guarda 2. La variable pointer se usar por el comando READ para obtener la letra adecuada, y la variable character guardar la letra que el comando READ recupere de la EEPROM.Figura 1-23: Variables de TestScrollingRoutine.bs2.

En la Figura 1-23, pointer est apuntando a la letra 1 en la secuencia, que es "e". Un ciclo FOR...NEXT usa la variable pointer para leer cada caracter en la EEPROM, desde head hasta tail y entonces despliega cada uno con el comando SEROUT. Cada vez que el texto cambie a la derecha, el nuevo texto debe sobreescribir el texto anterior con el mismo ciclo head hasta tail.

Pgina 34 Sensores Inteligentes y sus Aplicaciones

RESUMENLa pantalla de cristal lquido (LCD) es usada en una tremenda variedad de productos. Una pantalla de caracteres simple como la LCD serial Parallax 2X16 puede substituir las caractersticas de la Terminal de Depuracin, lo cual es especialmente util cuando la prueba en campo de su proyecto no est dentro del alcance de un cable serial y una PC. La LCD Serial Parallax tiene un potencimetro de ajuste de contraste atrs, junto con dos interruptores que puede usar para seleccionar de entre 3 diferentes velocidades baud y un modo de auto-prueba. Hay 3 pins en la parte posterior de la LCD Serial Parallax, ya que se requieren solo 3 conexiones para operarla: Vdd, RX, y Vss. La LCD Serial Parallax tiene un conjunto extensor de commandos y una lista completa de estos commandos se incluye en la Documentacin del Producto LCD Serial Parallax (Apndice B). Este captulo presenta comandos para encender y apagar la pantalla, limpiarla, colocar el cursor, controlar el encendido de la luz de fondo para el modelo con luz de fondo y para desplegar caracteres. La LCD Serial Parallax depende de mensajes seriales emitidos desde BASIC Stamp y que son programados dentro de ella a travs del comando SEROUT de PBASIC. Muchas de las caractersticas del comando DEBUG pueden ser usadas con el commando SEROUT, incluyendo texto entre comillas y formateadotes como DEC, BIN, DIG, etc. Todos estos tienen resultados en la LCD que son similares a los de la Terminal de Depuracin. Los cdigos de control de la LCD son diferentes y ms numerosos que los que se usan con la Terminal de Depuracin. En vez de intentar usar CR, CLS, CRSRXY, etc, use los valores de cdigos de control listados en el conjunto de commandos de la LCD. Tambin es buena idea hacer constanes para estos valores, tales como LcdCls CON 12, LcdClr CON 13, LcdOn CON 22, LcdOff CON 21, y as sucesivamente. La LCD Serial Parallax tiene 8 caracteres personalizados, del 0 al 7. Usted puede desplegar cualquiera de ellos al enviar su valor a la LCD. Por ejemplo, SEROUT 14, 84, [3] hace que la LCD escriba el Caracter personalizado 3. Los comandos para definir los caracteres personalizados van del 248 al 255. Enviar un 248 instruye a la LCD para definir el carcter personalizado 0, 249 define el Caracter Personalizado 1, etc., hasta el 255, lo cual define el Caracter personalizado 7. Despus de enviar un comando para definir un caracter personalizado, los siguientes 8 bytes son valores binarios, cuyos 5 bits

Cap 1: La pantalla LCD Serial Parallax Pgina 35

mas bajos definen los pixeles en una determinada lnea de pixeles. Un 1 hace al pxel negro, un 0 lo hace blanco. Este captulo tambin presenta una subrutina para que avance texto de derecha a izquierda dentro de una ventana. Esta subrutina busca direcciones de inicio y paro que corresponden a etiquetas de direcciones Smbolo que preceden a directivas DATA que contienen el texto a ser desplegado. La manera en que se despliega el texto de la subrutina esta definido por 5 variables: messageStart, messageEnd, windowLeft, windowRight, e increment. Las variables messageStart y messageEnd guardan las direcciones EEPROM de inicio y fin del texto a ser desplegado. Las variables windowLeft y windowRight guardan las direcciones de caracteres en la LCD de inicio y fin que definen la ventana, la variable increment guarda cuntos caracteres a la vez se cambian de derecha a izquierda.Preguntas

1. Mencione 3 dispositivos que usa todos los das que despliegan informacin con la LCD. 2. Qu significan el 2 y el 16 en el trmino 2x16 LCD? 3. Qu comando usa para enviar informacin a la LCD Serial Parallax? 4. De qu manera son diferentes los comandos DEBUG y SEROUT? 5. En qu posicin deben estar los interruptores SW1 y SW2 si necesita escribir un programa que enve un mensaje a la LCD Serial Parallax a una velocidad de 19,200 bps? 6. Qu componente ajusta para cambiar el contraste de la pantalla LCD? 7. Qu comando SEROUT limpia la pantalla? 8. Qu consideraciones especiales hay que tomar en cuenta al usar los cdigos de control CR, CLS, y HOME del comando DEBUG con la LCD Serial Parallax? 9. Cules son los 3 argumentos que necesita para un comando SEROUT mnimo? 10. Cmo puede hacer que un texto desplegado en la LCD se encienda y apague intermitentemente? 11. Qu rangos de valores puede enviar a la LCD para colocar el cursor? 12. Qu carcter reside en el carcter personalizado 1 por definicin? 13. Cmo despliega un caracter personalizado despus de que ha sido definido? 14. Cules son algunas aplicaciones de la ventana corrediza?

Pgina 36 Sensores Inteligentes y sus Aplicaciones

Ejercicios

1. Haga que el mensaje "Hola" aparezca en la terminal de Depuracin sin usar el comando DEBUG. 2. Despliegue el mensaje "Hola" centrado en la lnea superior de la LCD. 3. Haga que el mensaje "Hola" encienda y apague alternadamente cada segundo. 4. Escriba un comando para hacer que el mensaje "Inicio" aparezca al principio de la lnea 0 y el mensaje "Final" aparezca en el lado derecho de la lnea 1. 5. Escriba un comando SEROUT para enviar mensajes a la LCD cuando SW1 y SW2 estn ambos encendidos. 6. Escriba un comando SEROUT para enviar un mensaje a la LCD cuando SW1 est encendido y SW2 est apagado.Proyectos

1. Escriba un programa que despliegue un mensaje de 6 lneas. Empieza desplegando las lneas 0 y 1 con una pausa. Luego avanza a las lneas 2 y 3, nuevamente con una pausa. Finalmente, despliega las lneas 4 y 5. 2. Escriba un programa que imprima 3 copias de un carcter personalizado. Luego, redefina el caracter personalizado. Qu pasa con las 3 copias de este caracter?

Cap 1: La pantalla LCD Serial Parallax Pgina 37

Soluciones

Q1. Q2. Q3. Q4.

Reloj de pulsera, calculadora, telfono (las respuestas pueden variar). Dos lneas de texto, cada una con 16 caracteres de ancho. El comando SEROUT. Cuando use el comando SEROUT debe especificar el nmero de pin y la velocidad baud. Q5. Ambos SW1 y SW2 deben estar en la posicin de encendido para 19,200 bps. Q6. Un potencimetro. Q7. El comando SEROUT 14, 84, [12] limpiar la pantalla. Q8. Las constantes PBASIC pre-definidas como CR, CLS, y HOME no estn necesariamente definidas correctamente para trabajar con la LCD serial. Q9. SEROUT requiere los argumentos Pin, Baudmode, y DataItem. Q10. Escriba el texto, luego apague y encienda la pantalla usando los caracteres de control 21 y 22. Q11. De 128 a 143 para la lnea 0 y 148-163 para la lnea 1. Q12. La contradiagonal. Q13. Enve a la LCD el valor del caracter personalizado con el comando SEROUT. Por ejemplo, SEROUT 14, 84, [4] desplegar el caracter personalizado 4. Q14. Las pantallas LCD, an las grandes que hay en estaciones de tren, terminales de aeropuertos o en eventos deportivos, asi como texto desplazndose en aplicaciones de Windows y paquetes TCP/IP.

E1. Del archivo de ayuda del Editor de BASIC Stamp: Para el Puerto serial interconstruido establezca el argumento Tpin a 16 en el comando SEROUT.' Sensores Inteligentes y sus Aplicaciones - Ch1_Ex01.bs2 ' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG "Hola, esto es DEBUG", CR SEROUT 16, 84, ["Hola Esto es SEROUT", CR]

E2. Ejemplo de solucin:' Sensores Inteligentes y sus Aplicaciones - Ch1_Ex02.bs2 ' {$STAMP BS2} ' {$PBASIC 2.5} SEROUT 14, 84, [22, 12] ' 1234567890123456 SEROUT 14, 84, [" Hello ", CR] ' Enciende y limpia pantalla ' Centra texto en linea sup.

Pgina 38 Sensores Inteligentes y sus Aplicaciones

E3. Ejemplo de solucin:' ' ' ' Sensores Inteligentes y sus Aplicaciones - Ch1_Ex03.bs2 Hcer que un mensaje encienda y apague una vez por segundo {$STAMP BS2} {$PBASIC 2.5} ' Enciende y limpia pantalla ' Centra texto en linea sup.

SEROUT 14, 84, [22, 12] ' 1234567890123456 SEROUT 14, 84, [" Hello ", CR] DO SEROUT 14, 84, [21] PAUSE 500 SEROUT 14, 84, [22] PAUSE 500 LOOP

' Apaga pantalla ' Enciende pantalla

E4. Ejemplo de solucin:' ' ' ' Sensores Inteligentes y sus Aplicaciones - Ch1_Ex04.bs2 Escribe Inicio empezando la Linea1, Final al final de la Linea2 {$STAMP BS2} {$PBASIC 2.5} 14, 14, 14, 14, 84, 84, 84, 84, [22, 12] ["Inicio"] [158] ["Final"] ' ' ' ' Enciende y Escribe en Linea2, 6o Escribe en limpia pantalla Linea 0 caracter de der. a izq. extremo der de la Linea 1

SEROUT SEROUT SEROUT SEROUT

E5. Ejemplo de solucin:' ' ' ' Sensores Inteligentes y sus Aplicaciones - Ch1_Ex05.bs2 Escribe a 19200 baud {$STAMP BS2} {$PBASIC 2.5} ' Enciende y limpia pantalla ' Escribe en Linea 0

SEROUT 14, 32, [22, 12] SEROUT 14, 32, ["Using 19200 bps"]

E6. Ejemplo de solucin:' ' ' ' Sensores Inteligentes y sus Aplicaciones - Ch1_Ex06.bs2 Escribe a 2400 baud {$STAMP BS2} {$PBASIC 2.5} ' Enciende y limpia pantalla ' Escribe en Linea 0

SEROUT 14, 396, [22, 12] SEROUT 14, 396, ["Using 2400 bps"]

Cap 1: La pantalla LCD Serial Parallax Pgina 39

P1. Ejemplo de solucin:' ' ' ' Sensores Inteligentes y sus Aplicaciones - Ch1_Project1.bs2 Despliega un mensaje de 6 lineas {$STAMP BS2} {$PBASIC 2.5} PIN CON 14 84

LcdPin T9600

PAUSE 250 SEROUT 14, 84, [22, 12] PAUSE 5 SEROUT LcdPin, SEROUT LcdPin, PAUSE 1500 SEROUT LcdPin, SEROUT LcdPin, PAUSE 1500 SEROUT LcdPin, SEROUT LcdPin, END T9600, ["Nunca deje que T9600, ["mi escuela T9600, ["obstruyera T9600, ["mi educacion. T9600, [" T9600, ["

' Enciende y limpia pantalla ' 5 ms retraso para limpiar "] "] "] "]

-Mark Twain"] 1835-1910 "]

P2. Las 3 copias cambiarn al nuevo caracter definido! continuacin, un programa muestra.' ' ' '

Es como magia. A

Sensores Inteligentes y sus Aplicaciones - Ch1_Project2.bs2 Escribe 3 copias de carcter predefinido, luego redefine caracter. {$STAMP BS2} ' Dispositivo objeto = BASIC Stamp 2 {$PBASIC 2.5} ' Lenguaje = PBASIC 2.5 CON CON VAR 128 148 Nib

Line0 Line1 copies

PAUSE 250 SEROUT 14, 84, [22, 12] PAUSE 5

' Enciende y limpia pantalla ' 5 ms retraso para limpiar

SEROUT 14, 84, [248, %00110, %00101, %00100, %11111, %00100, %01110, %10101, %00100]

' Define Caracter Pers. 0 ' * * ' * * ' * ' * * * * * ' * ' * * * ' * * * ' *

Pgina 40 Sensores Inteligentes y sus Aplicaciones

FOR copies = 1 TO 3 SEROUT 14, 84, [0] NEXT

' Despliega Caracter Pers. 0

PAUSE 1000 ' Permite tiempo para verlo SEROUT 14, 84, [Line1, "now re-defining"]' Despliega mensaje en Linea 1 PAUSE 1000 SEROUT 14, 84, [Line1, " "]' Limpia mensaje SEROUT 14, 84, [248, %00100, %10011, %01001, %00101, %00001, %00010, %00100, %11000] END ' Re-define Caracter Pers. 0 ' * ' * * * ' * * ' * * ' * ' * ' * ' * *

Captulo 2: Inclinacin con el Acelermetro Memsic Page 41

Captulo 2: El Sensor Ultrasnico de Distancia Ping)))El sensor Ping))) interactuando con un BASIC Stamp puede medir qu tan lejos estn los objetos. Con un rango de 3 centmetros a 3.3 metros, es una atraccin para cualquier cantidad de elementos robticos y proyectos de automatizacin. Es notablemente preciso y fcilmente detecta la distancia de un objeto al centmetro.

Figura 2-1 The Sensor Ultrasonico de Distancia Ping)))

CMO TRABAJA EL SENSOR PING)))?El sensor Ping))) enva un breve silbido con su altavoz ultrasnico y mide el tiempo de regreso del eco a su micrfono ultrasnico (Figura 2-2). El BASIC Stamp empieza enviandole un pulso para iniciar la medicin. Luego, el sensor Ping))) espera lo suficiente para que el programa del BASIC Stamp inicie un comando PULSIN. Entonces, al mismo tiempo que silba un tono de 40 kHz, le enva una seal alta al BASIC Stamp. Cuando detecta el eco con su micrfono ultrasnico, cambia la seal alta de regreso a seal baja.Figura 2-2: Como trabaja el sensor the Ping)))

Pgina 42 Sensores Inteligentes y sus Aplicaciones

El comando PULSIN del BASIC Stamp usa una variable para guardar cuanto dur la seal alta del sensor Ping))). El tiempo de esta medicin es lo que le tom al sonido viajar al objeto de ida y vuelta. Usando esta medicin y el dato de la velocidad del sonido en el aire, usted puede hacer que su programa calcule la distancia al objeto en centmetrosa, pulgadas, pies, etc.El silbido del sensor Ping))) no es audible porque 40 kHz es una frecuencia ultrasnica. Lo que consideramos sonido es la habilidad de nuestro odo interno para detectar las variaciones de la presin del aire causada por una vibracin. El nivel de estas variaciones determina el timbre del tono. Tonos de alta frecuencia resultan en sonidos de mayor timbre y tonos de baja frecuencia resultan en tonos de menor timbre. La mayora de las personas pueden or tonos que van desde los 20 Hz, el cual es un timbre muy bajo, a 20 kHz, el cual es un timbre muy agudo. Un sonido subsnico es aquel con frecuencias menores a 20 Hz, y un sonido ultrasnico es aquel con frecuencias por arriba de 20 kHz. Puesto que los silbidos del sensor Ping))) son a 40 kHz, definitivamente son ultrasnicos y no audibles.

ACTIVIDAD #1: MEDICIN DEL TIEMPO DE ECOEn esta actividad, probar el sensor Ping))) y verificar que le entrega mediciones del tiempo de eco que corresponden a la distancia de un objeto.Partes Requeridas

(1) Sensor Ultrasonico de Distancia Ping))) (3) Cables conectores Todo lo que necesita es un sensor Ping))) y 3 cables para hacerlo trabajar. El sensor Ping))) tiene protection interconstruida contra errores de programacin (y errors de cableado), por lo que no necesita usar ninguna resistencia de 220 entre P15 y la terminal SIG del sensor Ping))).

El Circuito Sensor Ping)))

La Figura 2-3 muestra un diagrama esquemtico y de conexiones para probar el sensor Ping))). Construya el circuito.

Captulo 2: Inclinacin con el Acelermetro Memsic Page 43

Figura 2-3: Diagrama esquemtico y de conexiones del Sensor Ping)))

Probando el Sensor Ping)))

Como se mencion antes, el sensor Ping))) necesita un pulso de inicio del BASIC Stamp para iniciar sus mediciones. Un pulso en P15 de 10 s (PULSOUT 15, 5) es fcilmente detectado por el sensor Ping))), y toma solo una pequea cantidad de tiempo para que el BASIC Stamp lo mande. Un comando PULSIN que guarda la duracin del pulso de eco del sensor Ping))) (PULSIN 15, 1, time) tiene que venir inmediatamente despus del comando PULSOUT. En este ejemplo, el comando PULSIN guarda en la variable tiempo el tiempo de viaje redondo para que el silbido del sensor Ping))) llegue al objeto, se refleje y regrese.Programa Ejemplo - PingTest.bs2

Puede probar este programa midiendo distancias de algunos objetos cercanos. Para mediciones cercanas, el sensor Ping))) solo necesita estar de 3 a 4 pulgadas (aprox. de 8 a 10 cm) por encima de la superficie de trabajo.