Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Sensores inteligentes y sus aplicaciones Guía del Estudiante VERSION 1.0 GARANTÍA Parallax garantiza sus productos contra defectos en sus materiales o debidos a la fabricación por un período de 90 días a partir de la recepción de los mismos. Si usted descubre un defecto, Parallax según corresponda, reparará, reemplazará o regresará el valor de la compra. Antes de regresar el producto a Parallax, simplemente pida un número de autorización de regreso de mercancía (Return Merchandise Authorization, “RMA”), escriba el número en el exterior de la caja y envíela a Parallax. Por favor incluya su nombre, número telefónico, dirección y una descripción del problema. Parallax le regresará su producto o el reemplazo, usando el mismo método de correo que usted usó para enviar el producto a Parallax. GARANTÍA DE 14 DÍAS DE REGRESO DEL DINERO Si dentro de los 14 días 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 envío y manejo. Esto no se aplica si el producto ha sido alterado o dañado. Consulte la sección de Garantía arriba acerca de las instrucciones para regresar un producto a Parallax. DERECHOS DE COPIA Y MARCAS REGISTRADAS Este 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 violación de los derechos de copia, propiedad intelectual y derechos de autor de Parallax, Inc. y dicha violación es objeto de las penas que marcan las leyes Federal de derechos de autor y propiedad intelectual. Parallax Inc. expresamente no permite la reproducción con fines comerciales. Se permite la reproducción con fines educativos, reproducción 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 duplicación. Este texto está disponible en formato impreso por Parallax Inc. Dado el tiraje de la impresión del mismo, el precio al consumidor es frecuentemente menor que los costos típicos por duplicación. 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 páginas de Internet o en cualquier material impreso, forzosamente deberá agregar la aclaración: “(la marca en cuestión) es una marca registrada de Parallax, Inc.” Otros nombres de productos y marcas son marcas registradas de sus respectivos dueños. ISBN 1-928982-39-5 DESVINCULACIÓN DE RESPONSABILIDAD Parallax, Inc. no es responsable de daños por consecuencias, incidentes o daños especiales que resulten de cualquier violación de la garantía, bajo cualquier teoría legal, incluyendo pérdida de beneficios, tiempos muertos, buena fe, daño o reemplazo de equipo o propiedad y cualesquiera costos de recuperación, reprogramación o de reproducción de datos guardados o usados dentro de los productos Parallax. Parallax tampoco es responsable de cualquier daño personal, incluyendo vida o muerte, resultado del uso de cualquiera de nuestros productos. Usted tiene absoluta responsabilidad por la aplicación que desarrolle con el BASIC Stamp, sin importar la naturaleza del riesgo de la misma. SEGUNDA IMPRESION SITIOS WEB Y LISTAS DE DISCUSIÓN Mantenemos foros de discusión activa basados en la red mundial dirigidos a personas interesadas en los productos Parallax. Estos foros o listas de discusión son accesibles desde www.parallax.com: • Propeller chip – Esta lista es específicamente 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 retroalimentación en el desarrollo de nuestro currículum y proveer un sitio para que los educadores desarrollen y obtengan Guías para Profesores. • Robotics – Diseñado para los robots Parallax, este foro fue creado para ser un diálogo abierto entre entusiastas de la robótica. Los temas incluyen el ensamble, código fuente, expansiones y actualizaciones de manuales. Los robots Boe-Bot®, Toddler®, SumoBot®, HexCrawler y QuadCrawler son ampliamente discutidos aquí. • SX Microcontrollers y SX-Key – Discusión de la programación del microcontrolador SX con herramientas del lenguaje ensamblador Parallax SX – Key® y compiladores de terceros en lenguajes BASIC y C. • Javelin Stamp – Discusión de aplicaciones y diseños usando Javelin Stamp, un modulo Parallax que es programado utilizando un subconjunto de comandos del lenguaje de programación Java® de Sun Microsystems. ERRATA Si bien se realiza un gran esfuerzo para asegurar la precisión de nuestros textos, aún 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 páginas individuales de los productos para obtener una descarga gratuita de este archivo de fe de errata. Tabla de Contenido · Página i Tabla de Contenido Prefacio.......................................................................................................................iii Introducción y notas del autor........................................................................................ iii Idea general....................................................................................................................v Antes de comenzar.........................................................................................................v La serie educativa Stamps en class .............................................................................. vi Traducciones ................................................................................................................ vii Colaboradores especiales ............................................................................................ vii Capítulo 1: La Pantalla LCD Serial Parallax.............................................................1 LCDs en Productos.........................................................................................................2 El LCD serial Parallax - Su terminal portátil de depuración............................................2 Actividad #1: Conexión 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 animación en LCD....................................19Actividad #5: Avance de texto traves de la pentalla .....................................................25 Resumen ......................................................................................................................34 Capítulo 2: El Sensor Ultrasónico de Distancia Ping)))........................................41 ¿Cómo trabaja el Sensor Ping)))? ................................................................................41 Actividad #1: Medición del tiempo de eco ....................................................................42 Actividad #2: Mediciones de CentÍmetroS....................................................................46 Actividad #3: Medición de pulgadas .............................................................................49 Actividad #4: Mediciones en movimiento......................................................................51 Actividad #5: El efecto de la temperatura en la velocidad del sonido...........................58 Resumen ......................................................................................................................61 Capítulo 3: El Acelerómetro MEMS de dos ejes....................................................65 EL Acelerómetro MX2125 – como funciona .................................................................67 Actividad #1: Conexión y prueba de pendiente con el MX2125 ...................................68 Actividad #2: Mediciones en movimiento......................................................................71 Actividad #3: División proporcional y compensación de los valores de entrada ..........76 Actividad #4: Dividiendo en 1/100 g .............................................................................83 Actividad #5: Medición de Rotación Vertical de 360° ...................................................85 Actividad #6: Medición de la inclinación respecto a la Horizontal ................................98 Resumen ....................................................................................................................112 Capítulo 4: El Módulo de brújula Hitachi HM55B ................................................119 Interpretación de las mediciones de la brújula ...........................................................119 Actividad #1: Conexion y prueba del módulo de brújula.............................................120 Actividad #2: Calibración del módulo de brújula.........................................................128 Página ii · Sensores inteligentes y sus aplicaciones Actividad #3: Probando la Calibración........................................................................138 Actividad #4: Mejora de las mediciones de la brújula a través del promedio .............143 Actividad #5: Mediciones en movimiento ...................................................................148 Resumen ....................................................................................................................159 Capítulo 5: Fundamentos de juegos con el Acelerómetro ................................ 167 Actividad #1: Desplegado de caracters gráficos PBASIC ..........................................168 Actividad #2: Guardado y refrescado de fondo con la EEPROM ...............................179 Actividad #3: Inclinando la gráfica de burbuja ............................................................188 Actividad #4: Control de juego....................................................................................196 Resumen ....................................................................................................................205 Capítulo 6: Más Proyectos con el Acelerómetro ................................................ 211 Actividad #1: Medición de altura de eficios, árboles, Etc. ..........................................211 Actividad #2: Grabación y reproducción.....................................................................213 Actividad #3: Uso de la EEPROM para cambio de modos.........................................219 Actividad #4: Registro Remoto de la Aceleración ......................................................223 Actividad #5: Estudio de la aceleración en un auto de radio control ..........................230 Actividad #6: Estudio de la aceleración en un truco con patineta ..............................240 Actividad #7: Distancia de recorrido de una bicicleta .................................................247 Resumen ....................................................................................................................255 Capítulo 7: Graficos de Barra en LCD para Distancias e inclinaciones........... 261 Actividad #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 inclinación del Acelerómetro ..........281 Resumen ....................................................................................................................294 Apéndice A: Tabla de caracteres ASCII............................................................... 303 Apéndice B: Documentación de la pantalla LCD Serial Parallax...................... 305 Apéndice C: Definiciones de Caracteres Hexadecimales.................................. 317 Apéndice D: Listado de Partes ............................................................................. 321 Índice ....................................................................................................................... 323 Prefacio · Página iii Prefacio INTRODUCCIÓN Y NOTAS DEL AUTOR La primera vez que ví el término “sensor inteligente” fue en el texto Sensores Aplicados de Tracy Allen (entonces conocido como Mediciones Ambientales). De manera adecuada, Tracy aplicó este término al termómetro digital DS1620, el cual tiene elementos electrónicos interconstruídos que simplifican las mediciones de temperatura del microcontrolador. Adicionalmente, podía recordar la configuración1 que recibía del microcontrolador y, más aún, funcionar independientemente como un controlador de termostato. En contraste con los sensores inteligentes, los sensores primitivos son dispositivos o materiales que tienen alguna propiedad eléctrica que cambia con algún fenómeno físico. 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/tensión, transductores de micrófonos y aún el potenciómetro, que es un sensor de posición rotacional. Dentro de cada sensor inteligente radica uno o más sensores primitivos y la circuitería de soporte. Lo que hace a un sensor inteligente “inteligente” es la electrónica interconstruída adicional. Esta electrónica hace que estos sensores sean capaces de hacer una o más de las siguientes funciones: • Pre-procesar los valores medidos en cantidades que posean algún significado. • Comunicar las medidas con señales digitales y protocolos de comunicación. • Orquestar las acciones de los sensores primitivos y sus circuitos para “tomar” mediciones. • Tomar decisiones e iniciar alguna acción en base a las condiciones sensadas, de manera independiente al microcontrolador. • Recordar la calibración o la configuración de sus parámetros. Durante mi primer encuentro con un sensor inteligente pensé: “¡Vaya! ¡Un kit completo de estos sensores con un libro podría ser REALMENTE interesante! En verdad espero 1 En ingles, setting (N. del T)Página iv · Sensores inteligentes y sus aplicaciones que alguien haga un kit y un libro así pronto…” No tenía idea que “pronto” terminaría siendo casi seis años después, y que “alguien” terminaría siendo yo. Y si alguno de mis jefes me hubiera dicho entonces que ese kit contendría un acelerómetro, un medidor de distancias ultrasónico, una brújula digital y una pantalla o visor LCD2 serial para mediciones en movimiento, quizá la impresión me hubiera deshecho por completo. Puesto que solo recientemente fue posible para nosotros conjuntar un grupo de componentes tan sorprendente en un solo kit, debería decir que la espera valió la pena. En concordancia con el resto de los tutoriales Stamps en Class, este libro es una colección de actividades, algunas de las cuales cubren aspectos básicos, algunas otras cubren otros aspectos más 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 inclinación, herramientas de medición personalizadas y dispositivos de diagnóstico para entusiastas del deporte y del bricolaje. El límite de páginas para este libro delimitado por nuestro empaque es 350 y fue difícil 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 propósito principal de este libro es proveer algunos bloques de construcción e ideas para proyectos e inventos futuros. Por ejemplo, después de completar el capítulo 3, nuestro revisor del libro Kris Magri puso su tarjeta de entrenamiento “Board of Education” con el acelerómetro y la LCD sobre el tablero de su auto, y ahora su auto tiene un medidor de aceleración en planos a un lado de su velocímetro. Con algunas modificaciones al código, se pudo haber cambiado por un sistema de alerta de volcadura en autos de doble tracción. Después de revisar el dispositivo mecánico de vigilancia para predecir condiciones de avalancha en áreas montañosas basado en la inclinación de la ladera, Ken Gracey desarrolló en una noche la versión digital con las mismas partes que tenía Kris en su auto. El acelerímetro 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 gustaría ver lo que usted 2 Visor o pantalla de cristal líquido; de sus siglas en inglés, Liquid Cristal Display (N. del T.) Prefacio · Página 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. Asegúrese de incluir algunas fotos, una descripción breve y preferentemente un esquema y el programa PBASIC. Entonces, diviértase con este kit y este libro y nosotros veremos sus inventos en el foro de Stamps en Class. IDEA GENERAL El 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 construcción para una variedad de inventos y proyectos de estudiantes. He aquí una lista de los dispositivos: • Pantalla LCD Serial Parallax 2x16 • Buscador de rangos ultrasónico Ping))) • Acelerómetro de 2 ejes 2125 • Módulo de Brújula Hitachi HM55B Además de proveer tanto el equipo como la información de cómo se usa este para proyectos estudiantiles, este texto hace 2 énfasis mayores que proveen teoría, ejemplos y los cálculos requeridos, lo cual puede ser usado para reforzar una variedad de conceptos de medición, de física/ingeniería y de trigonometría. Estos énfasis son: • Técnicas matemáticas para escalar los valores de sensores primarios hasta mediciones con significado propio dado que son expresadas en sistemas de unidades comunes. • Interpretación de la proyección de los vectores de campos magnéticos y de gravedad sobre ejes cartesianos. ANTES DE COMENZAR Para 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 comunicación enre su computadora y su BASIC Stamp. Para instrucciones detalladas a este respecto, consulte ¿Qué es un Microcontrolador?, disponible como descarga gratuita en Página vi · Sensores inteligentes y sus aplicaciones www.parallax.com. También necesitará las partes contenidas en el kit de partes de Sensores Inteligentes. Consulte el apéndice D para una lista completa del sistema, software y requerimientos de hardware. LA SERIE EDUCATIVA STAMPS EN CLASS La serie Stamps en Class de textos y kits provee recursos económicamente alcanzables para la educación en electrónica e ingeniería. Todos los libros listados están disponibles para descarga gratuita en www.parallax.com. Las versiones citadas a continuación 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. Guías 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 Robótica con el Boe- Bot, también diseñado para principiantes. “¿Qué es un Microcontrolador?”, Guía del Estudiante, Version 2.2, Parallax Inc., 2004 “Robotica con el Boe-Bot”, Guía del Estudiante, Version 2.2, Parallax Inc., 2004 Podrá entonces continuar con otros tópicos de proyectos educativos, o quizá prefiera explorer nuestros kits Robóticos. Kits de Proyectos Educativos: Los siguientes textos y kits proven una variedad de actividades que son útiles para aficionados al bricolaje, inventores y diseñadores de productos interesados en intentar un amplio espectro de proyectos: “Sensores inteligentes y sus aplicaciones”, Guía del Estudiante, Version 1.0, Parallax Inc., 2006 “Control de Procesos”, Guía del Estudiante, Version 1.0, Parallax Inc., 2006 “Sensores Aplicados”, Guía del Estudiante, Version 1.3, Parallax Inc., 2003 “Basicos Analógicos y Digitales”, Guía del Estudiante, Version 1.3, Parallax Inc., 2004 “Entendiendo las señales”, Guía del Estudiante, Version 1.0, Parallax Inc., 2003 Prefacio · Página vii Kits Robóticos: Para adquirir experiencia con robótica, considere continuar con las siguientes Guías Del Estudiante Stamps en Class, cada una tiene un kit robot correspondiente: “Control remoto IR para el Boe-Bot”, Guía del Estudiante, Version 1.1, Parallax Inc., 2004 “Robotica Aplicada con el SumoBot”, Guía del Estudiante, Version 1.0, Parallax Inc., 2005 “Robótica avanzada con el Toddler”, Guía del Estudiante, Version 1.2, Parallax Inc., 2003 Referencias Este libro es una referencia esencial para todas las Guías del Estudiante Stamps en Class. Se presenta con información de la serie de modulos microcontroladores BASIC Stamp, nuestro Editor BASIC Stamp y nuestro lenguaje de programación PBASIC. “Manual BASIC Stamp”, Version 2.2,Parallax Inc., 2005 TRADUCCIONES Los textos educativos Parallax pueden ser traducidos a otros idiomas con nuestro permiso (correo electrónico: translations@parallax.com). Si usted planea hacer alguna traducción por favor contáctenos y así podremos proveerle con los documentos MS Word en el formato adecuado, imágenes, etc. También mantenemos un grupo privado de discusión para traductores al cual quizá quiera unirse. Esto asegurará que se le mantiene al corriente con nuestras frecuentes revisiones de texto. COLABORADORES ESPECIALES Parallax Inc. quiere dar reconocimiento a sus miembros del equipo de Educación: al administrador del Proyecto Aristides Alvarez, el Ilustrador Técnico Rich Allred, Diseñadora Gráfica Larissa Crittenden, Revisor Técnico 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. Página viii · Sensores inteligentes y sus aplicaciones Cap 1: La pantalla LCD Serial Parallax · Página 1 Capítulo 1: La Pantalla LCD Serial Parallax El desplegado de información que un sensor envía en un formato comprensible tiene muchos usos y, en algunas aplicaciones, es todo lo que importa. El termómetro digital es un ejemplo común que puede ser encontrado en muchos hogares. Dentro de cada termómetro digital, hay una sonda de temperatura, un microcontrolador y una pantalla de cristal líquido (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 termómetro 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 capítulo presentan algunos fundamentos de la pantalla LCD Parallax, como conectarla al BASIC Stamp, encenderla y apagarla, colocar su cursor y desplegar texto y dígitos. Los capítulos posteriores mostrarán cómo crear y animar caracteres personalizados y mostrar mensajes con movimiento. Página 2 · Sensores Inteligentes y sus Aplicaciones LCDS EN PRODUCTOS Todos los productos mostrados en la Figura 1-2 tienen pantallas de cristal líquido. Son fáciles de leer y los más pequeños consumo poca energía. Piense cuántos productos que usted posee tienen pantallas de cristal líquido. 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 cómo 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: teléfono celular, GPS portátil, calculadora, multímetro digital, reloj de oficina, computadora lap-top, osciloscopio, teléfono de oficina. EL LCD SERIAL PARALLAX - SU TERMINAL PORTÁTIL DE DEPURACIÓN Si 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 Depuración. La Terminal de Depuración es una ventana que puede usar para que su computadora muestre mensajes Cap 1: La pantalla LCD Serial Parallax · Página 3 que recibe del BASIC Stamp. Es especialmente útil para mostrar mensajes de diagnóstico y valores de variables, haciendo más fácil aislar los problemas en un programa. También es útil para probar circuitos, sensores y más. La Terminal de Depuración tiene una desventaja y es la conexión 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 habitación. 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 batería y su pantalla LCD Serial parallax para llevar el arreglo tan lejos de su terminal de programación como usted quiera, mientras que despliega las mediciones de su sensor y otra información de diagnóstico. Figura 1-3 LCD Serial Parallax (2×16) La pantalla LCD Serial Parallax 2×16 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 envía estos mensajes desde un solo pin de entrada/salida que está conectado a la entrada serial de la LCD. Hay dos versiones, estándar y con luz de fondo: Version Parte Parallax # Estándar 27976 Con Luz 27977 Pantallas LCDs Seriales vs Paralelas La pantalla LCD paralela es probablemente el tipo más común de pantallas LCD. Requiere un mínimo de 6 pines de entrada/salida para ser controlada por el BASIC Stamp. También, si no está usando un BASIC Stamp 2p, 2pe o 2px, el código para controlar la pantalla tiende a ser más complejo que el código 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. Página 4 · Sensores Inteligentes y sus Aplicaciones ACTIVIDAD #1: CONEXIÓN Y PRUEBA DE LA PANTALLA LCD Además de las conexiones eléctricas y algunos programas PBASIC muy simples para probar la pantalla LCD Serial Parallax, esta actividad presenta el comando SEROUT. También demuestra cómo 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 información que muestre su pantalla LCD. Partes Requeridas (1) Pantalla LCD Serial Parallax 2×16 (3) Segmentos de cable Además de la pantalla LCD Serial Parallax y los 3 cables, es especialmente importante que tenga la documentación de la pantalla (incluida en el Apéndice B de este texto). Aún cuando son unas cuantas páginas, 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 Depuración. Funciones como control de cursor, retorno de carro, retorno, limpiar pantalla, etc., todas tienen sus propios códigos especiales. Algunos de estos códigos son idénticos a los de la Terminal de Depuración; otros son bastante diferentes. Armando el circuito de la pantalla LCD Serial La conexión 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 alimentación, otra para tierra y una mas para la señal. El pin RX de la LCD es para la señal 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. PRECAUCIÓN: Una conexión errónea puede dañar esta pantalla LCD. La Revisión 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 página 306 para verificar cuáles son los pines correctos a usar en los circuitos de este libro. La versión 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 · Página 5 √ Desconecte la alimentación de energía 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 energía aún. Figura 1-4: Diagramas esquemático y de conexiones Página 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 transmisión baud, el contraste se ajusta con un potenciómetro “INCREASE CONTRAST”. Figura 1-5 Vista posterior del Módulo de la pantalla LCD √ Su tarjeta Board of Education aún debe estar desenergizada. √ Encuentre los interruptores SW1 y SW2 en la parte baja del módulo de la pantalla LCD como se muestran en la Figura 1-6 . √ Coloque SW1 en posición off. √ Coloque SW2 en posición 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 línea superior (Línea 0) y "www.parallax.com" en la línea inferior (Línea 1), como se muestra en la Figura 1-3. Si deja la pantalla en este modo por un rato, un carácter personalizado bien conocido por los jugadores de video juegos de los 80’s aparecerá comiéndose el texto. Cap 1: La pantalla LCD Serial Parallax · Página 7 √ Si la pantalla parece atenuada o en blanco, puede girar el potenciómetro 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 están muy oscuros o como cuadros grises, el ajuste al potenciómetro podría ser de ayuda. √ Ajuste el potenciómetro de contraste si se requiere. Figura 1-7 Potenciómetro de Ajuste de Contraste Ajustando la pantalla LCD para recibir Mensajes del BASIC Stamp La comunicación de datos en serie involucra una velocidad de transmisión baud . Esto es el número 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 capítulo, 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 posición OFF. √ Coloque el interruptor SW2 en la posición 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 Página 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 según sea el caso. Figura 1-9 Configuración de los interruptores de Velocidad Baud ACTIVIDAD #2: DESPLIEGE DE MENSAJES SIMPLES Como se mencionó antes, los comandos que envían texto, números y elementos que dan formato y códigos de control (caracteres de control) a la LCD serial están relacionados con el comando DEBUG. De hecho, el comando DEBUG es solo una versión especial de un comando más general llamado SEROUT. El comando SEROUT tiene muchos usos, algunos son enviar mensajes a la LCD serial, a otros módulos BASIC Stamp y a computadoras. En esta actividad, usted programará el BASIC Stamp para hacer que la LCD despliegue mensajes de texto y valores numéricos. Como un primer paso en la animación, también modificará los programas para que el texto y los números parpadeen. El comando SEROUT será su herramienta para cumplir estas tareas. Usará el comando SEROUT para enviar texto, números, códigos de control y elementos de formato a la pantalla LCD Serial Parallax. Como pronto verá, el texto, los números y los formateadotes son idénticos a los que usa con el comando DEBUG. Los códigos de control serán un poco diferentes, pero con un poco de práctica serán tan fáciles de usar como CR, CLS, HOME, y CRSRXY. (Si no está familiarizado con CRSRXY, podrá aprender más de él en el capítulo 6, Actividad # 1). La versión 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 recepción 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 · Página 9 El argumento BaudMode es un valor que le dice al BASIC Stamp qué tan rápido deberá enviar los datos en serie y también determina algunas de las características de la señal serial. El programa de ayuda del Editor del BASIC Stamp tiene tablas que dan los valores de BaudMode para velocidades baud y señales 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, señal verdadera. Esto es exactamente para lo que la LCD Serial Parallax fue diseñada para recibir. Los argumentos DataItem pueden ser escritos entre comillas como “Hola”. También pueden ser caracteres de control como CR, CLS, o valores, con o sin formateadotes como DEC, BIN, y ?. Si se envía con formateadores, ellos son enviados como los caracteres que representan el valor. Si se envían sin formateadores, ellos serán enviados como valores, como 22, 12 y 13. Podemos enviar valores sin formato como estos a la LCD, los cuales serán interpretados como códigos de control. Más acerca SEROUT Si usted desea intentar usar la terminal de Depuración 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 Depuración, haga coincidir la designación del puerto de comunicación. Note que también puede cambiar la velocidad Baud de la Terminal de Depuración así como otros parámetros de comunicación. Hay mucho más que aprender acerca de SEROUT. Tanto el Manual del BASIC Stamp como la Guía de Sintaxis del Editor PBASIC dan explicación 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 Guía 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 Códigos de Control A diferencia de la Terminal de Depuración, 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 enviarloa la LCD serial: SEROUT 14, 84, [22] Usado así, 22 es un ejemplo de un código de control de la pantalla LCD. Otros códigos de control básicos son: Página 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 línea. • 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 versión 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, envía el valor 13 a la Terminal de Depuración. La Terminal de Depuración mueve el cursor al principio de la siguiente línea siempre que recibe el valor 13. En este caso, los dos comandos a continuación 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 número 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 carácter en “casa” en la esquina superior izquierda de la LCD. El código 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 línea 0 y "The LCD works!" en la línea 1 (ver Figura 1-10). ' Sensores inteligentes y sus Aplicaciones - LcdTestMessage.bs2 ' Muestra un mensaje de prueba en la LCD Serial Parallax. ' {$STAMP BS2} ' Dispositivo Objeto = BASIC Stamp 2 ' {$PBASIC 2.5} ' Lenguaje = PBASIC 2.5 Cap 1: La pantalla LCD Serial Parallax · Página 11 SEROUT 14, 84, [22, 12] ' Inicializa la LCD PAUSE 5 SEROUT 14, 84, ["See this?", 13, ' Mensaje de texto, retorno de carro "The LCD works!"] ' mas texto en la linea 1. END ' 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 batería 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 - Códigos de Control para que el desplegado encienda y apague ¿Recuerda que 22 enciende la pantalla y que 21 la apaga? Puede usar estos códigos de control para hacer que el texto parpadee. √ Reemplace el comando END en LcdTestMessage.bs2 con este bloque de código. DO ' Inicia el bloque DO...LOOP PAUSE 600 ' Retraso de 6/10 de segundo SEROUT 14, 84, [22] ' Enciende la pantalla PAUSE 400 ' Retraso de 4/10 de segundo SEROUT 14, 84, [21] ' Apaga la pantalla LOOP ' Repite el bloque DO...LOOP √ Corra el programa modificado y note el efecto. Página 12 · Sensores Inteligentes y sus Aplicaciones Desplegando Números con Formateadores Muchos de los formateadores usados para mostrar números con la terminal de Depuración funcionan con la LCD Serial Parallax. El formateador DEC es probablemente el más útil, pero también 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 Además de demostrar que puede desplegar valores de variables en la LCD serial, este programa también muestra qué pasa si el programa manda más de 16 caracteres a la línea 0. Los ajusta hacia la línea 1. También, después de llenar la línea 1 con otros 16 caracteres, el texto se vuelve a ajustar hacia la línea 0. √ Introduzca, salve y corra LcdTestNumbers.bs2 ' Sensores inteligentes y sus Aplicaciones - LcdTestNumbers.bs2 ' Muestra valores numericos con la LCD Serial Parallax. ' {$STAMP BS2} ' Dispositivo Objeto = BASIC Stamp 2 ' {$PBASIC 2.5} ' Lenguaje = PBASIC 2.5 counter VAR Byte ' Variable del ciclo FOR...NEXT SEROUT 14, 84, [22, 12] ' Inicializa la LCD PAUSE 5 ' Retraso 5 ms para limpiar la pantalla FOR counter = 0 TO 12 ' Cuenta hasta 12; incrementa cada 1/2 s 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 · Página 13 Figura 1-11 Despliegue de números 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. Ensáyelos también en la Terminal de Depuración. √ ¿Cuáles son las similitudes y diferencias entre usar estos formateadores en la Terminal de Depuración y usarlos en la LCD Serial Parallax? Códigos de Control para Posicionar el Cursor Los códigos 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 Depuración. Sin embargo, hay comandos de cursor para la LCD Serial Parallax que puede usar para controlar las coordenadas X y Y del cursor. También puede enviar el cursor a la posición superior izquierda o “posición de casa”. Revise el conjunto de comandos en la sección de la documentación de la LCD al principio de la página 312. Enlista todos los comandos de control válidos para la LCD; a continuación se indican algunos ejemplos de la lista que controlan la posición del cursor. • 8 Cursor a la izquierda • 9 Cursor a la derecha • 10 Cursor abajo (la linea inferior ajustara en la linea superior) • 128 to 143 Posiciona el cursor en la linea 0, caracteres 0 al 15 • 148 to 163 Posiciona el cursor en la linea 1, caracteres 0 al 15 Página 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 línea superior de la LCD (línea 0). De manera semejante, puede usar valores de 148 to 163 para colocar el cursor en los caracteres 0 al 15 de la línea inferior (línea 1). Figura 1-12 Desplegado de Texto Luego de colocar el cursor, el siguiente caracter que envíe a la LCD será desplegado en esa posición. 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 línea superior, un caracter cada 200 ms. SEROUT 14, 84, 200, [128, "L", 131, "I", 134, "N", 137, "E", 140, "-", 143, "0"] Si se despliegancaracteres múltiples después de dar una posición inicial, la LCD aún cambiará el cursor a la derecha después de cada caracter. Por ejemplo, también puede colocar el cursor en el caracter 7 de la línea superior y entonces desplegar "ALL", luego mover el cursor al carácter 6 de la línea inferior y desplegar "DONE!", así: SEROUT 14, 84, [135, "ALL", 154, "DONE!"] Cap 1: La pantalla LCD Serial Parallax · Página 15 He aquí un bloque de código 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 después 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 básicos para colocar el cursor. √ Revise CursorPositions.bs2 y trate de predecir lo que el programa hará que haga la LCD. También 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} ' Dispositivo Objeto = BASIC Stamp 2 ' {$PBASIC 2.5} ' Lenguaje = PBASIC 2.5 index VAR Nib ' Variable del ciclo FOR...NEXT character VAR Byte ' Guardado del caracter offset VAR Byte ' Valor de compensacion SEROUT 14, 84, [22, 12] ' Inicializa la LCD PAUSE 500 ' Retraso de 1/2 segundo ' 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 Página 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 ' Flashea 5 veces SEROUT 14, 84, 500, [21, 22] NEXT END ' Fin del programa Su Turno - Mas sobre el Posicionado Desplegados más 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 posición 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 ' Limpia la pantalla SEROUT 14, 84, ["This is a", 13] ' 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 √ ¡Inténtelo! Cap 1: La pantalla LCD Serial Parallax · Página 17 ACTIVIDAD #3: APLICACION EN UN TIMER Esta actividad aplica las técnicas de la actividad # 2 a un timer de hora-minuto-segundo. Mostrando el Tiempo Transcurrido He aquí un bloque de código que enciende la LCD, la limpia y coloca algunos caracteres que no cambiarán. El resto del programa puede entonces desplegar los valores numéricos cambiantes de hora, minuto y segundo junto a los caracteres fijos "h", "m" y "s". SEROUT 14, 84, [22, 12] ' Enciende LCD y limpia PAUSE 5 ' Pausa 5 ms para limpiar SEROUT 14, 84, ["Time Elapsed...", 13] ' Texto + retorno de carro SEROUT 14, 84, [" h m s"] ' Texto en la segunda linea Para esta aplicación, los códigos de control para colocación del cursor son particularmente útiles. Por ejemplo, el cursor puede ser colocado en la línea 1, caracter 0 antes de enviar el valor decimal de 2 dígitos de las horas. El cursor puede ser movido a la línea 1, caracter 5 para desplegar los minutos y luego movido a la línea 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 precisión no es por mucho la de un reloj de muñeca digital; sin embargo es lo suficientemente Buena para mostrar como el desplegar la hora puede trabajar con el posicionado de caracteres. Para mayor precisión, intente incorporar el circuito integrado de tiempo DS1302. Está disponible en www.parallax.com, solo teclee DS1302 en el campo de búsqueda. Programa Ejemplo - LcdTimer.bs2 Este programa ejemplo despliega las horas, los minutos y los segundos transcurridos con la LCD Serial Parallax. Apretando el botón de RESET en la tarjeta Board of Education, usted puede reiniciar el timer. √ Introduza, salvey corra LcdTimer.bs2. √ Verifique que la pantalla trabaja adecuadamente. Página 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} ' Directiva de Stamp ' {$PBASIC 2.5} ' Directiva de PBASIC hours VAR Byte ' Guarda horas minutes VAR Byte ' Guarda minutos seconds VAR Byte ' Guarda segundos SEROUT 14, 84, [22, 12] ' Inicia LCD y limpia pantalla PAUSE 5 ' Pausa 5 ms para limpiar SEROUT 14, 84, ["Time Elapsed...", 13] ' Texto + retorno de carro SEROUT 14, 84, [" h m s"] ' Texto en segunda linea 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 ' Pausa + consumo ~ 1 segundo seconds = seconds + 1 ' Incrementa segundo contador LOOP ' Repite Rutina Principal Su Turno - Definiendo Códigos de Control con Constantes Hasta este punto, los códigos de control de la LCD han tenido valores decimales. Sin embargo, cuando está escribiendo o leyendo un programalargo, memorizar todos estos valores de códigos de control puede ser tedioso. Es mejor declarar una constante para cada código de control al principio del programa. Luego, usar nombres de constantes en vez de números. También puede hacer lo mismo con el valor de BaudMode y luego también agregar una directiva PIN para el pin P14 de entrada/salida. He aquí un ejemplo: LcdPin PIN 14 ' pin de E/S de la LCD T9600 CON 84 ' True, 8-bits, no parity, 9600 LcdCls CON 12 ' Form feed -> clear screen LcdCr CON 13 ' Retorno de Carro LcdOff CON 21 ' Apaga la pantalla Cap 1: La pantalla LCD Serial Parallax · Página 19 LcdOn CON 22 ' Enciende la pantalla Line0 CON 128 ' Linea 0, caracter 0 Line1 CON 148 ' Linea 1, caracter 0 Estas declaraciones harán a su código más fácil de entender, lo cual es especialmente importante si decide hacer cambios a su programa después 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 números en la línea 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 números como pueda con nombres de constantes significativos. √ Corra su programa y corrija según lo requiera. ACTIVIDAD #4: CARACTERES PERSONALIZADOS Y ANIMACIÓN EN LCD Si Bien no toda imagen ahorra mil palabras, aún 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 algún lugar de la pantalla diciendo “por favor espere, el programa está ocupado…”. Esta actividad usa un reloj de arena para introducir técnicas 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 carácter 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 están pre-configurados como la contradiagonal y el tilde. He aquí un ejemplo de comando SEROUT que muestra ambos - SEROUT 14, 84, [0, 1]. Página 20 · Sensores Inteligentes y sus Aplicaciones Figura 1-13: Caracteres personalizados predefinidos O (contradiagonal) y 1 (Tilde) Programa Ejemplo: PredfinedCustomCharacters.bs2 Este ejemplo envía 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] ' Inicializa la LCD PAUSE 5 ' 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 están guardados en su RAM. Para definir uno de sus ocho caracteres personalizados, su commando SEROUT tiene que decirle a la LCD cuál de los 8 caracteres personalizados está definiciendo y entonces describer los estados de encendido/apagado de cada pixel en el caracter. Cada carácter tiene 40 pixeles, 8 pixeles de alto por 5 de ancho. La Figura 6-14 muestra los comandos de Definición que puede enviar a la LCD para decirle cuál es el caracter que está a punto de definir. También lo puede ver así: para decirle a la LCD cuál caracter está definiendo, envíele el valor del caracter personalizado, más 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 · Página 21 Figura 1-14: Comandos de Definición de Caracteres personalizados Luego de enviar el código que le dice a la LCD cuál caracter personalizado va a definir, debe enviar 8 bytes que describan al caracter. La LCD usa los 5 bits más bajos de cada byte que recibe para describir cada una de las 8 líneas de 5 pixeles de ancho que hay en el caracter. La Figura 1-15 muestra un ejemplo de la definición 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 línea de pixeles en el caracter personalizado. Note también 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 batería, el programa BASIC Stamp también reinicia cuando la energía es restituida. Es buena práctica 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 energía se conecte. Página 22 · Sensores Inteligentes y sus Aplicaciones Esta definición 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. También usa una técnica 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. Después de que se ve bien, usa los asteriscos para indicar cuáles ceros deben ser cambiados a unos. SEROUT 14, 84, [255, ' Define Caracter Personalizado 7 %00000, ' %11111, ' * * * * * %10001, ' * * %01010, ' * * %00100, ' * %01110, ' * * * %11111, ' * * * * * %11111] ' * * * * * Figura 1-16 muestra como los dos comandos SEROUT recién 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 página del producto LCD Serial Parallax en www.parallax.com. Para información de cómo trabaja la definición hexadecimal de caracteres, intente la actividaden el apéndice B. Con estas nuevas definiciones puede escribir un ciclo para hacer que el reloj de arena cambie de vacío a lleno, indicando que el usuario debe esperar. El siguiente bloque DO...LOOP hace esto primero colocando el cursor en la línea 0, caracter 5 en la LCD. Luego muestra el caracter personalizado 0, el reloj de arena recién volteado. Después de una breve PAUSE, el programa envía el comando de espacio atrás (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 · Página 23 DO SEROUT 14, 84, [133] ' Cursor -> Linea 0, char SEROUT 14, 84, [0] ' Muestra Caracter Personalizado 0 PAUSE 1250 ' Retraso de 1.25 segundos SEROUT 14, 84, [8] ' Espacio atras SEROUT 14, 84, [7] ' Muestra Caracter Personalizado 7 PAUSE 1500 ' Retraso de 1.50 segundos LOOP Programa Ejemplo: Hourglass.bs2 Este programa define y muestra los caracteres personalizados del reloj recién discutidos. √ Introduzca, salve y corra el programa. √ Verifique que despliega alternadamente los dos caracteres de reloj de arena en el sexto caracter de la línea 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 ' Estabiliza fuente de energia SEROUT 14, 84, [248, ' Define Caracter Personalizado 0 %00000, ' %11111, ' * * * * * %11111, ' * * * * * %01110, ' * * * %00100, ' * %01010, ' * * %10001, ' * * %11111] ' * * * * * SEROUT 14, 84, [255, ' Define Caracter Personalizado 7 %00000, ' %11111, ' * * * * * %10001, ' * * %01010, ' * * %00100, ' * %01110, ' * * * %11111, ' * * * * * %11111] ' * * * * * Página 24 · Sensores Inteligentes y sus Aplicaciones SEROUT 14, 84, [22, 12] ' Enciende pantalla y limpia PAUSE 5 ' 5 ms retraso para limpiar ' -----[ Main Rutina ]------------------------------------------------------- DO SEROUT 14, 84, [133] ' Cursor -> Linea 0, char SEROUT 14, 84, [0] ' Muestra Caracter Pers. 0 PAUSE 1250 ' Retraso de 1.25 seconds SEROUT 14, 84, [8] ' Espacio atras SEROUT 14, 84, [7] ' Muestra Caracter Pers. 7 PAUSE 1500 ' Retraso de 1.50 seconds LOOP Su Turno La Figura 1-17 muestra a los caracteres personalizados describiendo a los granos de arena en el reloj moviéndose de arriba hacia abajo. Figura 1-17: Caracteres personalizados para reloj de arena animado √ Salve Hourglass.bs2 como HourGlassYourTurn.bs2. √ Expanda la rutina de Inicialización 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 también intentar para animar los ocho caracteres personalizados una vez que los haya dado de alta en la sección de Inicialización: 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 · Página 25 ' Espacio atras, Caracter Pers. 1, espacio atrás, 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 √ ¡Inténtelo! Aún 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 aplicación necesita 20 caracteres personalizados, su programa PBASIC puede guardarlos y redefinirlos en la LCD según se requiera. Usted puede desplegar el reloj de arena con un solo caracter personalizado. La animación 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 PENTALLA Si 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 código para el avance que se presenta en esta actividad es bastante diferente del programa ejemplo en la Actividad #2, el cual hizo que la línea 1 se moviera a lo ancho de Página 26 · Sensores Inteligentes y sus Aplicaciones la pantalla. La principal diferencia estriba en que en la Actividad # 2 el mensaje se detenía 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 línea, el programa tiene que empezar con la primera letra en el mensaje y desplegarla en la posición extrema derecha. Después de un corto retraso, el programa debe mover el cursor a la segunda posición (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 posición 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 técnica de programación para este proceso es llamada de ventana corrediza. Además de ser de utilidad para la LCD Parallax, esta técnica es lo que ve cuando sube y baja texto en programas como el Editor de BASIC Stamp o su explorador de Internet. También se usa en programas para transmitir y recibir paquetes TCP/IP. Cada vez que abre su explorador de red, hay más de una instancia de código 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 mínima de esfuerzo. Todo lo que involucra es poner los mensajes en directivas DATA precedidas por nombres Símbolos, establecer algunas variables y luego llamar la subrutina de desplazamiento.He aquí algunos ejemplos de directivas DATA. Message1 DATA @ 2, "Message " Message2 DATA "again" Message3 DATA "Larger message, going faster" Message4 DATA El primer mensaje de texto empieza en una dirección EEPROM igual al valor del símbolo del Message1, el cual ha sido establecido en 2 a través del argumento opcional @Address de la directiva DATA. La dirección después del final del Message1 es la dirección EEPROM 11. Esto es denotado por la etiqueta Message2, lo cual es también 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 · Página 27 El siguiente programa ejemplo también tiene variables que usted puede establecer para configurar diferentes posiciones de ventana, anchos e incrementos. Después 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 código que hace que la subrutina despliegue todos los caracteres entre las etiquetas Message1 y Message2 en los cuatro caracteres centrales de la línea superior de la LCD. messageStart = Message1: messageEnd = message2 windowLeft = 134: windowRight = 137 increment = 1 GOSUB Scroll_Message 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 número 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 más 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: messageEnd = message4 windowLeft = 150: windowRight = 161 increment = 2 GOSUB Scroll_Message Página 28 · Sensores Inteligentes y sus Aplicaciones Programa Ejemplo - TestScrollingSubroutine.bs2 √ Revise los bloques de código en la Rutina Principal del programa y prediga qué tan ancha sera la ventana de avance, qué texto sera desplegado y cuántos 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} ' Directiva BASIC Stamp ' {$PBASIC 2.5} ' Directiva PBASIC ' -----[ directivas 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 CON 84 ' True, 8-bits, no parity, 9600 LcdCls CON 12 ' Form feed -> limpia pantalla LcdCr CON 13 ' Retorno de carro LcdOff CON 21 ' Apaga la pantalla LcdOn CON 22 ' Enciende la pantalla Line0 CON 128 ' Linea 0, caracter 0 Line1 CON 148 ' Linea 1, caracter 0 TimeOn CON 250 ' Caracter de tiempo de encendido TimeOff CON 0 ' Caracter de tiempo de atenuac. ' -----[ Variables ]---------------------------------------------------------- ' Variables funcionales para la subrutina Scroll_Message. cursorStart VAR Byte ' Posicion del primer caracter head VAR Byte ' Inicio del texto desplegado tail VAR Byte ' Fin del texto desplegado pointer VAR Byte ' apuntador de direccion EEPROM character VAR Byte ' Guarda un caracter Cap 1: La pantalla LCD Serial Parallax · Página 29 ' Variables de configuracion para la subrutina Scroll_Message. increment VAR Nib ' Caracteres por cambiar windowRight VAR Byte ' Direccion del caracter de ' extrema derecha windowLeft VAR Byte ' Direccion del caracter de ' extrema izquierda messageStart VAR Byte ' Direccion EEPROM para inicio messageEnd VAR Byte ' 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: messageEnd = message2 windowLeft = 134: windowRight = 137 increment = 1 GOSUB Scroll_Message ' Cambia los valores de varias variables de configuracion y demuestra el ' efecto en la pantalla con cada cambio. windowLeft = 131: windowRight = 140 GOSUB Scroll_Message messageStart = Message1: messageEnd = message3 GOSUB Scroll_Message messageStart = Message3: messageEnd = message4 windowLeft = 150: windowRight = 161 increment = 2 GOSUB Scroll_Message END ' -----[ Subrutina - Scroll_Message ]---------------------------------------- Scroll_Message: cursorStart = windowRight - increment + 1 ' Caracter ExtremaDer en ventan head = 0 ' Inicializa head y tail tail = increment - 1 ' del mensaje ' ciclo de avance Página 30 · Sensores Inteligentes y sus Aplicaciones DO WHILE tail<(MessageEnd-MessageStart)+(windowRight-windowLeft+increment) SEROUT LcdPin, T9600, [cursorStart] ' Caracter ExtramaDer en ventana FOR pointer = head TO tail ' Limpia caracteres anteriores. SEROUT LcdPin, T9600, [" "] NEXT PAUSE timeOff ' Permite atenuacion caracteres SEROUT LcdPin, T9600, [cursorStart] ' Caracter ExtramaDer en ventana ' Este ciclo FOR...NEXT refresca el mensaje, cambia incrementa caracteres
Compartir