Logo Studenta

Sensores Inteligentes e suas aplicações em Espanhol

¡Este material tiene más páginas!

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

Otros materiales