Documentos de Académico
Documentos de Profesional
Documentos de Cultura
WAM v3.0 Spanish v1.0 PDF
WAM v3.0 Spanish v1.0 PDF
VERSION 3.0
Pgina 2 Qu es un Microcontrolador?
GARANTA
Parallax garantiza sus productos contra cualquier defecto en materiales y manufactura por un periodo de 90 das partir
de la fecha de recepcin del producto. Si usted descubre un defecto Parallax podr reparar o reemplazar la mercanca o
regresarle el costo de su compra. Antes de regresar el producto a Parallax, llame un nmero de Regreso Autorizado de
Mercanca (RMA). Escriba este nmero en la parte externa de la caja para regresar la mercanca a Parallax. Por favor
incluya lo siguiente con la mercanca que regresa: Su nombre, su nmero telefnico, direccin y descripcin del
problema. Parallax le regresar su producto o su reemplazo utilizando el mismo mtodo utilizado para mandar el
producto a Parallax.
ISBN 9781928982524
3.0.0-09.12.09-HKTP
RECLAMO DE RESPONSABILIDADES.
Parallax Inc no es responsable de daos especiales, incidentales o de consecuencia que resulten de cualquier violacin
de la garanta, o bajo cualquier teora legal , incluyendo perdidas de beneficios, caducidad, intangibles o reemplazo del
equipo o propiedad, o cualquier costo de recuperacin, reprogramacin o reproduccin de cualquier tipo de datos
almacenados o usados con productos Parallax. Parallax tampoco es responsable de cualquier dao personal incluyendo
la vida o la salud que resulten del uso de cualquier de nuestros productos. Usted es 100% responsable de su aplicacin
BASIC Stamp, sin importar cuanta amenaza represente para la vida.
ERRATAS
Hemos realizado un gran esfuerzo para garantizar la exactitud de nuestros textos, sin embargo estos
pueden tener errores. Ocasionalmente, una fe de erratas con un lista de errores y correcciones conocidas
de un texto se enviar con la pagina del producto relacionado en la liga WWW.PARALLAX.COM. Si usted
encuentra un error por favor mndelo al correo EDITOR@PARALLAX.COM
ndice
Prefacio ....................................................................................................................... 7
Caractersticas de la version 3.0 ....................................................................................7
Usuarios..........................................................................................................................8
Foros de ayuda...............................................................................................................8
Recursos para educadores.............................................................................................9
Traducciones en otros idiomas.....................................................................................10
Datos del autor .............................................................................................................10
Contribuidores especiales ............................................................................................10
Captulo 1 : Inicio...................................................................................................... 11
Actualmente cuntos microcontroladores utilizamos? ...............................................11
El BASIC Stamp2 es un modulo nuevo con microcontrolador .....................................11
Inventos maravillosos realizados con los microcontroladores BASIC Stamp...............12
Hardware y software.....................................................................................................15
Actividad #1 : Instalacin del software..........................................................................15
Actividad #2 : Uso del archivo ayuda para ajustes del hardware...............................21
Resumen ......................................................................................................................23
Pgina 4 Qu es un Microcontrolador?
Pgina 6 Qu es un Microcontrolador?
Prefacio Pgina 7
Prefacio
Este libro responde la pregunta Que es un Microcontrolador? y ensea a los estudiantes
la manera de disear sus propios trabajos e inteligente inventos utilizando el modulo del
microcontrolador Basic Stamp de Parallax. Las actividades de este texto son varios
experimentos agradables e interesantes diseados para despertar la imaginacin de los
estudiantes en movimiento, luz, sonido y retroalimentacin del tacto para explorar nuevos
conceptos. Estas actividades sumergen a los estudiantes a una diversidad de principios
bsicos en los campos de programacin de computadoras, electricidad y electrnica,
matemticas y fsica. Muchas de estas actividades facilitan la coordinacin de mente y
manos al disear prcticas como las que utilizan los ingenieros y tcnicos en la creacin y
aplicacin de mquinas modernas utilizando partes comunes y baratas.
Qu es un Microcontrolador? es el texto de iniciacin en los Programas de Clases de esta
compaa. Para ver la serie completa, que incluye titulo de Robtica con el con el robot
Boe.Bot, de sensores inteligentes y sus aplicaciones, Control de Procesos, y ms, visiste
la pgina www.parallax.com/Education.
Pgina 8 Qu es un Microcontrolador?
USUARIOS
Este texto est diseado como puerta de entrada a la tecnologa y el diseo con una curva
de fcil aprendizaje para programacin de dispositivos incrustados. El libro est
organizado y lo pueden usar varios tipos de estudiantes y autodidactas. Muchos estudiantes
de bachillerato pueden realizar los ejemplos de este libro guiados por las instrucciones
indicadas de un istructor supervisor. En el otro lado del espectro, los estudiantes de los
primeros semestres de ingeniera pueden verificar su comprensin y habilidad de resolver
problemas con preguntas, ejercicios y proyectos (con solucin) en el resumen de cada
captulo. Los estudiantes autodidactas pueden trabajar a su propio ritmo y obtener ayuda a
travs de los foros de Stamps in Class abajo mencionados.
FOROS DE AYUDA
Parallax mantiene foros gratuitos moderados por nuestros clientes, los cuales cubren una
variendad de temas:
El Propeller Chip analiza temas relacionados con el Microcontrolador Propeller
multincleo y una lnea de productos de Herramientas de Desarrollo.
El Basic Stamp. Estudia las ideas de los proyectos, el soporte y temas relacionados
para todos los modelos del Basic Stamp.
El Microcontroller SX. Proporciona asistencia tcnica para todos los productos
del chip SX incluyendo al Compilador SX/B y la Herramienta SX-Key.
Sensores. Estudia la gran variedad de sensores de Parallax y sus interfaces con el
microcontrolador de Parallax.
Stamps en Clase. Aqu se localizan los materiales educativos de estudiantes,
maestros y clientes as como sus proyectos escolares.
Robotics. Aque se encuentran los Robots de Parallax y de clientes contruidos con
procesadores y sensores de Parallax.
El Sandbox. Contiene temas relacionados con el uso de productos Parallax que no
se tratan en otros forums.
Proyectos Terminados. Aqu puedes mandar tu proyecto terminado que realizaste
con productos Parallax.
Desarrollo de Juegos Propeller y Sistema Hydra. Aqu encuentras el anlisis y la
asistencia tcnica para el Kit de Desarrollo de Juegos HYDRA relacionados con la
programaci del microcontrolador Propeller.
Prefacio Pgina 9
Son cursos prcticos, intensivos de 1 o 3 das para instructores impartidos por Ingenieros
de Parallax, o maestros con experiencia que estn usando los materiales educativos de
Parallax en sus salones de clases. Para detalles de Cursos para educadores visite:
www.parallax.com/Education
Forum Parallax para Educadores
En este foro gratuito y privado los educadores pueden hacer preguntas y compartir sus
experiencias al usar los productos Parallax en sus salones de clases. Aqu tambin
encuentra Materiales de Educacion Complementarios. Las instrucciones para inscribirse
estn en education@parallax. Com. Se requiere que muestre que usted es educador.
Materiales de Educacin Complementarios
No se requiere permiso para bajar, duplicar e instalar el software de Parallax para uso en
educacin de Productos Parallax y lo pueden usar en computadoras de escuelas o la de su
hogar. Nuestros textos de Clase Stamp y los Manuales Stamp en Basic estn disponibles y
gratuitos en descargas de PDF, y pueden duplicarse, y el nico costo para sus estudiantes
Pgina 10 Qu es un Microcontrolador?
son las copias fotostticas. Los archivos PDF no estan encriptados y puede seleccionar los
textos o imgenes para preparar en Power Point sus propias presentaciones.
CONTRIBUIDORES ESPECIALES
El equipo de Parallax que prepar esta edicin, es Arstides Alvarez excelente lider del
departamento, el diseo de lecciones y escritura tcnica lo hace Andy Lindsay; el diseo
del arte lo hace Jen Jabobs, las ilustraciones grficas son de Rich Allred y Andy Lindsay;
la revisn tecnica la hizo Jessica Uelmen; la tipografa y el layout lo realiz Stephanie
Lindsay. Damos un agradecimiento especial a Ken Gracey, fundador del programa Stamps
in Class, y a Tracy Allen y Phil Pilgrim por su contribucin en la seleccin del sensor de
luz utilizado en esta versin que reemplaza al fotoresistor de sulfuro de cadmio.
Muchas personas contribuyeron al desarrollo de Qu es un Microcontrolador? , a estas
personas les estamos agradecidos. Nuevamente Parallax desea agradecer a Robert Ang por
la revisin total minuciosa y detallada del original. Tambin agradecemos a los autores de
Stamp in Class, Tracy Allen (Aplicacin de sensores) y a Martin Hebel (Control de
Procesos) por su revisin y recomendaciones. Andy Lindsay desea agradecer a su pap
Marshal y a su cuado Kubilay por sus valiosos consejos musicales y sugerencias.
Inicio Pgina 11
Captulo 1: Inicio
ACTUALMENTE CUNTOS MICROCONTROLADORES UTILIZAMOS?
Un microcontrolador es un tipo de computadora en miniatura que se encuentra en muchos
aparatos. Algunos ejemplos de productos comunes de uso cotidiano que contienen
microcontroladores se muestran en la figura 1-1. Si estos tienen botones y pantallas
digitales lo ms seguro es que tengan como cerebro un microcontrolador programable.
Figura 1-1
Ejemplos cotidianos de
aparatos que tienen
microcontroladores.
Trat de hacer un lista y cuente cuantos aparatos utiliza en un da normal. Estos son
algunos ejemplos, si su radio reloj se apaga, y presiona varias veces en la maana la perilla
de su aparato, la primera accin de ese da es interactuar con un microcontrolador. Cuando
calienta alimentos en el horno de microondas y hace una llamada con su telfono celular
tambin est interactuando con un microcontrolador. Esto solo es el comienzo. Veamos
otros ejemplos. Cuando enciende el TV con el control remoto, cuando juega con su
Nintendo y cuando usa una calculadora, estos aparatos tienen internamente un
microcontrolador que interacta con usted.
Pgina 12 Qu es un Microcontrolador?
Figura 1-2
Mdulo del
Microcontrolador
BASIC Stamp 2.
Figura 1-3
Modelos del
BASIC Stamp 2,
de izquierda a
derecha BS2,
BS2e, BS2sx,
BS2p24, BS2p40,
BS2pe, BS2px
Inicio Pgina 13
Otros robots resuelven problemas complicados, como el robot autnomo de vuelos remotos
y que se muestra a la izquierda de la figura 1-5. Este robot lo construyeron y verificaron
estudiantes de Ingeniera Mecnica de la Universidad de California en Irvine. Utilizaron un
mdulo BASIC Stamp para lograr la comunicacin con un Sistema de Posicionamiento
Global por Satlite (GPS) para que robot pudiera conocer su posicin y altitud. El BASIC
Stamp lee los datos de niveles de los sensores y controla los ajustes del motor para que el
robot se mantenga volando correctamente. El robot mecnico multipies de la derecha de la
Figura 1-5 lo desarrollaron profesores de la Universidad de Nanyang en Singapure. La
tablilla tiene ms de 50 mdulos BASIC Stamp y todos se comunican entre si por medio de
una red elaborada que ayuda a controlar y coordinar el movimiento de caja conjunto de
piernas. Los robots de este tipo no solamente nos ayudan a comprender mejor los diseos
de la naturaleza sino que adems se usan para explorar lugares remotos e incluso en otros
planetas.
Pgina 14 Qu es un Microcontrolador?
Figura 1-5
Robots de Investigacin
que contienen
microcontroladores.
A la izquierda se muestra
el Robot de Vuelo
Autnomo de la
Universidad de California
en Irvin y a la derecha se
muestra el Robot
ciempis Proyecto
Multipies de la
Universidad de Nanyang.
Con ayuda de los microcontroladores, los robots tambin pueden realizar tareas cotidianas,
por ejemplo limpiar el pasto. El mdulo BASIC Stamp dentro del robot cortador de pasto
que muestra la figura 1-6 le indica cuales son los lmites de esa superficie, y tambin lee
los sensores que detectan los obstculos adems de controlar los motores que lo mueven.
Figur 1-6
Mdulo del
Microcontrolador de
BASIC Stamp 2.
Inicio Pgina 15
Figura 1-7
Ejemplos de Microcontroladores
en la Industria Ambiental y
Areo espacial.
A la izquierda tenemos un
Sistema Colector de Datos
Ecolgicos EME, en el centro
una Investigacin Submarina
del Instituto Harbor Branch y a
la derecha se muestra el
lanzamiento de un cohete JP.
Desde aplicaciones caseras comunes hasta aplicaciones cientficas y areo espaciales usted
comenzar a aprender los fundamentos de los microcontroladores con proyectos que aqu
desarrollaremos. Al trabajar con las actividades de este libro usted experimentar.
Y aprender como usar una variedad de bloques de construccin en los cuales se cimientan
todos estos inventos de alta tecnologa. Usted construir circuitos para pantallas, sensores y
controles de movimiento. Aprender como conectar estos circuitos al mdulo BASIC
Stamp 2, y luego escribir programas que haga que controlen pantallas, que colecten los
datos de los sensores, y que controlen el movimiento. Con estas actividades aprender
conceptos y tcnicas de electrnica y programacin de microcontroladores. A su debido
tiempo encontrar el camino para inventar aparatos de sus propios diseos.
HARDWARE Y SOFTWARE
Iniciamos con mdulos microcontroladores de BASIC Stamp similares a los de su PC o
laptop. La primer actividad que las personas hacen es desempacar, conectar e instalar y
verificar algn software y quiz pueden escribir con algn software de su propiedad
usando un lenguaje de programacin. Si esta es la primera vez que usa un mdulo BASIC
Stamp usted har actividades semejantes a la arriba mencionadas. Si est usted en clases,
es posible que el hardware ya est instalado listo para usarse. Si este esta es su situacin
puede que su maestro le de otras indicaciones. Si no es su caso, en este captulo le
guiaremos paso a paso para iniciar y poner en marcha el microcontrolador BASIC Stamp.
Pgina 16 Qu es un Microcontrolador?
Requerimientos de su PC o laptop
Necesita una PC para ejecutar el software del editor del BASIC Stamp. Los requerimientos
de las PC son los siguientes:
Es muy importante, que siempre que sea posible, use la ltima versin del software editor
de BASIC Stamp. El primer paso es ir al sitio web de Parallax y descargue el software.
9 Uso del Buscador web para ir a www.parallax.com/basicstampsoftware (Figura 18)
Figura 1-8
Pgina del sotware del
Editor BASIC Stamp en
www.parallax.com/basicsta
mpsoftware
Este es el lugar para
descargar la ltima versin
de software.
9 Haga click en el botn Click Here to Download para descargar la ltima versin
de software Editor de Windows de BASIC Stamp. (Figura 1-9).
Inicio Pgina 17
Figura 1-9
Pgina del Botn de
descarga del editor
BASIC Stamp.
Haga click en el botn
para empezar la
descarga.
Figura 1-10
Ventana de Descargar
Archivo.
Haga click en Save y
guarde el archivo en su
computadora.
Pgina 18 Qu es un Microcontrolador?
Figura 1-11
Ventana de
como.
Guardar
9 Cuando vea Descarga Completa, haga click en el boton Run (Ejecutar). Figura
1-12).
9 Siga los Indicadores que aparecen. Puede ver mensajes del Sistema Operativo que
le preguntan que verifique si desea continuar con la instalacin. Diga que Si Desea
continuar.
Figura 1-12
Mensaje de Descarga
Completa.
Haga click en Run
(ejecutar)
Confirme que s
desea continuar.
9 Se abrir la ventana del Instalador del Editor BASIC Stamp (Figura 1-13). En
seguida haga click y siga las indicaciones, aceptando todas por Default.
Inicio Pgina 19
Figura 1-13
Ventana de Instalador
del Editor BASIC
Stamp.
Haga click en
Siguiente.
9 IMPORTANTE: Cuando aparezca el mensaje Instalar Driver USB (Figura 114). Marque la ventanita de Instalacin/Actualizacin Automtica del Driver y
de un click en SIGUIENTE.
Figura 1-14
Mensaje del
Instalacin del Driver
USB.
Marque la ventanita
de Instalacion
Automtica y de
click en SIGUIENTE.
Pgina 20 Qu es un Microcontrolador?
Figura 1-15
Listo para Instalar el
Programa.
Para continuar de un
click en Instalar.
En este punto, pudiera aparecer una ventana adicional detrs de la ventana actual mientras
se estn actualizando los drivers USB. Esta ventana se cerrar eventualmente cuando
termine la instalacion de los drivers. Si usted no ve esta ventana, esto no indica que hay
problemas.
Nota sobre los drivers USB ( Drivers USB XE). Los drivers USB que instala por default
el Instalador Editor Windows se requiren para usar el hardware de Parallax que se conecta
al puerto USB de su PC. Las iniciales VCP significan Puerto de Comunicacin Virtual
(Puerto COM Virtual XE) y le permitir que los puertos USB de su computadora vea e
intrerprete el hardware de Parallax como un Puerto Serie RS232.
Drivers USB para otros Sistemas Operativos. Los drivers USB VCP que se incluyen el el
Software del Editor de Windows de BASIC Stamp slo son vlidos para el Sistema
Operativo de Windows. En la liga www.parallax.com/usbdrivers encuentra usted mayor
informacin.
Inicio Pgina 21
Figura 1-16
Instalacin
completa del Editor
BASIC Stamp.
De un click
Terminar
en
9 Si usted ve el cono del Editor BASIC Stamp en su PC, de doble clik en este cono
(Figura 1-17).
9 O de un click en el Menu de Inicio de su PC, en seguida escoga: Todos los
programas <Parallax Inc > Editor 2.5 BASIC Stamp > Editor 2.5 BASIC Stamp.
Figura 1-17
Icono del Editor BASIC
Stamp
D doble click para
iniciar el programa.
Pgina 22 Qu es un Microcontrolador?
Figura 1-18
Icono del Editor BASIC
Stamp
D doble click para
iniciar el programa.
Figura 1-19 Ayuda del Editor BASIC Stamp.
Inicio Pgina 23
Desde aqu, seguir usted las indicaciones del Archivo AYUDA hasta completar las
siguientes tareas.
Cuando haya terminado las actividades del Archivo Ayuda, regrese a este libro y continue
con el siguiente resumen ante de pasar al captulo 2.
Que hacer si tengo problemas?
Si tiene problemas mientras sigue las indicaciones de este libro o con el Archivo Ayuda,
usted tiene las siguientes opciones para obtener Soporte Tcnico.
En los forums. Mande un mensaje a nuestro foro gratuito Stamps en Clase en la liga
forums.parallax.com
Por email. Mande un email a support@parallax.com
Por telfono. En Estados Unidos llame sin cobrar al 888-99-STAMP (888-997-8267).
Desde otros lugares llame a (916)524-8333.
Ms recursos: Vaya a la liga www.parallax.com/support
RESUMEN
Este capitulo lo gui en las siguientes actividades:
Una introduccin a algunos aparatos que utilizan microcontroladores.
Una introduccin al mdulo BASIC Stamp.
Un paseo por algunos inventos interesantes fabricados con mdulos BASIC
Stamp.
Donde obtener el sofware Editor del mdulo BASIC Stamp que usar
precisamente en los experimentos de este libro
Como instalar el sofware Editor del mdulo BASIC Stamp.
Como usar la ayuda del Editor y el Manual del BASIC Stamp.
Pgina 24 Qu es un Microcontrolador?
Preguntas
1. Qu es un Microcontrolador?
2. El mdulo BASIC Stamp es un microcontrolador o contiene un
microcontrolador?
3. Qu detalles debe usted ver o imaginar para saber si un aparato como un radio o
un telfono celular contiene un Microcontrolador?
4. Qu significa un apostrofe en el principio de una lnea de cdigo de programa
PBASIC?
5. Qu instrucciones en PBASIC aprendi usted en este captulo?
6. Pensemos que desea hacer una pausa en su proyecto BASIC Stamp para tomar un
caf, o quiza tardarse un poco ms y luego regresar a su proyecto despus de un
par de das. Qu debe hacer antes de tomarse un descanso?
Ejercicios
3. Hay un problema con estas dos instrucciones. Cuando ejecuta el cdigo, los
nmeros que se muestran estan muy juntos de tal forma que parece un nmero
grande en lugar de dos nmeros pequeos. Modifique estas dos instrucciones para
que las respuestas aperezcan en dos lneas diferentes en la Terminal Debug.
DEBUG DEC 7 * 11
DEBUG DEC 7 + 11
Inicio Pgina 25
Proyectos
Soluciones
Pgina 26 Qu es un Microcontrolador?
P2. Se pueden quitar las 3 ltimas lnes DEBUG. Se necesita otro CR depues del
Mensaje Hello
' Qu es un Microcontrolador? - Ch01Prj02_ FirstProgramYourTurn.bs2
' BASIC Stamp manda mensajes a la Terminal Debug .
' {$STAMP BS2}
' {$PBASIC 2.5}
DEBUG "Hello, it's me, your BASIC Stamp!", CR
DEBUG "What's 7 X 11?", CR, "The answer is: ", DEC 7 * 11
END
El resultado es el mismo que genera el cdigo anterior. Este es un ejmplo del uso
de comas en la salida para sacar mucha informacin usando solamente una
instruccin DEBUG con sus mltiples elementos.
Figura 2-1
Luces indicadoras.
Las luces indicadoras
se utilizan mucho en
aparatos cotidianos.
Pgina 28 Qu es un Microcontrolador?
Se puede conectar un circuito con LED a la BASIC Stamp, y sta se puede programar para
que conecte y desconecte el LED de la fuente. Esto es mucho ms fcil que manualmente
cambiar el alambrado del circuito para conectar y desconectar la bateria.
La BASIC Stamp tambin puede programarse para que haga lo siguiente:
Gold
Silver
or
Blank
470
Yellow
Violet
Brown
Figura 2-2
Siimbolo esquemtico del resistor de
470 .
Simbolo esquemtico del resistor
(izquierda), Dibujo del resistor
(derecha)
Los resistores utilizados en esta actividad tienen franjas de colores. Hay una combinacin
diferente de colores que le indican el valor del resistor. Por ejemplo, el cdigo de colores
para el resistor de 470 es amarillo-violeta-caf.
Hay una cuarta franja que indica la tolerancia del resistor. Tolerancia es la medida en
porcentaje que indica cuanto se aleja del valor verdadero. Esta cuarta franja puede ser
dorada (5%), plateada (10%) o sin franja (20%). En las actividades de este libro solamente
es importante su valor, la tolerancia no lo es.
Cada barra de color le dice el valor que corresponde a un dgito. Estos colores/dgitos los
muestra la Tabla 2-1. La figura 2-3 como interpretar las barras de colores con la tabla para
obtener el valor del resistor.
Tabla 2-1
Cdigo de Colores
del Resistor
Digito
0
1
2
3
4
5
6
7
8
9
Color
Negro
Caf
Rojo
Naranja
Amarillo
Verde
Azl
Violeta
Gris
Blanco
Tolerance
Code
First Digit
Number of Zeros
Second Digit
Figura 2-3
Cdigo de
Colores de los
resistores
Primer Dgito;
Segundo
dgito;
Nmero de
ceros.
Pgina 30 Qu es un Microcontrolador?
Este es un ejemplo que muestra la Tabla 2-1 y la Figura 2-3 y en combinacin se usan para
encontrar el valor de un resistor con amarillo-violeta-caf y vale 470 :
Conociendo el LED
Un diodo es una vlvula unidireccional, y un diodo emisor de luz (LED) emite luz cuando
una corriente pasa por l. A diferencia del cdigo de colores de los resistores, el color de
un LED generalmente indica el color de luz que emitir cuando lo atravieza una corriente.
Las marcas importantes del LED se encuentran en su estructura. Como el LED es un
elemento unidireccional asegrese de conectarlo correctamente en su circuito si no lo hace,
ste no funcionar.
La Figura 2-4 muestra el smbolo esquematico de un LED y su dibujo. Un LED tiene dos
terminales. Una terminal se llama ANODO y la otra se llama CATODO. En esta actividad,
contruir un circuito con LED poniendo atencin para asegurarse que el nodo y el ctodo
estn conectados correctamente. En el dibujo la terminal del nodo se asocia con el signo
positivo (+). En el smbolo esquemtico, el nodo es la parte ancha del tringulo. En el
dibujo la terminal del ctodo no tiene indicacin pero en el esquemtico es la raya vertical
frente al tringulo.
Figura 2-4
Dibujo de un
esquemtico
LED
smbolo
+
LED
Construya el circuito metiendo las terminales del LED y del Resistor en los pequeos
huecos llamados conectores en el rea de su Tablilla Prototipo como lo muestra la figura 25. Esta rea de su tablilla tiene conectores negros en la parte alta e izquierda. Los
conectores negros de la parte superior tienen la siguientes etiquetas: Vdd(+5V), Vin (es un
voltaje no regulado de su bateria o fuente), y Vss(0 V), tambin llamado tierra. A estas
se les llama terminales de la fuente y se usan para suministrar energa a los circuitos. Los
conectores negros de la izquierda tienen etiquetas como P0, P1, hasta llegar a P15. En estos
conectores usted puede conectar sus circuitos a las terminales de entrada/salida de su
mdulo BASIC Stamp.
Vdd
Vin
Vss
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Figura 2-5
Area de Prototipo
Las terminales de la fuente estn a lo
ancho de la parte superior, las
terminales
de
acceso
de
entrada/salida estn a la izquierda y
en todo lo largo junto a las terminales
sin soldadura de su tablilla prototipo
(de color blanco)
Pgina 32 Qu es un Microcontrolador?
La tablilla blanca con muchos huecos se llama tablilla sin soldadura. En esta area usted
conectar componentes para construir circuitos. Esta area tiene tiene 17 filas de terminales.
Cada fila tiene dos conjuntos de 5 componentes separados por una canal en medio de ellas.
Los cinco terminales o conectores estn conectados estre s mismos. Si usted conecta dos
alambres en el mismo grupo de 5 terminales, ellos harn contacto elctrico. Dos alambres
en la misma fila pero de lados separados por la canal no hacen contacto entre ellos.
Muchos dispositivos est diseados para colocarse en esta forma, por ejemplo los botones
push que usaremosen el captulo 3.
Ms acerca de la tablilla prototipo. Para aprender, la historia, como se construyen y como
se usan vea el video en la liga: www.parallax.com/go/WAM
Vdd
Vdd
X3
470
LED
Vss
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Vin
Vss
Figura 2-6
Led
Iluminado,
conectado
directamente a la alimentacin.
En la izquierda est el esquemtico,
en la derecha el diagrama de
alambrado.
Observe que una terminal del
resistor y la del nodo del LED
verde estn conectadas en el
mismo grupo de 5 conectores. As
se conectan electricamente los dos
componentes.
Pgina 34 Qu es un Microcontrolador?
Las terminales de la fuente Vdd y Vss proporcionan energa elctrica de la misma forma
como lo hace una bateria. Las terminales Vdd es como la terminal positiva de la batera, y
las terminales Vss son como la terminal negativa de la bateria. La figura 2-7 muestra como
una bateria aplica energa elctrica a un circuito originando un flujo de electrones en l. A
este flujo de electrones se le llama Corriente Elctrica, o solamente Corriente. El resistor
limita la corriente elctrica. Est corriente hace que el diodo emita luz.
N N
+++
+++
+++
--- - -N
-N - N
-
Figura 2-7
Flujo de electrones iluminando el
LED { XEElectron}
La figura 2-8 muestra como se usa la notacin esquemtica para describir el flujo de
electricidad en el circuito del LED. Se llama VOLTAJE a la presin electrica del circuito.
Los signos positivo y negativo se usan para mostrar el voltaje aplicado al circuito. La
flecha muestra el sentido de la corriente a travs del circuito. Esta flecha casi siempre
apunta en el sentido opuesto de la direccin de corriente de electrones. Fue Benjamin
Franklin quien defini el sentido de corriente de la terminal positiva a la terminal negativa
de un circuito. Con el paso del tiempo los cientficos descubrieron el sentido verdadero del
flujo de electrones, pero ya estaba establecido el punto de vista de B. Franklin.
Voltage
Vdd
Resistance
Current
LED
Voltage
Figura 2-8
Sentido convencional de corriente del
circuito LED.
Los signos + y aplicados al circuito
y la flecha de corriente muestran el
flujo de corriente a travs del circuito.
Vss
Dibujo del esquemtico (como figura2-8) es una imagen que explica como se conectan
uno o ms circuitos. Los esquematicos son utilizados por estudiantes, hobistas,
electricistas, ingenieros y todos los que saben trabajar con circuitos elctricos.
Anexo B. Otros Conceptos de Electricidad, es un anexo que contiene un glosario de
trminos y actividades para familiarizarse ms con mediciones de voltaje, corriente y
resistencia.
En la siguiente actividad, usted programar el BASIC Stamp para que el LED se ilumine y
luego se apague continuamente. El BASIC Stamp har esto conmutando el LED entre dos
conexiones diferentes Vdd y Vss. Recuerde: cuando el resistor se conecta a Vdd el LED se
ilumina. Ahora realice los cambios que muestra la figura 2-9 para verificar que el LED se
apaga. Esto sucede cuando la terminal del resistor se cambia de Vdd a Vss.
9 Desenergice su Tablilla de Experimentos.
9 Saque la terminal del resistor que est conectada en Vdd y conctela en Vss como
lo muestra la figura 2-9.
9 Energice su Tablilla de Experimentos.
9 Verifique el LED verde no emite luz. No se ilumina en verde.
Pgina 36 Qu es un Microcontrolador?
Por qu no se ilumina el LED? Como las dos terminales del circuito estn conectadas al
mismo voltaje (Vss), no hay diferencia de potencial en el circuito. Entonces no fluye
corriente en el circuito y el LED est apagado.
Vdd
X3
470
Vss
LED
Vss
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Vin
Vss
Figura 2-9
El LED est apagado.
En la izquierda est el
esquemtico y a la
derecha est el diagrama
del alambrado.
SOUT
24
VIN
SIN
23
VSS
ATN
22
VSS
21
20
P15
P0
19
P14
P1
18
P13
P2
BS2
Vdd
SOUT
24
VIN
SIN
23
VSS
RES
ATN
22
RES
VDD (+5V)
VSS
21
VDD (+5V)
20
P15
19
P14
18
P13
17
P12
BS2
Vdd
P0
P1
P2
P3
17
P12
P3
P4
16
P11
P4
16
P11
P5
10
15
P10
P5
10
15
P10
P6
11
14
P9
P6
11
14
P9
P7
12
13
P8
P7
12
13
P8
Vss
BS2-IC
Vss
BS2-IC
Figura 2-10
BASIC Stamp
Conmutando
El BASIC Stamp
puede
programarse
internamene
para
conectar
un LED a Vdd o
Vss.
Hay dos grandes diferencias entre cambiar la conexin manualmente y hacerlo con el
BASIC Stamp. Primero, el BASIC Stamp no tiene que cortar la alimentacin del rea de
experimentos cuando se hace el cambio fsico de Vdd a Vss. Segundo, en tanto que una
persona puede hacer estos cambios varias veces en un minuto, el BASIC Stamp lo puede
hacer miles de veces por segundo.
Partes del Circuito de Prueba del LED.
El circuito LED que muestra la figura 2-11 se alambra casi igual que el circuito del
ejercicio anterior. La diferencia es que la terminal del resistor manualmente se conmut del
Vdd al Vss y ahora se conecta a un pin de E/S del BASIC Stamp.
9 Desenergice la Tablilla de Experimentos.
9 Modifique el circuito de la Actividad # 1 y conecte como muestra la figura 2-11.
Pgina 38 Qu es un Microcontrolador?
Vdd
P14
X3
470
LED
Vss
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Vin
Vss
Figura 2-11
Circuito LED
controlado con el
BASIC Stamp.
La entrada del
circuito LED ahora
se conecta al pin de
E/S del BASIC
Stamp.
Los resistores son necesarios. Recuerde siempre usar un resistor. Sin el resistor circula
mucha corriente a travs del circuito y puede daar a los elementos del circuito, al BASIC
Stamp y a la Tablilla de Experimentos.
El programa ejemplo hace que un LED parpadee, se ilumine y se apage una vez por
segundo. Esto se hace introduciendo varias tcnicas de programacin a la vez. Despus de
ejecutarlo, usted experimentar con diferentes partes del programa para comprender mejor
como trabaja.
Programa Ejemplo: LedOnOff.bs2
9
9
9
9
9
Funcionamiento de LedOnOff.bs2
La instruccin DEBUG The LED connecto to p14 is blinking! hace que esta frase
aparezca en la Terminal DEBUG. La insruccin HIGH 14 hace que internamente la
BASIC Stamp conecte la terminal 14 a Vdd. Y esto hace que el LED se ilumine.
La instruccin PAUSE 500 hace que el BASIC Stamp no haga nada durante segundo
mientras el LED est iluminado. El nmero 500 hace que la instruccin PAUSE espere
500/1000 de segundo. El nmero que sigue de PAUSE se le llama argumento, Los
argumentos le dan a las instrucciones PBASIC la informacin necesaria para ejecutarse. Si
usted ve PAUSE en el manual BASIC Stamp descubrira que a este nmero se le llama
Duration del Argumento. El nombre Duration se escogi para este argumento para mostrar
que la instruccin PAUSE se detiene cierta duracin de tiempo y se expresa en
milisegundos.
Qu es un milisegundo? Un milisegundo es 1/1000 de un segundo. Y se abrevia: ms. 1
segundo dura 1000 milisegundos.
Pgina 40 Qu es un Microcontrolador?
Figura 2-12
DO...LOOP
El cdigo colocado entre las palabras
DO y LOOP se ejecuta en forma
continua.
LOOP
Justamente despus de las directivas del compilador. Esto abrir la Terminal Debug y
mantendra el puerto COM abierto. Esto asegurar que sus programas no se detengan
despus que pasen por DO...LOOP o cualquier otras instrucciones de Bucle que aprender
en los ltimos captulos. Usted ver estas instrucciones en algunos de los programas
ejemplo que no utilizaran una instruccin DEBUG. De esta forma estar capacitado para
ejecutar los programas restantes de este libro incluso si su computadora tiene un puerto
serie no normalizado, si este es su caso acuerdese de agregar la pequea instruccin
DEBUG cuando empiece a escribir sus propios programas.
Su Turno Tiempo y Repeticiones
Pgina 42 Qu es un Microcontrolador?
Un experimento agradable es ver que tan cortas pueden ser las pausas y todava ver
parpadear al LED. Cuando el LED parpadea muy rpido pero el ojo percibe que no
parpadea, a esto se le llama Persistencia de la Visin.
As se verifica cual es el umbral de su persistencia de visin:
9
9
9
9
varias condiciones. En esta actividad, usted programara al BASIC Stamp para que el LED
parpadee 10 veces.
Partes para el Conteo y Circuito de prueba.
Hay varias formas para hacer que el LED parpadee 10 veces. La forma ms simple es
usando el par de instrucciones de bucle: FOR...NEXT. El bucle FORNEXT es similar al
bucle DOLOOP. Cualquiera de los dos bucles se pueden usar para repetir instrucciones
un nmero determinado de veces. Es ms sencillo usar el bucle FORNEXT. A este
proceso a veces se le llama Conteo o Bucle Finito.
El bucle FOR...NEXT depende de una variable para ajustar el nmero de veces que el LED
parpadea. Una variable es una palabra de su eleccin que se usa para almacenar un valor.
El siguiente programa ejemplo eligi la palabra counter para contar las veces que el LED
parpadea.
La Eleccin de Palabras para nombres de Variables tiene las siguientes reglas:
1.
El nombre no puede ser una palabra que use el PBASIC. Las palabras de
PBASIC se llaman Palabras Reservadas y algunas con las que usted ya se ha
familiarizado son DEBUG, PAUSE, HIGH, LOW, DO y LOOP. Usted puede ver la lista
completa de palabras reservadas en el Manual BASIC Stamp.
2.
3.
Aunque el nombre puede tener letras, nmeros o guines, este debe comenzar con
una letra.
4.
Pgina 44 Qu es un Microcontrolador?
Le indica al Editor BASIC Stamp que su programa usar la palabra counter como una
variable de puede almacer un byte de informacin
Rango de Valores
Bit
Nib
Byte
Word
0a1
0 a 15
0 a 255
0 a 65535
Una instruccin DEBUG puede incluir formatos que determinan cuanta informacin
deber mostrar la Teminal Debug. Colocando el signo de interrogacin ? antes de una
variable en un instruccin DEBUG le indica a la Terminal Debug que muestre el nombre
de la variable y su valor. De la siguiente forma:
DEBUG
? counter
Pgina 46 Qu es un Microcontrolador?
Esta instruccin se incluye justamente para mostrar lo que hace el programa despus de 10
veces del bucle FOR...NEXT. Se mueve a la instruccin que sigue a NEXT.
Su turno Otras formas de Contar
Adems de las partes utilizadas en las Actividades #1 y #2 usted necesitar las siguientes
partes:
Un LED amarillo
Un resistor de 470 (amarillo-violeta-caf).
En la actividad #1, usted verific manualmente el primer circuito LED para asegurarse que
funcionara y despus lo conecto a la BASIC Stamp. Antes de conectar el segundo circuito
LED a la BASIC Stamp es importante que tambin lo verifique.
9
9
9
9
Vdd
X3
Vdd
470
P14
470
LED
LED
Vss
Vss
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Vin
Vss
Figura 2-13
Circuito Manual
de Prueba para
el segundo LED.
Pgina 48 Qu es un Microcontrolador?
Vdd
X3
P15
470
P14
470
LED
Vss
LED
Vss
Vin
Vss
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Figura 2-14
Conexin del
segundo LED
al
BASIC
Stamp
En la parte
izquierda
el
esquemtico
y en la parte
derecha
el
diagrama de
cableado.
En la actividad #2, usted uso el programa ejemplo y las instrucciones HIGH y LOW para
controlar el circuito LED conectado a la terminal P14. Estas instrucciones tendran que
modificarse para controlar el circuito LED controlado a la terminal P15. El lugar de usar
HIGH 14 y LOW14 usted usar HIGH 15 y LOW 15.
Programa Ejemplo: TestSecondLed.bs2
9
9
9
9
Qu es un Microcontrolador- TestSecondLed.bs2
' Encienda y Apague el LED conectado a P15 .
' Repitalo 1 vez por segundo en forma contnua.
' {$STAMP BS2}
' {$PBASIC 2.5}
DEBUG "Program Running!"
DO
HIGH 15
PAUSE 500
LOW 15
PAUSE 500
LOOP
Claro que usted puede controlar ambos LEDs al mismo tiempo. Una forma de hacer esto es
usando dos instrucciones HIGH antes de la instruccin PAUSE. Una instruccin HIGH
coloca el pin P14 en HIGH y la siguiente instruccin HIGH coloca el pin 15 en HIGH.
Tambin necesitar usted dos instrucciones LOW para apagar los LEDs. Es verdad que
ambos LEDs no se iluminarn y apagarn EXACTAMENTE al mismo tiempo porque
primero se ilumina o apaga uno y luego el otro. Sin embargo solo hay un milisegundo de
diferencia entre los dos cambios y el ojo humano no podr detectarlo.
Programa Ejemplo: FlashBothLeds.bs2
Ustede puede hacer que los LEDs alternen combinando las instrucciones HIGH y LOW
que controlan los terminales de Entrada/Salida. Esto significa que cuando un LED esta
iluminado, el otro est apagado.
Pgina 50 Qu es un Microcontrolador?
Figura 2-15
LED Bicolor en un
Aparato de Seguridad.
Cuando la puerta esta
asegurada el LED bicolor
se iluma en rojo. Cuando
la puerta se libera con el
cdigo correcto de un una
llave electrnica el LED
se ilumina en verde.
Figura 2-16
LED Bicolor.
A la izquierda est su
smbolo y a la derecha el
dibujo.
En realidad un LED Bicolor son justamente dos LEDs en un solo empaque. La figura 2-17
muestra como se polariza el LED para que se ilumine verde. Al invetir las terminales del
LED ahora se ilumina rojo. Igual que los otros LEDs cuando conecta ambas terminales del
circuito a Vss el LED se apaga.
Figura 2-17
Voltaje aplicado al
LED Bicolor.
A
la
izquierda
verde, en el centro
rojo y a la derecha
apagado.
Un LED Bicolor
Un Resistor de 470 s (amarillo-violeta-caf).
Un trozo de alambre.
Pgina 52 Qu es un Microcontrolador?
Vdd
1 Vin 2
Vss
Vdd
X3
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
2 Vin 1
Vss
Figura 2-18
Prueba manual del
LED Bicolor.
En la izquierda est
el LED Bicolor verde
y en la derecha el
rojo.
Para controlar un LED Bicolor con el BASIC Stamp se requieren dos pines E/S. Despus
que usted ha verificado manualmente que el LED Bicolor funciona usando la prueba
manual, usted puede conectar el circuito LEDs en el BASIC Stamp como se muestra en la
figura 2-19.
Figura 2-19
LED Bicolor conectado
en el BASIC Stamp.
En la izquierda est el
esquemtico y a la
derecha el alambrado.
La figura 2-20 muestra como se usan los pines P14 y P15 para controlar el flujo de
corriente en el circuito LED Bicolor. El esquemtico superior muestra el flujo de corriente
en el LED verde cuando P15 est en Vdd con HIGH, y P14 est en Vss con LOW. Esto
hace que el LED verde permita que circule corrientea travs de l cuando se aplica el
voltaje como se muestra, en cambio el LED rojo actua como una vlvula abierta y no hay
flujo de corriente en l. El LED Bicolor se ilumina verde.
El esquemtico inferior muestra lo que sucede cuando P15 est en Vs y P14 est en Vdd.
Ahora est invertido el voltaje. El LED verde est apagado y no circula por l corriente. En
tanto que el LED rojo est iluminado y la corriente circula por circuito en direccin
contraria.
Pgina 54 Qu es un Microcontrolador?
1
Current
Figura 2-20
Circuito de Prueba del
LED Bicolor.
470
1
Current
2
La figura 2-20 la clave para programar el BASIC Stamp y hacer que el LED Bicolor emita
dos colores. El esquemtico superior muestra el LED Bicolor en verde usando HIGH 15 y
LOW 14. El esquemtico inferior muestra el LED Bicolor en rojo usando LOW 15 y
HIGH 14. Para apagar el LED se manda LOW a los pines P14 y P15. En otras palabras use
LOW en ambos pines.
El LED Bicolor Apagado. Si usted manda HIGH a los pines P14 y P15 es LED se
apaga.Por qu? Porque la diferencia de potencial (voltaje) entre los pines P14 y P15 es la
misma ya sea que mande HIGH o LOW a los pines P14 y P16.
DO
DEBUG "Green..."
HIGH 15
LOW 14
PAUSE 1500
DEBUG "Red..."
LOW 15
HIGH 14
PAUSE 1500
DEBUG "Off...", CR
LOW 15
LOW 14
PAUSE 1500
LOOP
el
nombre
Pgina 56 Qu es un Microcontrolador?
RESUMEN
El BASIC Stamp se puede programar para conmutar un circuito con un LED que se
ilumine y se apague. Los LEDs indicadores son tiles en una variedad de lugares como
monitores de computadoras, lectores de discos, y otros aparatos. Estudiamos una forma
para identificar las terminales ctodo y nodo del LED. Un circuito LED debe tener un
resistor para limitar la que corriente que circula por l. Estudiamos los Resistores junto con
uno de sus cdigos ms comunes para conocer el valor del resistor.
El BASIC Stamp ilumina y apaga un circuito LED conectando internamente un pin de
Entrada/Salida: E/S, ya sea a Vdd o Vss. La instruccin HIGH se utiliza para que el
BASIC Stamp internamente cone uno de sus pines a Vdd, y la instruccin LOW se usa
para conectar internamente un pin a Vss. La instruccin PAUSE se usa para que el BASIC
Stamp no ejecute instrucciones en un tiempo determinado.
Esta se utiliz para que el LED se mantenga apagado o encendido cierta cantidad de
tiempo. La cantidad de tiempo la determina el nmero usado en el valor de Duration de
la instruccin PAUSE.
El bucle DO...LOOP se puede usar para crear un bucle infinito. Las instruccin localizadas
entre DO y LOOP son palabras clave que se ejecutarn una y otra y otra vez. Aunque esta
accin se llama bucle infinito, el programa puede reiniciarse conectactando y
desconectando la alimentacin o presionando y liberando el boton RESET. Tambin puede
cargarse un nuevo programa en el BASIC Stamp y este borrar el programa con bucle
infinito. Los bucles de CONTEO pueden hacerse con FOR...NEXT, una variable para
ajustar el nmero de repeticiones que el bucle tiene que hacer y nmeros para especificar
donde comenzar y terminar el CONTEO:
Estudiamos la Direccin de Corriente y la Polaridad del Voltaje para usar un LED Bicolor.
Si el voltaje se aplica al circuito LED, la corriente pasar por el en una direccin, y este se
iluminar de un color particular. Si se invierte la polaridad del Voltaje, la corriente lo
atravieza en direccin inversa y ste se ilumina con un color diferente.
Preguntas
Pgina 58 Qu es un Microcontrolador?
Proyectos
Vss
DO
HIGH 13
PAUSE 125
LOW 13
PAUSE 125
LOOP
DEBUG ? counter, CR
HIGH 14
PAUSE 500
LOW 14
PAUSE 500
NEXT
P1. El diagrama del LED Bicolor de la izquierda permanece sin cambios de la Figura
2-19. El diagrama del LED amarillo est copiado de la Figura 2-11. Para este
proyecto el pin P14 se cambi por P13 y se us un LED amarillo en lugar del
verde. Nota: Cuando BASIC Stamp ejecuta las instrucciones se va un modo de
bajo consumo y hace que el LED Bicolor parpadee brevemente cada 2.3 segundos.
Esto mismo se aplica despus que el programa ejecuta una instruccin END. Hay
otra instruccin llamada STOP que usted puede agregar al final de los
programas para hacer que mantenga las seales HIGH/LOW sin ir al modo de bajo
consumo, evitando as el parpadeo.
P13
470
Yellow
LED
Vss
Pgina 60 Qu es un Microcontrolador?
FOR counter = 1 TO 10
HIGH 13
PAUSE 500
LOW 13
PAUSE 500
NEXT
' LED Rojo encendido
LOW 15
HIGH 14
La figura 3-1 muestra el smbolo y el dibujo de un botn push normalmente abierto. Dos
de las terminales del botn push se conectan en cada terminal. Esto significa que al
conectar un alambre al pin 1 del botn push tambin queda conectado al pin 4.
Pgina 62 Qu es un Microcontrolador?
La misma regla se aplica para las terminales 2 y 3. La razn por la cual el botn push no
tiene solamente dos terminales es poque necesita estabilidad. Si el botn push slo tuviera
dos terminales es porque stas podrian eventualmente doblarse y romperse por la presin
que recibe cuando los usuarios lo presionan.
1, 4
2, 3
Figura 3-1
Botn Push Normalmente Abierto
En la izquierda est el smbolo y a la
derecha un dibujo.
El lado izquierdo de la figura 3-2 muestra como se ve un botn push normalmente abierto
cuando no est presionado. Cuando el botn no se presiona hay un espacio entre las
terminales 1,4 y 2,3. Este espacio hace que la terminal 1,4 no conduzca corriente a las
terminales 2,3. A esto se le llama Circuito Abierto. El nombre normalmente abierto
significa que el estado normal (sin presionar) forma un circuito abierto. Cuando se presiona
el botn, el espacio entre las terminales 1,4 y 2,3 se cierra con un metal conductor. A esto
se le llama Circuito Cerrado y la corriente fluye a travs del botn push.
1, 4
1, 4
2, 3
2, 3
Figura 3-2
Botn Push Normalmente Abierto
A la izquierda est sin presionar, a la
derecha est presionado.
La figura 3-3 muestra el circuito a construir para verificar manualmente el botn push.
Vin
Vss
X3
1, 4
2, 3
470
LED
Vss
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Figura 3-3
Circuito de prueba del
botn push.
Cuando no est presionado el botn push no se iluminar el LED. Si est bien construdo,
cuando el botn push est presionado el LED se iluminar.
Seales de Alarma. Si el LED de Pwr de su Tablilla de Experimentos parpadea, brilla
poco o no brilla cuando reconecta la alimentacin, esto significa que hay un corto circuito
de Vdd a Vss o de Vin a Vss. Si esto sucede, desconecte inmediatamente la alimentacin y
encuentre y corriga el error de su circuito.
El LED construido en la Tablilla de Experimentos es diferente. Si el LED solo brilla
cuando est ejecutandose un programa esto puede estar asociado con la Fuente o con la
Ejecucin. Cuando termina un programa porque ejecuta una instruccin END o porque se
ejecuta fuera de las instruciones el LED se apagar.
Pgina 64 Qu es un Microcontrolador?
El lado izquierdo de la Figura 3-4 muestra que sucede cuando el botn push no est
presionado. El circuito LED no est conectado a Vdd. Es un circuito abierto que no puede
conducir corriente. Al presionar el botn push, como lo muestra el lado derecho de la
figura, usted cierra la conexin entre la terminales con un metal conductor. Esto forma una
trayectoria para que los electrones fluyan a travs del circuito y como consecuencia el LED
se ilumina.
Vdd
Vdd
1, 4
1, 4
2, 3
2, 3
No
Current
470
470
Current
LED
Vss
Figura 3-4
El botn push est No
presionado y presionado.
LED
En la izquierda el botn
push sin presionar es un
circuito abierto y no hay
luz.
En la derecha el botn
esta presionado y es un
circuito cerrado y emite
luz.
Vss
La figura 3-5 muestra un circuito que hace que el LED se comporte diferente. Cuando el
botn no est presionado, se ilumina el LED, cuando se presiona el botn el LED se apaga.
Como este botn push conecta un conductor entre las terminales 1,,4 y 2,3 cuando se
presiona, esto significa que la electricidad puede tomar la trayectoria de menor resistencia
a travs del botn push en lugar de a travs del Led. A diferencia de los corto circuitos
estudiados en el Recuadro de Seales de Alarma, el corto circuito del botn presionado y
se refleja en las terminales del LED no daan el circuito y realizan un propsito til.
9 Construya el circuito que muestra la Figura 3-5.
9 Repita las pruebas que realiz en el primer circuito de botn push ahora en este
nuevo circuito.
Vdd
Vdd
1, 4
LED
2, 3
470
Vss
Vin
Vss
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Figura 3-5
El LED refleja el corto
circuito del botn push.
Se puede conectar de esta forma el LED? Hasta ahora, el ctodo del LED se ha
conectado siempre a Vss. Ahora el LED est en un lugar diferente en el circuito, y su nodo
conectado a Vdd. Las personas preguntas si esta conexin no rompe las leyes del circuito y
la respuesta es no. La presin elctrica que proporciona Vdd y Vss es 5 volts. El LED rojo
solo necesita 1.7 volts y el resistor usar los 3.3 volts restantes sin importar el orden en que
estn conectados.
La figura 3-6 muestra el circuito botn push que se conecta al pin P3, E/S, del BASIC
Stamp.
9 Construya el circuito que muestra la Figura 3-6.
Pgina 66 Qu es un Microcontrolador?
Vdd
X3
Vdd
P3
220
10 k
Vss
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Vin
Vss
Figura 3-6
Circuito Botn
Push conectado al
pin P3.
En el diagrama de
alambrado el
resistor de 220
del lado izquierdo
conecta el botn
push a P3
mientras que el
resistor de 10 K
de la derecha
conecta al botn
push a Vss.
La figura 3-7 muestra como el BASIC Stamp ve cuando el botn push est presionado y
cuando no est presionado. Cuando el botn push est presiondado, el BASIC Stamp sensa
que Vdd se conecta a P3. Internamente el BASIC Stamp coloca un 1 lgico en un parte
de su memoria que almacena la informacin de los pines de Entrada/Salida. Cuando el
botn push no est presionado, no sensa Vdd, senda Vss a travs del los resistores de 10
y 220 . Y ahora se almacena un 0 lgico en la misma localidad de memoria que
almacen el 1 cuando el botn push estaba presionado.
Vdd
220
10 k
SOUT
SIN
24
VIN
23
ATN
VSS
VSS
22
RES
21
P0
VDD (+5V)
20
P15
P1
19
P14
P2
18
P13
P3
17
P12
P4
16
P11
P5
10
15
P10
P6
11
14
P9
P7
12
13
P8
BS2
1
0
BS2-IC
Vss
Vdd
220
10 k
SOUT
SIN
BS2
24
VIN
23
VSS
22
RES
ATN
VSS
21
VDD (+5V)
P0
20
P15
P1
19
P14
P2
P3
P4
P5
18
P13
17
P12
16
P11
10
15
P10
P6
11
14
P9
P7
12
13
P8
Figura 3-7
BASIC Stamp leyendo un
botn push.
Arriba, cuando est
presionado el botn el
BASIC Stamp lee un 1
Abajo, cuando no est
presionado el botn el
BASIC Stamp lee un 0
BS2-IC
Vss
Binario y Circuitos. Para formar nmeros el sistema de base-2 nmeros usa solamente
dos digitos 1 y 0 y estos valores binarios pueden transmitirse de un dispositivo a otro. El
BASIC Stamp interpreta Vdd como un 1 binario y el Vss como un 0 binario. En forma
semejante, cuando el BASIC Stamp fija un pin de entrada/salida a Vdd usuando un HIGH
manda un 1. Cuando fija un pin de entrada/salida a Vss usando un LOW manda un 0.
Esta es un forma muy comn de comunicacin de nmeros binarios usada por muchos
chips de computadoras y otros dispositivos.
El siguiente programa hace que el BASIC Stamp verifique al botn push cada de
segundo y mande el valor de IN3 a la Terminal Debug.
Pgina 68 Qu es un Microcontrolador?
Figura 3-8
La Terminal Debug muestra los
Estados del botn push.
La Terminal Debug muestra un 1
cuando el botn push est
presionado y un 0 cuando con est
presionado.
Funcionamiento de ReadPushbuttonState.bs2
El circuito que acaba de trabajar tiene un resistor conectado a Vss. Este resistor se llama
resistor de pull-down porque jala el voltaje de P3 hacia abajo: Vss (0 volts) cuando el
botn no est presionado. La Figura 3-9 muestra un circuito botn push que usa un resistor
pull-up. Este resistor jala el voltaja hacia arriba: Vdd (5 volts) cuando el botn no est
presionado. Ahora se han invertido las reglas. Cuando el botn no esta presionado, IN3
almacena un 1, y cuando el botn esta presionado, IN3 almacena un 0.
El resistor de 220 se usa en este ejemplo para proteger el pin E/S del BASIC Stamp.
Esta es una buena tcnica que se usa en los prototipos, en los productos este resistor se
reemplaza con un alambre (ya que un alambre cuesta menos que un resistor)
Vdd
10 k
P3
220
Vss
Vin
Vss
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Figura 3-9
Circuito Botn push
modificado.
Low Activo vs High Activo. El circuito botn push de la Figura 3-9 se llama Low activo
poque manda a el BASIC Stamp una seal baja (Vss) cuando el botn est presionado. El
circuito botn push de la Figura 3-6 se llama High activo poque manda una seal alta
(Vdd) cuando el botn est presionado.
Pgina 70 Qu es un Microcontrolador?
Figura 3-10
Botn y LED de un
Monitor de
Computadora
El BASIC Stamp se puede programar para que tome decisiones basadas en lo que sensa.
Por ejemplo, se puede programar para que parpadee el LED 10 veces por segundo cuando
se presiona el botn.
Botn y partes del Circuito LED
La Figura 3-11 muestra el circuito del botn push usado en la actividad que acaba de
terminar junto con el circuito LED del Captulo 2, Actividad #2.
9 Construya el circuito que muestra la Figura 3-11.
P14
470
LED
Vdd
Vin
X3
Vss
Vdd
P3
220
10 k
Vss
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Vss
Figura 3-11
Botn push y
circuito LED.
El BASIC Stamp se puede programar para que tome decisiones usando las instrucciones
IF..THEN...ELSE. El Programa Ejemplo que usted ejecutar har parpadear el LED
cuando se presione el botn push. Cada vez que se ejecuta el bucle DO...LOOP, la
instruccin IF...THE...ELSE verifica el estado del botn push y decide si parpadea o no
parpadea el LED.
Programa Ejemplo: PushbuttonControlledLed.bs2
Pgina 72 Qu es un Microcontrolador?
Haga varias veces las instrucciones que estn entre Aqu y la instruccin Loop.
o Muestre el valor de IN3 en la Terminal Debug
o Si el valor de IN3 es 1, Entonces
El LED se ilumina
Espere un 1/20 de segundo
El LED se apaga
Loop
La Figura 3-12 muestra un segundo circuit LED y botn push que se agrega al circuito que
usted verific en la actividad anterior.
9 Construya el circuito que muestra la Figura 3-12. Si necesita ayuda para el circuito
mostrado en el diagrama, use como gua el diagrama de alambrado que muestra la
Figura 3-13.
9 Modifique el programa ReadPushbuttonState.bs2 para que ahora lea IN4 en lugar
de IN3, y selo para verificar su segundo circuito botn push.
Pgina 74 Qu es un Microcontrolador?
P15
470
P14
470
LED
Vss
LED
Vss
Vdd
Vdd
Figura 3-12
Diagrama Esquemtico
de los Botones push y
LEDs.
P4
220
P3
220
10 k
Vss
10 k
Vss
Los Puntos indican conexiones. Hay 3 lugares donde se intersectan las lneas en la
Figura 3-12, pero solamente dos de estas intersecciones tienen puntos. Cuando dos lneas
se insersectan con un punto, esto significa que estn conectadas electricamente. Por
ejemplo, el resistor de 10 K en la parte inferior derecha de la Figura 3-12 tiene una de sus
terminales P3 conectadas al botn push y la otra a la terminal del resistorde 220. Cuando
dos lines se intersectan pero no hay punto, esto significa que estos dos alambres NO
ESTN conectadas elctricamente. Por ejemplo, la lnea que conecta a P4 de botn push
y el resistor de 10 K no est conectado con P3 del botn push porque no hay punto en
esa interseccin.
Vdd
X3
Vin
Vss
++
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Figura 3-13
Diagrama de alambrado de dos
Botones push y dos LEDs.
Pgina 76 Qu es un Microcontrolador?
DEBUG HOME
DEBUG ? IN4
DEBUG ? IN3
IF (IN3 = 1) THEN
HIGH 14
PAUSE 50
ELSEIF (IN4 = 1) THEN
HIGH 15
PAUSE 50
ELSE
PAUSE 50
ENDIF
LOW 14
LOW 15
PAUSE 50
LOOP
Si la Terminal Debug muestra a IN3 y IN4 rotando es muy difcil leer lo que se est
mostrando. Una forma de detener la rotacin es mandando siempte el cursor a la posicin
izquierda superior de la Terminal Debug utilizando el Control de Caracteres HOME:
DEBUG HOME
Al mandar el curso a la posicin izquierda superior cada vez a travs del bucle
DO...LOOP, las instrucciones
DEBUG ? IN4
DEBUG ? IN3
Se muestran otra vez los valores de IN3 y IN4 en la misma parte de la Terminal Debug
La palabra clave DO inicia el bucle de este programa
DO
Estas instrucciones de la frase IF son las mismas del Programa Ejemplo de la actividad
anterior.
IF (IN3 = 1) THEN
HIGH 14
PAUSE 50
Aqu es donde est la ayuda de ELSEIF. Si IN3 no es 1 pero IN4 es 1, hacemos que
conecte el LED de P15 en lugar del LED conectado en P14.
ELSEIF (IN4 = 1) THEN
HIGH 15
PAUSE 50
Es hora de apagar el LED y hacer pausa otra vez. Tu podras tratar de decidir que LED
quieres que parpadee. Las instrucciones de PBASIC lo ejecutan bonito y rpido, entonces
podemos apagarlos y olvidarnos de tomar decisiones?
LOW 14
LOW 15
PAUSE 50
El Programa Ejemplo tiene una falla. Trate de presionar ambos botones al mismo tiempo y
observe la falla. Usted podra espererar que ambos LEDs parpadeen, pero no lo hacen
porque solamente se est ejecutando un bloque de cdigos IF...ELSEIF...ELSE antes de
que brinque al siguiente ENDIF. De esta forma puede usted resolver este problema o falla.
9 Guarde en programa PushbuttonControlOfTwoLeds.bs2 con un nombre diferente.
9 Reemplace la instruccin IF y el siguiente bloque:
IF ( IN3 = 1) THEN
HIGH 14
PAUSE 50
Pgina 78 Qu es un Microcontrolador?
Ejecute su programa modificado y vea si maneja los dos botones push y los circuitos LED
como usted esperara.
La palabra clave AND se puede usar en una instruccin IF...THEN para verificar si es
verdadera ms de una condicin. Todas las condiciones con AND deben ser verdaderas
para que la frase IF sea verdadera.
La palabra clave OR se puede usar para verificar si por lo menos una de la condiciones es
verdadera.
Tambin puede usted modificar el programa para que el LED que parpadea lo haga con
diferentes cantidades de tiempo. Por ejemplo, usted puede reducir Duration de la
Instruccin PAUSE a 10 en ambos botones push, e incrementar PAUSE para el LED en
P14 hasta 100, e incrementar PASE para el LED P15 hasta 200.
9 Modifique las instrucciones PAUSE en el IF y en las dos frases de ELSEIF como
se coment.
9 Ejecute el programa modificado.
9 Observe la diferencia en el comportamiento de cada LED.
Un LED Bicolor.
Un Resistor de 470 (amarillo-violeta-caf).
Un Botn push normalmente abierto.
Un Resistor de 10 K (caf-negro-naranja).
Un Resistor de 220 (rojo-rojo-caf).
Alambres para puentes.
Construccin del Circuito Tiempo de Reaccin de un Temporizador
La Figura 3-14 muestra los diagramas esquemtico y alambrado de un circuito que puede
usarse con el BASIC Stampo para hace un juego de Tiempo de Reaccin.
9 Construya el circuito que muestra la Figura 3-14.
9 Ejecute el programa TestBiColorLED.bs2 del captulo 2, actividad #5 para
verificar el circuito LED Bicolor y asegurese que est bien alambrado.
9 Si usted reconstruye el circuito botn push para esta actividad, ejecute el programa
ReadPushbuttonState.bs2 de la Acitivad #2 de este captulo para asegurarse que el
botn push est trabajando correctamente.
P15
1
1
2
Vdd
P14
470
Vdd
P3
220
10 k
Vss
Vin
Vss
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Figura 3-14
Circuito del
Juego
Tiempo de
Reaccin
Pgina 80 Qu es un Microcontrolador?
El siguiente Programa Ejemplo apagar el LED Bicolor hasta que el Jugador mantenga
presionado el botn push. Cuando el botn push se mantiene presionado, el LED se
iluminar rojo por un corto perodo de tiempo. Cuando se ilumina verde, el jugador tiene
que soltar el botn push tan pronto como l o ella puedan. As el programa mide el tiempo
de reaccin que emplea el jugador en soltar el botn push para iluminarse verde.
El programa ejemplo tambin muestra como funcionan los conceptos polling y conteo.
Polling es el proceso de verificar algo una vez y otra vez muy rpidamente para ver si este
proceso ha cambiado. Conteo es el proceso de agregar un nmero a una variable cada vez
que se hace (o no se hace) algo. En este programa, el BASIC Stamp verificar el cambio
Polling cuando el LED Bicolor cambia a verde hasta que se libera el botn push. Este
esperar 1/1000 de segundo usando la instruccin PAUSE 1. Cada vez que verifica y el
botn no se ha liberado, agregar un 1 a la variable de Conteo llamada timeCounter.
Cuando el botn push se ha liberado, el programa deja de verificar Polling y manda un
mensaje a la Terminal DEBUG y sta muestra el valor de la variable timeCounter.
Programa Ejemplo. ReactionTimer.bs2
Figura 3-15
Instrucciones de Tiempo de
Reaccin en la Terminal Debug.
Word
DEBUG "Press and hold pushbutton", CR, ' Muestra instrucciones tiempo reac.
"to make light turn red.", CR, CR,
"When light turns green, let", CR,
"go as fast as you can.", CR, CR
DO
HIGH 14
LOW 15
PAUSE 1000
LOW 14
HIGH 15
timeCounter = 0
DO
PAUSE 1
timeCounter = timeCounter + 1
LOOP UNTIL IN3 = 0
LOW 15
Pgina 82 Qu es un Microcontrolador?
Como el programa tendr que mantener identificado el nmero de veces que se verific
(Polling) el botn de push, declararemos una variable que se llama timeCounter.
Variables Inicializando en Cero: Cuando declaramos una variable en PBASIC,
automticamente su valor es CERO hasta que una instruccin la ajusta a su nuevo valor.
Las instrucciones DO...LOOP se pueden anidar. En otras palabras, usted puede color un
bucle DO...LOOP dentro de otro bucle DO...LOOP.
DO
Merece nuestra atencin el bucle interno DO...LOOP. Un bucle DO...LOOP puede usar
una condicin para decidir si se sale o no se sale del bucle y se mueve a las siguientes
instrucciones. El bucle DO...LOOP se repite as mismo todo el tiempo que el botn push
no est presionado (IN3 = 0). El bucle DO...LOOP se ejecutar una vez y otra vez hasta
que IN3 = 1. Entonces, el progama se mover a la siguiente instruccin despus de la frase
LOOP UNTIL. Este es un ejemplo de Polling. El bucle DO...LOOP UNTIL verifica
hasta que se presiona el botn push.
DO
LOOP
UNTIL IN3 = 1
Las instrucciones que siguen inmediatamente despues de la frase LOOP UNTIL cambian
el LED Bicolor rojo, se mantiene as un segundo y luego se ilumina verde.
HIGH
LOW
PAUSE
LOW
14
15
100
14
HIGH 15
Tan pronto como el LED Bicolor se ilumina verde, es momento de empezar a contar para
saber cuanto tiempo utiliza el jugador en liberar el botn push. La variable timeCount se
ajusta en cero, y entonces otro bucle DO...LOOP con la condicin UNTIL empieza a
repetirse a si mismo. Y se repite as mismo hasta que el jugador liber el botn push
(IN3=0). Cada vez que pasa por el bucle, el BASIC stamp lo retarda 1 milisegundo usando
PAUSE 1, y tambin agrega un 1 al valor de la variable timeCounter.
TimeCounter = 0
Fija el timeCounter en cero
DO
Bucle anidado, cuenta el tiempo
PAUSE = 1
timeCounter = timeCounter + 1
LOOP UNTIL IN3 = 0 hasta que se libera el botn push
La ltima frase del programa es LOOP, que regresa al programa al primer DO.
Su turno Revisin del Diseo (Topicos Avanzados)
Pgina 84 Qu es un Microcontrolador?
9 Haga que PAUSE 1 sea un comentario y verifique para ver la exactitud del
programa.
En lugar de cambiar delay a comentario, otra forma para solucionar el programa es
multiplicar su resultado por dos. Por ejemplo, justamente antes de la instruccin DEBUG
que muestra el nmero de milisegundo, usted puede insertar una unstruccin que
multiplique el resultado por dos:
timeCounter = timeCounter * 2
<- Agregue este
DEBUG Su tiempo fue, DEC timeCounter, ms., CR, CR
Coloque el valor o variable que desea multiplica por un valor fraccional antes del
operador */.
2.
Tome el valor fraccional que usted desea usar y multiplquelo por 256.
3.
4.
2.
3.
4.
9 Justo antes de la instruccin PAUSE 1000 dentro del bucle DO...LOOP, use la
instruccin RANDOM para darle a value un nuevo valor random de la
secuencia de un pseudo random que empieza con 23.
RANDOM value
DEBUG "Delay time ", ? 1000 + value, CR
Pgina 86 Qu es un Microcontrolador?
LOW 14
HIGH 15
Problema 3. Un jugador que presiona el botn antes que cambie a luz verde obtiene
un muy buen irrasonable score (1 ms) Su microcontrolador necesita calcular si el
jugador est haciendo trampa.
El pseudo cdigo se introdujo cerca del final de la Actividad #3 en este captulo. Aqu
estn algunos pseudo cdigos que le ayudan a aplicar la frase IF...THEN...ELSE para
resolver el problema. Considere que ha hecho los cambios de los problemas 1 y3, si el
jugador libera el botn antes que la luz sea verde el timeCounter ser ahora 2 en lugar de 1.
Los cambios abajo mostrados harn que funcione el timeCounter ya sea valga 1 o 2.
RESUMEN
Este captulo introdujo el botn push y algunos circuitos comunes con botn push.
Tambin introdujo como construir y verificar un circuito botn push y como usar el
BASIC Stamp para leer el estado de uno o ms botones push. Se program el BASIC
Stamp para tomar decisiones basado en el estado (s) de los botones push y sta
informacin se utiliz para controlar LEDs.
Se construy un juego de reaccin de tiempo usando estos conceptos. Adems se program
a el BASIC Stamp para controlar los LEDs y verificar un botn push y tomar mediciones
de tiempo.
Se introdujeron varios conceptos de programacin, que incluyen conteo, pseudo cdigos
para planeacin de flujo de programas, exceso de cdigo en aplicaciones sensibles al
tiempo y valores de semillas para eventos pseudo random.
Se construyeron circuitos de lectura individuales de botn push usando variables
especiales de e/s (IN3, IN4, etc) usando el BASIC Stamp, y se hicieron decisiones basados
en estos valores usando las instrucciones IF...THEN...ELSE, y se introdujeron las
instrucciones de bloque IF...ELSEIF...ELSE. Para evaluar ms de una condicin, se
introdujeron los operadores AND y OR. Se agreg una condicicin a un bucle DO...LOOP
usando la palabra clave UNTIL, adems se introdujo el anidado de bucles DO...LOOP.
Para agregar un elemento no predecible se introdujo la instruccin RANDOM a una
aplicacin del Tiempo de Reaccin.
Preguntas
Pgina 88 Qu es un Microcontrolador?
Q1. Al mandar el BASIC Stamp usa un pin E/S como salida, en tanto que al
recibir usa el pin E/S como entrada.
Q2. Normalmente abierto significa que el estado normal del botn push (sin presionar)
forma un circuito abierto.
Q3. Cuando se presiona, la distancia entre la terminales se unen con un metal
conductor. La corriente puede circular a travs del botn push.
Q4. IN3 = 1cuando el botn se conecta a Vdd. IN3 = 0 cuando el botn push se
conecta a Vss.
Q5. DEBUG ? IN3 muestra el texto IN3 = seguido por el valor almacenado en IN3
(el valor puede ser un 1 o un 0 dependiendo del pin P3), y le sigue un regreso.
Q6. Los bucles IFTHENELSE y IFELSEIFELSE.
Q7. El control de caracteres HOME manda al cursor a la posicin izquierda superior
de la Terminal Debub.
E1. En el programa el bucle DO...LOOP se repite cada segundo por la instruccin
PAUSE 250. Para repetirlo cada segundo cambie PAUSE 250 (250 ms = 0.25s
=1/4 s) por PAUSE 1000 (1000 mse = 1s)
DO
DEBUG ? IN3
PAUSE 1000
LOOP
E2. Para leer el pin P6 reemplace IN3 con IN6. El programa slo muestra el estado del
botn push, y no usa el valor para tomar decisiones, por eso no importa si el
resistor es pull-up o pull-down. La instruccin DEBUG mostrar cualquier estado
del botn.
DO
DEBUG ? IN6
PAUSE 250
LOOP
P1. Primero se agreg un botn push para el segundo jugador y se conect al BASIC
Stamp en el pin P4. El esquemtico es el de la Figura 3-13.
Vdd
P15
Vdd
1
P4
P3
220
220
10 k
P14
470
Vss
10 k
Vss
Abajo se incluyen secciones del programa solucin, pero recuerde que las
soluciones pueden codificarse de diferentes maneras. Sin embargo, la mayora de
las soluciones inclurn las siguentes modificaciones:
Use dos variables para controlar los tiempos de dos jugadores.
timeCounterA VAR
timeCounterB VAR
Word
Word
Espere que los dos botones estn presionados antes que el LED sea rojo, usando el
operado AND.
LOOP UNTIL {IN3 = 1} AND {IN4 = 1}
Pgina 90 Qu es un Microcontrolador?
Espere que los dos botenes se liberen para el tiempo final, y use nuevamente el
operador AND.
LOOP UNTIL {IN3 = 0} AND {IN4 = 0}
Word
Word
PAUSE 1000
mensaje
PAUSE 1000
LOW 14
HIGH 15
timeCounterA = 0
timeCounterB = 0
DO
PAUSE 1
IF (IN3 = 1) THEN
' Si el botn todava est presionado,
timeCounterA = timeCounterA + 1
' incremente el contador
ENDIF
IF (IN4 = 1) THEN
timeCounterB = timeCounterB + 1
ENDIF
LOOP UNTIL (IN3 = 0) AND (IN4 = 0)
LOW 15
DEBUG "Tiempo del jugador A: ", DEC timeCounterA, " ms. ", CR
DEBUG "Tiempo del jugador B: ", DEC timeCounterB, " ms. ", CR, CR
IF (timeCounterA < timeCounterB) THEN
DEBUG "El jugador A es el ganador!", CR
ELSEIF (Tiempo del jugador B < timeCounterA) THEN
DEBUG "El jugador B es el ganador!", CR
ELSE
' Son iguales los tiempos A & B
DEBUG "Es un empate!", CR
ENDIF
DEBUG CR
DEBUG "Para jugar otra vez ", CR ' Instrucciones para jugar otra vez.
DEBUG "presionen los botones.", CR, CR
LOOP
Pgina 92 Qu es un Microcontrolador?
PRESENTANDO AL SERVOMOTOR
Un motor servo para hoby es un dispositivo que controla la posicin, usted los encuentra
en carros de radiocontrol RC, barcos o aviones. En carros RC, el servo mantiene el volante
para controlar que tan brusco gira el carro. En un barco RC, mantiene el timn en posicin
para dar vueltas. Los aviones RC tpicamente tienen varios servos para la posicin de los
diferentes alerones para controlar el movimiento del avin. En vehculos impulsados por
mquinas de gas, otro servo mueve la leva de la mquina para controlar su velocidad. Un
ejemplo de un avin RC y su radio control lo muestra la Figura 4-1. El hobista vuela el
avin manipulando la palanca del joystic del radio control, y ste hace que los servos del
avin controlen las posiciones de los alerones y el timn del avin.
Pgina 94 Qu es un Microcontrolador?
Figura 4-1
Modelo de Avin y su
Radio control.
Entonces, cmo mantiene el joystich del radio control una cierta posicin que hace que el
alern del avin mantenga cierta posicin? El radio control convierte la posicin del
joystick en pulsos de radio que duran cierta cantidad de tiempo. El tiempo que dura cada
pulso indica la posicin de uno de los joysticks. En el avin RC, un radio-receptor
convierte estos pulsos de radio en pulsos digitales. (seales high/low) y las manda a los
servos del avin. Cada servo tiene un circuito interno que convierte estos pulsos digitales a
una posicin que conserva el servo. La cantidad de tiempo que duran cada pulso es lo que
le indica a los servos la posicin que deben mantener. Estos pulsos de control slo duran
unas pocas milsimas de segundo, y se repiten cada 40 a 50 veces por segundo para hacer
que el servo mantenga la posicin indicada.
La Figura 4-2 muestra un dibujo del Servo Normalizado de Parallax. El conector se usa
para conectar el servo a la alimentacin (Vdd y Vss) y a la Fuente de Seal (un pin E/S del
BASIC Stamp). El cable (2) tiene tres alambres que van a Vdd, Vss y a la lnea de seal
del conector al servo. La flecha es la parte del servco que se parece a la estrella (3) de
cuatro picos. Cuando est girando el servo, la estrella es la parte mvil que el servo
mantiene en diferentes posiciones. El tornillo de cruz (4) une la estrella con la flecha de
salida del servo. La caja (5) contiene los sensores, el circuito de control, un motor de DC y
engranes. Estas partes trabajan en conjunto para recibir las seales high/low del BASIC
Stamp y las convierte en posiciones que mantiene la estrella del servo.
Figura 4-2
3
Servo Normalizado de
Parallax
(1)Conector
(2)Cable
(3)Estrella
(4)Tornillo de sujecin
del la estrella a la flecha
del servo
(5)Caja
En este captulo, usted programar el BASIC Stamp para mandar seales a un servo que
controla la posicin de la estrella del servo. Al hacer que BASIC Stamp mande seales que
le indiquen al servo que mantenga diferentes posiciones, sus programas tambin pueden
organizar el movimiento del servo. Sus pogramas, incluso, pueden monitorear botnes
push y usar la informacin para conocer que botones push estn presionados y ajustar la
posicin que el servo mantiene (control de posicin servo de botones push). El BASIC
Stamp tambin puede programarse para recibir mensajes que usted teclea en la Terminal
Debug y usar esos mensajes para controlar la posicin del servo (control de posicin servo
de la terminal).
Pgina 96 Qu es un Microcontrolador?
Estas instrucciones se usan en todas las revisiones de puerto USB as como tambin en la
revisiones C o ms recientes de puerto Serie.
9 Apague la fuente como lo muestra la Figura 4-3
Reset
Figura 4-3
Desconecte la fuente.
Ponga en 0 el interruptor de 3
posiciones.
La Figura 4-4 muestra el conector del servo en la Tablilla. Aqu es donde usted conecta el
servo. Esta Tablilla tiene un jumper que usted puede usar para conectar la fuente de
alimentacin del servo ya sea Vin o Vdd. El jumper es una pieza rectangular egra
removible que indica la flecha entre los dos conectores del servo.
9 Verifique el jumper se conecta a Vdd como lo muestra la Figura 4-4. Si ste se fija
en Vin, jale el jumper rectangular de los pines donde est colocado y entonces
presionelo sobre los dos pines ms cercanos a la etiqueta Vdd.
15 14 Vdd 13 12
Red
Black
X4
Figura 4-4
Jumper del Conector Servo
conectado a Vdd
X5
Vin
Pgina 98 Qu es un Microcontrolador?
P14
470
Figura 4-5
Esquemtico
del
Servo
y
LED
indicador de la
Tablilla.
LED
Vss
Vdd
White
P14
Red
Servo
Black
Se utiliza en
Tablillas con puerto
serie revisin C o
ms recientes, o
con cualquier
versin de Tablilla
con puerto USB.
Vss
15 14 Vdd 13 12
White
Red
Black
Red
Black
X4
Vdd
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
X5
Vin
Vss
Figura 4-6
Servo e indicador
LED de la Tablilla de
Educacin
standard servo
www.parallax.com
Figura 4-7
Alimentacin a la Tablilla del
Conector del Servo.
Reset
En este captulo cuando vea las instruccin Energic su Tablilla mueva a la posicion 2 el
interruptor de 3 posiciones. De igual forma cuando vea las instruccines Desconecte la
Alimentacin de su Tablilla mueva a la posicin 0 el interruptor de 3 posiciones.
9 Desconecte la Alimentacin de su Tablilla.
9 Vaya a la Actividad #2 en la pgina 101.
Circuito Servo de la Tablilla BASIC Stamp
Figura 4-8
Parte extra de 3 pines macho/macho
de la tablilla BASIC Stamp.
La Figura 4-9 muestra el esquemtico de los circuitos servo y LED en su Tablilla BASIC
Stamp. Las instruccines que siguen despus de la figura le mostrarn como construir con
seguridad este circuito.
9 Desconecte la batera de 9 V de su Tablilla.
9 Construya el indicador LED y el circuito conector del servo mostrado por el
esquemtico de la Figura 4-9 y el diagrama de alambrado de la Figura 4-10.
P14
470
LED
Vss
Figura 4-9
Esquemtico del servo y
LED indicador en la
Tablilla.
Vdd
P14
White
Red
Servo
Black
Vss
Figura 4-10
Circuitos del LED
indicador y conector
servo en la Tablilla.
Cuidado
Solamente use una batera de 9V cuando el Servo Normalizado de Parallax est conectado
a la Tablilla BASIC Stamp. No use ningn tipo de Fuente de Alimentacin o Eliminador de
Baterias que se alimente al contacto de AC.
Para mejores resultados, asegurese que su bateria est nueva. Si est usando una batera
recargable asegurese que est bien cargada. Debe tener una capacidad de energa de
100mAh (miliamperes por hora) o mayor.
Figura 4-11
El servo conectado a la
Tablilla.
Figura 4-12
Ejemplo de
mediciones de
variosngulos.
El Servo Normalizado de Parallax puede hacer que la estrella fije posiciones dentro de un
rango de 180 grados, as la medida de un grado puede ser til para describir las posiciones
que mantiene el servo. La Figura 4-13 muestra ejemplos de un servo con un trozo de
alambre que est sujeto con dos hoyos de su estrella y un doblez. La direccin del alambre
muestra el ngulo de la estrella del servo y la figura muestra ejemplos de 0, 45, 90, 135 y
180 grados.
Figura 4-13 Ejemplos de posiciones de la estrella del servo.
Your servo horns range of motion and mechanical limits will probably be different from whats
shown here. Instructions on how to adjust it to match this figure come after the first example
program.
En la fbrica, el montaje de la estrella del servo se hace al azar, entonces las posiciones de
su servo probablemente sean diferentes a las que muestra la Figura 4-13. En la prctica, la
estrella de su servo pudiera estr montada en un rango de +/- 45 grados. El servo de la
Figura 4-14 muestra un ejemplode un servo cuya estrella se mont 20 grados en sentido de
la manecillas del reloj respecto a la Figura 4-13.
Despus de que usted encuentre el centro el rango de movimiento de la estrella de su servo
usted puede usarlo como una referencia de 90 grados o ajustar la estrella mecnicamente
para que coincida con el de la Figura 4-13 siguiente las instrucciones posteriores de esta
actividad.
Figura 4-14 Ejemplos de posicin de la estrella del servo antes de los ajustes mecnicos.
Este es un ejemplo de una estrella montada en la flecha de salida del servo cerca de 20
grados en sentido invervso de las manecillas del reloj con referencia a la Figura 4-13.
Usted puede encontrar el centro del rango de movimiento del servo girando con precaucin
la estrella para encontrar sus lmites mecnicos en sentido directo e inverso de las
manecillas del reloj. La posicin media entre estos dos lmites es el centro o posicin de 90
grados. La posicin del centro del servo pudiera estar en cualquier lugar de la regin
mostrada en la figura 4-15.
El centro del rango de movimiento de la estrella de su
servo pudiera estar en esta regin.
Figura 4-15
Rango de posiciones
posibles del centro.
En los siguientes pasos gire la estrella del servo lentamente no la fuerce! El servo
tiene lmites mecnicos interconstruidos para prevenir que la estrella gire fuera del rango de
movimiento de 180 grados. Gire suavemente la estrella y tenga la sensibilidad de sentir
cuando llega a unos de sus lmites mecnicos. No trate de forzarla ms all de esos lmites
porque podra daar los engranes internos del servo.
El diagrama de tiempos muestra que las seales high duran 1.5 ms separadas por seales
low que duran 20 ms. Los puntos ...a la derecha de las seales es una forma de indicar que
las seales high de 1.5 ms y las seales low de 20 ms una y otra y otra vez para mantener la
posicin del servo. El smbolo 20ms indican que el tiempo low puede tener un valor
aproximado, y que realmente puede variar unos pocos milisegundos arriba y abajo del
valor de 20 ms con el siguiente para no afectar la posicin de la estrella del servo. Esto se
debe a que la cantidad de tiempo de la seal high dura hasta que le dice al servo que
posicin conservar, y esto tiene que ser preciso.
Hay una instruccin especial llamada PULSOUT que da un control preciso a su programa
sobre la duracin de las seales high muy breves, a las que se les llama comunmente
pulsos.
Esta es la sintaxis de la instruccin PULSOUT:
PULSOUT Pin Duration.
Con la instruccin PULSOUT usted puede escribir el cdigo en PBASIC para hacer que
BASIC Stamp fije la posicin del servo en 90 grados usando como gua el diagrama de
tiempos. El argumento Pin de la instruccin PULSOUT tiene que ser un nmero que le
indica al BASIC Stamp que pin de E/S deber transmitir el pulso. El argumento Duration
de la instruccin PULSOUT que vale 2 millonsimas de segundo representa los
incrementos de tiempo del pulso. 2 millonsimas de segundo es igual a 2 microsegundos y
se abrevia 2us.
Una millonsima de segundo se llama microsegundo. La letra Griega se usa en lugar
de la palabra micro y la letra s se usa en lugar de segundo. Esto facilita escribir y tomar
notas, porque en lugar de escribir 2 microsegundos, usted puede escribir 2 s.
Recordatorio: Una milsima de segundo se llama milisengundo y se abrevia ms.
Equivalencias: 1ms = 1000 s. En otras palabras, usted puede meter mil millonesimas de
segundo dentro de una milsima de segundo.
Ahora que sabe como usar la instruccin PULSOUT, el programa ServoCenter.bs2 manda
pulsos de contro repetidamente para hace que el servo mantenga la posicin de 90 grados.
La instruccin PULSE 14, 750 mandar un pulso de 1.5 ms al servo. Hace esto porque el
argumento Duration de la instruccin PULSOUT especifica el nmero de 2us de duracin
del pulso. Como el argumento Duration vale 720, la instruccin PULSOUT har que el
pulso dure 750x2us = 1500 us = 1.5 ms ya que hay 1000 us en 1 ms. Despus que termina
el pulso high la instruccin PULSOUT hace que el pin E/S ahora mande seales bajas.
Entonces, la instruccin PAUSE 20 que sigue del PULSOUT hace que el BASIC Stamp
mande seales low durante 20 ms.
Con las dos instrucciones dentro del bucle DO...LOOP el high de1.5 ms seguido por el low
de 20 ms se repetiran una y otra y otra vez haciendo que el servo mantenga su posicin
Programa Ejemplo; ServoCenter.bs2
' Que es un Microcontrolador? - ServoCenter.bs2
' Mantiene el Servo en su posicion central de 90 grados.
' {$STAMP BS2}
' {$PBASIC 2.5}
DEBUG "Program Running!", CR
DO
PULSOUT 14, 750
PAUSE 20
LOOP
La posicin del Servo en 90 grados se llama posicin central porque el punto de 90 grados
est en el centro del rango de movimiento de 180 grados. Los pulsos de 1.5 ms hacen que
el servo mantenga la estrella en su posicin central, la cual deber estar cerca del punto
medio que usted determin al fijar los lmites mecnicos del servo. Usted puede usar la
posicin del centro para mantener al servo como la referencia de 90 grados, o usar un
desarmador para quitar y reposicionar la estrella para que el alambre sujeto a la estrella
apunte hacia arriba. Las instrucciones de ajuste estn en la seccin titulada: Opcional:
Ajuste Central de 90 grados de la estrella del servo. Si usted usa la posicin del centro, sin
ajustarlo, como una referencia cualquier otra posicin del servo est respecto a la posicin
de 90 grados. Por ejemplo, la posicin de 45 grados debera ser 1/8 de una vuelta en
sentido de las manecillas del reloj, y la posicin de 135 grados debera ser 1/8 de vuelta en
sentido inverso de la manecillas del reloj. Estos ejemplos se mostraron en la Figura 4-14.
Vamos a encontrar cual es la verdadera posicin central de la estrella de su servo:
9 Gire suavemente la estrella del servo a uno de sus lmites mecnicos.
9 Aplique alimentacin a su Tablilla. Si tiene una Tablilla Board of Education,
asegurese que el interruptor de 3 posiciones est en la posicin 2.
9 Corra el programa ServoCenter.bs2.
Tan pronto como est el programa cargado la estrella del servo deber girar a su posicin
central y ah permanecer. El servo mantiene esta posicin porque los servos
normalizados estn diseados para resistir fuerzas externas que los empujen. Es por esto
que el servo mantiene en esa poscin el volante de los carros RC, el timn de los barcos o
los alerones del avin.
9 Anote la posicin central de su servo.
9 Suavemente aplique un giro a la estrella como cuando lo hizo para encontra sus
lmites mecnicos. El servo debe reaccionar y mantener la estrella en la posicin
central.
Si desconecta la energa, usted puede girar el servo afuera de su posicin central. Cuando
usted conecta la energa, el programa se reinicia y el servo mover inmediatamente la
estrella a la posicin central y ah la mantendr.
9 Intntelo!
Opcional Ajuste de la estrella del servo en el centro de 90 grados
Como opcin usted puede ajustar la estrella del servo para hacer que el alambre de la
estrella apunte hacia arriba cuando se est ejecutando el programa ServoCenter.bs2 como
lo muestra el lado derecho del Figura 4-17. Si usted hace este ajuste mecnico, esto
simplificar los ajustes de los ngulos del servo porque cada ngulo se parecer a los de la
Figura 4-13.
Usted necesitar un Desarmador de Cruz # 2 para este ajuste opcional.
Output
shaft
Phillips
Screw
Figura 4-17
Centrado mecnico
del Servo
Usted puede
remover y
reposicionar la
estrella de la flecha
de salida del servo
con un pequeo
desarmador.
Horn
La Figura 4-18 muestra unas pocas instrucciones PULSOUT que le indican al servo mantener
ciertas posiciones importantes como 0, 45, 90, 135 y 180 grados. Las instrucciones
PULSOUT son aproximadas.
Y usted podra tener que ajustar los valores ligeramente para obtener posiciones angulares
ms precisas. Usted puede modificar el argumento Duration de las instrucciones
PULSOUT para mantener cualquier posicin de este rango. Por ejemplo, si usted desea
mantener la posicin de 30 grados, el argumento Duration de las instrucciones PULSOUT
deber ser 417, este valor es 2/3 del valor de los argumentos Duration entre 250 ( 0 grados)
y 500 (45 grados).
Los tiempos de los pulsos de la Figura 4-18 posicionarn la estrella del servo muy
cerca de los ngulos mostrados pero estas no son necesariamente exactas. Usted
puede experimentar con diferentes valores de Duration de PULSOUT para tener
posiciones ms precisas.
Figura 4-18: Posiciones de Estrella del Servo, Instrucciones PULSOUT y Duracin del Pulso
en ms.
Resolviendo la Ecuacin
La razn por la que tenemos que multiplicar el nmero de milisegundos de un pulso por
500 se obtiene del argumento PULSOUT Duration poque Duration est en trminos de
unidades de 2 us en la BS2. Cuntas unidades de 2 hay e1 ms? Para saberlo solamente
divida 2 millonsimas en 1 milsimas.
1
2
= 500
1,000 1,000 ,000
Si la instruccin es PULSOUT 14, 500, el pulso durar 500 x 2us = 1000 us = 1.0 ms.
(Recuerde: 1000 us = 1 ms)
Usted puede calcular Duration de una instruccin PULSOUT desconocida usando esta
ecuacin:
Nmero de ms = Duracin / 500 ms
Por ejemplo, si usted ve la instrucion PULSOUT 14, 850, cunto dura verdaderamente ese
pulso?
Nmero de ms = 850 / 500 ms = 1.7 ms
Escriba el Cdigo a partir de los Diagramas de Tiempo
La Figura 4-19 muestra los diagramas de la seal que el BASIC Stamp manda al Servo
para que su estrella mantenga una posicin de 135 grados. Como el diagrama de tiempo
muestra pulsos repetidos separados por seales low de 20 ms, el bucle DO...LOOP del
programa ServoCenter.bs2 proporciona un buen punto de inicio y todo lo que se necesita
es ajustar la duracin de los pulsos high. Para calcular el argumento Duration de la
instruccin PULSOUT para los pulsos de 2 ms en el diagrama de tiempos, usted puede
usar la ecuacion Duration de la Seccin Resolviendo la Ecuacin.
Duracin = nmero de milisegundos x 500
= 2 x 500 = 1000
Figura 4-20
Diagramas
Tiempo
para
posicin
de
grados
de
la
45
Son pulsos de 1 ms
separados por 20
ms
Figura 4-21
Mano Animatrnica
Hay cinco servos en la parte inferior
derecha de la imagen que jalan los
cables de frenado y se comunican
con los dedos para hacerlos flexibles.
El BASIC Stamp proporciona el
control de cada dedo.
Bucles FOR...NEXT para controlar el Tiempo del Servo que Mantiene una
Posicin
Si usted escribe el cdigo para hace que un LED parpadee una vez por segundo, usted
puede anidar el cdigo en un bulce FOR...NEXT para que repita tres veces el parpadeo por
tres segundo. Si su LED parpadea cinco veces por segundo, usted tiene que hacer que
bucle FOR...NEXT se repita quince veces para obtener el parpadeo del LED por tres
segundos. Como las instrucciones PULSOUT y PULSE que controlan su servo son
responsables de mandar seales high/low estas tambin hacen que el LED parpadee. Las
seales que mandamos a los servos en la actividad anterior hacen que el LED se ilumine
poco, quiz con un aparente parpadeo, esto se debe porque las seales high/low son muy
rpidas y los tiempos en high son muy breves. Reduzcamos la velocidad de las seales en
1/10 y veremos que el LED parpadea.
Programa Ejemplo. SlowServoSignalForLed.bs2
Comparado con el servo de seal centrada, este programa ejemplo incrementa la duracin
de PULSOUT y PAUSE por un factor de 10 para que puedamos ver la seal con un LED
indicador que parpadea. El bucle FORNEXT del programa se repite casi 5 veces por
segundo, haciendo que 15 repeticiones hacen que el LED parpadee por tres segundos.
9 Desconecte la alimentacin de su servo:
9
9
9
9
9
VAR
Word
FOR counter = 1 to 15
PULSOUT 14, 7500
PAUSE 200
NEXT
Si usted cambia PULSOUT 14, 7500 a PULSOUT 14, 750 y PAUSE 200 a PAUSE 20,
tendr usted un bucle FOR...NEXT que manda brevemente la seal de posicin central al
servo. Como ahora la seales durarn 1/10 de las duraciones del programa
SlowServoSignalsForLed.bs2 todo el bucle FOR...NEXT tomar 1/10 de tiempo en
ejecutarse. Si el objetivo es hacer que el servo mantenga una posicin particular durante
tres segundos simplemente proporciona diez veces ms pulso al incrementarse el
argumento de 15 a 50 EndValue del bucle FOR...NEXT.
apaga el LED sabemos que ya no se envian seales de control, el servo deja de mantener su
posicin y ahora usted puede girar la estrella.
9 Cuando se detiene la seal de 135 grados, verifique que el LED muestra que las
seales estn detenidas y que el servo le permite girar la estrella afuera de la
posicin de 135 grados.
' Que es un Microcontolador ThreeServoPositions.bs2
' El Servo mantiene las posiciones 45, 90, and 135 degree durante 3 seconds cada
una.
' {$STAMP BS2}
' {$PBASIC 2.5}
counter
VAR
Word
PAUSE 1000
DEBUG "Posicion = 45 grados...", CR
FOR counter = 1 TO 150
PULSOUT 14, 500
PAUSE 20
NEXT
que el servo slo mantenga su posicin durante dos segundos, cambie el argumento
EndValue de 150 a 100. Para cinco segundos cambielo de 150 a 250, y as sucesivamente...
9 Haga una copia del programa ThreServoPositions.bs2
9 Modifique el argumenteo EndValue del bucle FOR...NEXT y experimente con
diferentes valores para diferentes tiempos de retencin.
9 Opcional: Particularice las posiciones de retencin ajustando el argumento
Duration de la instruccin PULSOUT.
Tiempo de Repeticin del Bucle FOR...NEXT Verdaderamente es 1/44 de
segundo no un 1/50
Los valores largos o cortos de PULSOUT Duration hacen que el bucle FOR...NEXT tome
un poco ms o menos tiempo para repetirse. El PULSOUT Duration de 750 est en la
mitad del rango de duracin de los pulsos de control del servo que muestra la Figura 4-18.
Entonces usted puede usar 44 en su cdigo como referencia para el nmero de los pulsos
del servo en un segundo. Si usted necesita mayor precisin repita las ecuaciones de la
instruccin PULSOUT que est utilizando. Por ejemplo, si el bucle tiene una instruccin
PULSOUT con Duration de 1000 en lugar de 750, al pulso dura 2ms en lugar de 1.5 ms. El
bucle todava tiene una pausa de 20 ms y 1.3 ms de tiempo de proceso. Entonces la suma
es 2 + 20 + 1.3 = 23.3 ms. Dividimos 1 s entre este nmero para encontra la razn del
bucle FOR...NEXT y obtenemos 1/0,023 = 42.9 = 43 Hz.
Resumen de Contro del Bucle FOR...NEXT del Servo
La Figura 4-23 detalla la funcin de cada nmero del bucle FOR...NEXT del control del
servo. El EndValue del bucle FOR...NEXT determina el nmero de 1/44 de segundo en
que el servo mantiene una posicin. El valor 750 manda un pulso de 1.5 ms que instruye al
servo que mantenga una posicin de 90 grados de acuerdo con la Figura 4-18. El
argumento pin de la instruccin PULSOUT escoge el pin de E/S para mandar las seales
de control al servo. Entonces, 14 hace que la instruccin PULSOUT mande una seal high
breve (pulso) al servo conectado en la terminal pin P14. Cuando se termina el pulso ahora
el pin manda una seal low. Entonces, la instruccin PAUSE 20 asegur quela seal low
dure aproximadamente 20 ms antes del siguiente pulso.
Number of 44ths of a
second to hold the
position
Figura 4-23
Control del Servo
Del Bucle
For...Next
Required 20 ms
between each pulse
En promedio un bucle FOR...NEXT que manda una sola instruccin PULSOUT al servo
seguida por una PAUSE 20, se repite 44 veces por segundo. Y como el bucle se repite 132
veces, hace que el servo mantenga la posicin 135 grados durante 3 segundos. Esto se debe
a que:
132 repeticiones entre 44 repeticiones/segundo = 3 segundos
Si su aplicacin o proyecto necesita que el BASIC Stamp manda una seal servo para
determinado nmero de segundo, solamente multiplique el nmero de segundo por 44 y
use el resultado en el argumento EndValue del bucle FOR...NEXT. Por ejemplo, si su
seal necesita que dure cinco segundos:
5 segundo x 44 repeticiones/segundo = 220 repeticiones
Figura 4-24
Mandando Mensajes a el
BASIC Stamp
Haga click en el cuadro de la
esquina superior izquierda y
escriba su mensaje. Una
copia del mensaje que
escribi aparece en la
ventana inferior. A esta
copia se le llama ECO.
En esta actividad, usted programar el BASIC Stamp para recibir dos valores de la
Terminal Debug, y usar estos valores para controlar el servo.
1. El nmero de pulsos a enviar al servo.
2. El valor de Duration que usa la instruccin PULSOUT.
Tambin programar el BASIC Stamp usando estos valor para controlar el servo.
Partes y Circuito
La programacin del BASIC Stamp para que mande mensajes a la Terminal Debug se
usando la Instruccin DEBUG. La programacin del BASIC Stamp para que reciba
mensajes de la Terminal Debug se hace usando la Instruccin DEBUGIN. Al usar
DEBUGIN, tambin puede declarar una o ms variables para que el BASIC Stamp
almacene la informacin que recibe.
Este es un ejemplo de una variable que usted puede declarar para que el BASIC Stamp
almacene un valor
Pulses VAR Word
Posteriormente en el programa, usted usar esta variable para almacenar un nmero que
recibe de la instruccin DEBUGIN.
DEBUGIN DEC pulses
La Figura 4-25 muestra la localizacin de las ventanas de la Terminal Debug junto con la
Ventana de Recepcin. La Ventana de Recepcin es la que hemos estado usando para
mostrar los Mensajes que recibe la Terminal Debug del BASIC Stamp.
La Ventana de Transmisin le permite a usted escribir los caracteres y nmeros y
transmitirlos a el BASIC Stamp.
Figura 4-25
Ventanas de la Terminal Debug
Ventana de Transmisin
VAR
VAR
VAR
Word
Word
Word
PAUSE 1000
DEBUG CLS, "Tiempo de ejecucin del Servo: ", CR,
" ~44 pulsos en 1 segundo", CR,
Var
Var
Var
WORD
WORD
WORD
Se declara la variable counter porque la usa el bucle FORNEXT. (Para detalles, vea
Captulo 2, Actividad 3). Las variables pulses y duration se usan para un par de
actividades. Ambas se usan para recibir y almacenar valores que manda la Terminal
Debug. La variable pulses tambin se usa para fijar el nmero de repeticiones en el bucle
FOR...NEXT que proporciona pulsos al servo, y la variables duration se usa para fijar la
duracin de cada pulso de la instruccin PULSOUT.
La instruccin DEBUG proporciona un recordatorio que hay cerca de 44 pulos en 1
segundo en el bucle FOR...NEXT, y el argumento de PULSOUT Duration que controla la
posicin del servo puede valer entre 350 y 1150.
DEBUG CLS, "Tiempo de Ejecucin del Servo :", CR,
La instruccin DEBUG se usa para mandar su (el usuario del software) mensaje para
meter el nmero de pulso. Entonces, la instruccin DEBUGIN espera que usted meta los
dgitos que forman el nmero y que presione la tecla Enter de su teclado. Los digitos
que usted metin se convierten en un valor que almacena la variable pulses. El proceso
se repite con unas segundas instrucciones DEBUG y DEBUGIN que cargan otro valor que
usted tambin mete en la variable duration.
DEBUG "Meta el tiempo de ejecucin como ", CR,
"nmero de pulsos: "
DEBUGIN DEC pulses
DEBUG "Meta la posicin como", CR,
"Duracin de PULSOUT: "
DEBUGIN DEC duration
Despues que ha metido el segundo valor, es til mostrar un mensaje mientras se est
ejecutando el servo para que no intente meter el segundo valor durante este tiempo:
DEBUG El servo est ejecutandose... , CR
Mientras el servo est ejecutandose intente suavemente mover la estrella del servo fuera de
su posicin de retencin. El servo se resiste a esta ligera presin aplicada a la estrella.
For Counter = StartValue hasta EndValue {STEP StepValor} NEXT
Esta es la sintaxis del bucle FORNEXT del Manual BASIC Stamp. Y muestra que usted
necesita un Counter, StartValue y un EndValue para controlar cuantas veces en si mismo
se repite el bucle. Si usted desea agregar un nmero diferente a uno al valor Counter,
tambien hay un StepValue opcional para cada bucle.
Tambin, en los ejemplos anteriores, valores constantes tales como 500, 750 y 1000 se
usaron para el argumento duration de la instruccin PULSOUT. En este bucle, una
variable llamada duration que usted determina metiendo valor en Ventana de
Transmisin de la Terminal Debug, ahora define la duracin del pulso de la instruccin
PULSOUT, y esta a su vez controla la posicin que el servo mantiene.
Tmese su tiempo para
ServoControlWithDebug.bs2.
entender
el
bucle
FOR...NEXT
del
programa
Este es uno de los primeros ejemplos de las cosas maravillosas que usted puede hacer con
argumentos y variables de las instrucciones de PBASIC. Destaca la utilidad de
funcionamiento que un mdulo con microcontrolador programable como el BASIC Stamp
puede realizar.
Imaginemos que este sistemade control servo computarizado se ha desarrollado para que
trabaje a control remoto. Quiz un guardia de seguridad lo usar para abrir una puerta que
l o ella observa con una cmara remota. Quiz un colega estudiante lo usar para controlar
puertas de una red de pasajes confusos de ratones que buscan alimento. Quiz un caonero
militar lo us para apuntar el can a un objetivo particular. Si usted est diseando el
producto para alguien ms lo use, la ltima cosa que usted desea darle al usuario (guardia
de seguridad, colega estudiante, caonero militar) es la posibilidad que meta nmeros
erroneos que puedan daar el equipo.
Mientras ejecuta el programa ServoControlWithDebug.bs2, es posible hacer un error
mientras escribe el valor de duration en la Terminal Debug. Digamos que accidentalmente
usted escribe 100 en lugar de 1000 y presiona Enter. El valor 100 provocara que el
servo trate de girar a una posicin ms all de sus lmites mecnicos. Aunque esto no daa
instantneamente el servo, esto no beneficia la vida til del servo. Entonces el programa
tiene una lnea que previene este error que puede causar dao:
duration = duration MIN 350 MAX 1150
9 Guarde el programa
9 Ejecute el programa y verifique que se repite hasta que usted mete un valor
correcto en el rango 350 a 1150.
Usted puede usar un bucle FOR...NEXT para hacer que el servo haga un barrido a travs
de un rango de movimiento como esto:
FOR counter = 500 TO 1000
PULSOUT 14, counter
PAUSE 20
NEXT
El bucle FOR...NEXT hace que la estrella del servo empiece en 45 grados y luego gire
lentamente en sentido inverso de las manecillas del reloj hasta que llegue a 135 grados.
Debido a que counter es el ndice del bucle FOR...NEXT el counter se incrementa una
unidad cada vez que se ejecuta el bucle. El valor de counter tambin se usa en el
argumento duration de la instruccin PULSOUT, lo que significa que la duracin de
cada pulso se hace un poquito ms grande cada vez que se ejecuta el bucle. Como cambia
la variable counter tambin lo hace la posicin de la estrella del servo.
Los bucles FOR...NEXT tienen un argumento opcional: StepValue de STEP. El argumento
StepValue puede usarse para que el servo gire ms rpido. Por ejemplo, usted puede usar el
argumento StepValue para agragar 8 cada vez que el bucle se ejecuta (en lugar de 1)
modificando la frase FOR de la siguiene manera:
FOR counter = 500 to 1000 STEP 8
Usted tambin puede hacer que el servo gire en la direccin contraria contando en forma
descendente en lugar de ascendente. En PBASIC, los bucles FOR...NEXT contarn en
forma inversa si el argumento StarValue es mayor que el argumento EndValue. Este es un
ejemplo para hacer que el bucle FOR...NEXT cuente de 1000 hacia 500.
FOR counter = 1000 to 500
Usted puede combinar el conteo descendente con un argumento StepValue para hacer que
el servo gire ms rpidamente en la direccin de las manecillas del reloj de la siguiente
manera:
FOR counter = 1000 TO 500 STEP 20
El truco para hacer que el servo gire a diferentes velocidades es haciendo que los bucles
FORNEXT cuenten en forma ascendente y descendente con diferentes tamaos de
escaln. El siguiente programa usa estas tcnicas para hacer que la estrella del servo gire
hacia delante y atrs a diferentes velocidades.
Programa Ejemplo: ServoVelocities.bs2
VAR
Word
PAUSE 1000
DO
DEBUG "El ancho del Pulso se incrementa por 8", CR
FOR counter = 500 TO 1000 STEP 8
PULSOUT 14, counter
PAUSE 7
DEBUG DEC5 counter, CR, CRSRUP
NEXT
El segundo bucle FOR...NEXT cuenta en forma descendente de 1000 a 500 en pasos de 20.
La variable counter tambin se usa en este ejemplo como un argumento para la
instruccin PULSOUT, entonces la estrella del servo gira en sentido de las manecillas del
reloj.
FOR counter = 1000 TO 500 STEP 20
PULSOUT 14, counter
PAUSE 7
DEBUG DEC5 counter, CR, CRSRUP
NEXT
9 Use diferentes valores STEP para hacer que el servo gire a diferentes velocidades.
9 Y ejecute el programa despues de cada modificacin.
9 Observe el efecto de cada nuevo valor de StepValue y vea que tan rpido gira la
estrella del servo
9 Experimente con diferentes valores (entre 3 y12) de Duration de la instruccin
PAUSE para encontrar el valor que de al servo el movimiento ms suave para
cada nuevo valor de StepValue.
Cuando lo haya hecho, usted ser capaz de mantener presionado un botn push para hacer
que el BASIC Stamp gire el servo en una direccin, y mantener presionado el otro botn
para que el servo gire en direccin contraria. Cuando los botones push no estn
presionados el servo mantendr la ltima posicin en que se movi.
Partes extra para los botones push que controlan el servo
En esta actividad usar las mismas partes de las actividades anteriores. Adems usted
necesitara juntar las siguientes partes para el circuito de los botones push:
Dos Botones push normalmente abiertos
Dos Resistores de 10 K (caf-negor-naranja)
Dos Resistor de 220 (rojo-rojo-caf)
Tres alambres para puentes.
Juntando los Botones push del Circuito de Control
La Figura 4-26 muestra el circuito de los botones push que usar para controlar el servo.
9 Agregue este circuito a los circuitos servo y LED que ha estado usando hasta este
punto. Cuando lo haya hecho su circuito: se parecer a:
Vdd
P4
Vdd
Figura 4-26
Circuitos Botones
push para
Control del Servo
220
P3
220
10 k
Vss
10 k
Vss
15 14 Vdd 13 12
White
Red
Black
Figura 4-27
Circuitos Servo y
Botones push
agregrados a la
Tablilla Board of
Education
Red
Black
X4
Vdd
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
X5
Vin
Vss
standard servo
www.parallax.com
Tablilla Board of
Education puerto
Serie Rev C o
ms reciente o
puerto USB
cualquier
revisin.
Figura 4-28
Circuitos Servo y
Botones push
agregrados a la
Tablilla.
HomeWorkBoard.
Tablilla
HomeWork Rev
C o ms reciente.
9 Verifique los botones push conectados al pin P3 usando la versin original del
programa ReadPushbuttonState.bs2. La seccin que tiene este programa y las
instrucciones de su uso comienzan en la pagina 67.
9 Modifique el programa para que ahora lea por el pin P4.
9 Ejecute el programa modificado para verificar que el botn push est conectado en
el pin P4.
Programando el Control del servo con botones push
Se pueden usar los bloques de cdigo de IF...THEN para verificar los estados de los botoes
push para sumarlos o restarlos de una variable de nombre duration. Esta variable se usa
en el argumento duration de la instruccin PULSOUT. Si se presiona uno de los botones
push, se incrementa el valor de duration. Si se presiona el otro botn push, disminuye el
valor de duration. Se usa un bucle anidado de IF...THEN para decidir si la variable
duration es muy grande (mayor que 1000) o es muy pequea (menor que 500).
Programa Ejemplo: ServoControlWithPushbuttons.bs2
Este programa ejemplo hace que la estrella del servo gire en sentido inverso a las
manecillas del reloj cuando se presiona el botn push conectado al pin P4. La estrella del
servo seguir girando hasta que se libere el botn push y el valor de duracin sea menor
que 100.
Cuando se presiona el botn push conectado al pin P3, la estrella del servo gira en sentido
de las manecillas del reloj. El servo tambin est limitado en su movimiento en sentido de
la manecillas del reloj porque a la variable duration no le est permitido ir ms debajo de
500. La Terminal Debug muestra el valor de duration cuando se est ejecutando el
programa.
9 Meta el programa: ServoControlWithPushbuttons.bs2 en el Editor de BASIC
Stamp y ejectelo.
9 Verifique que el servo gira en sentido inverso a las manecillas del reloj cuando
mantiene presionado el botn push conectado al pin P4.
9 Verifique que el servo gira en sentido de las manecillas del reloj cuando mantiene
presionado el botn push conectado al pin P3.
9 Verifique que tan pronto se alcanza el lmite de duration<500 o lo excede el servo
deja de girar en la direccin de la manecillas del reloj.
'
'
'
'
'
'
duration
VAR
duration = 750
PAUSE 1000
Word
DO
IF IN3 = 1 THEN
IF duration > 500 THEN
duration = duration - 25
ENDIF
ENDIF
IF IN4 = 1 THEN
IF duration < 1000 THEN
duration = duration + 25
ENDIF
ENDIF
PULSOUT 14, duration
PAUSE 10
DEBUG HOME, DEC4 duration, " = duration"
LOOP
Los limitadores mecnicos previenen que el servo gire ms all de 0 y 180 grados, que
corresponde a argumentos de PULSOUT Duration en la vecindad de 250 y 1250. El
programa ServoControlWithPushbuttons.bs2 tambin tiene lmites por software, definidos
por las instrucciones IF...THEN que previenen que usted use un botn push para que el
servo gire ms all de cierto punto. En contraste con los limitadores mecnicos, los lmites
del software son muy fcil de ajustar. Por ejemplo, usted puede hacer que el botn push
controle el servo en un rango muy amplio de movimiento simplemente reemplazando cada
ejemplo de 500 por 350 y los 1000 por 1150. Tambin puede usted darle al servo un rango
de movimiento ms angosto reemplazando los ejemplos de 500 con 650 y los de 1000 con
850. Los lmites por software incluso, no necesitan ser simtricos. Por ejemplo, usted
podra cambiar los limites por software del rango 500-1000 por el rango de 350 a 750.
9 Experimente con diferentes limites de servo por software, incluyendo 350 a 1150,
650 a 850 y 350 a 750.
9 Verifique cada conjunto de limites por software para asegurarse que se comportan
como usted lo espera.
Tambin usted puede cambiar la velocidad de giro del servo mientras mantiene presionado
un botn push. Por ejemplo, si usted cambia los dos valores de 25 del programa por 50, el
servo responder dos veces m rpido. Alternadamente, usted podra cambiarlos a 30 para
hacer que el servo responde un poquito ms rpido, o a 20 para que responda lentamente o
a 10 para que responda muy lentamente.
9 Intntelo!
RESUMEN
Este captulo introdujo el movimiento microcontrolado usando un Servo Normalizado de
Parallax. Un servo es un dispositivo que se mueve para mantener una posicin particular
basado en las seales electrnicas que recibe. Estas seales toman la forma de pulos que
duran entre 0.5 y 2.5 ms, y que se mandan aproximadamente cada 20 ms al servo para
mantener su posicin.
El programador puede usar la instruccin PULSOUT para hacer que el BASIC Stamp
mande estas seales . Como los pulsos tienen que mandarse cada 20 ms para que el servo
mantenga su posicin las instrucciones PULSOUT y PAUSE generalmente se colocan en
alguna parte del bucle. Las variables o constantes pueden usarse para determinar tanto el
1. Cules son las cinco partes externas de un servo? Para que se usan?
2. Se requiere un circuito LED para un servo funcione?
3. Qu instruccin control el tiempo low de la seal que se manda al servo? Qu
instruccin controla el tiempo high?
4. Qu elemento de programacin puede usted usar para controlar la cantidad de
tiempo que el servo usa par manteer una posicin particular?
5. Cmo usa usted la Terminal Debug para mandar mensajes a el BASIC Stamp?
6. Qu tipo de bloque de Cdigos puede usted escribir para limitar el rango de
movimiento del servo?
Ejercicios
700 TO 800
counter
800 TO 700
counter
FOR pulses = 1 TO 10
PULSOUT 14, counter
PAUSE 20
NEXT
NEXT
", CR ,CRSRUP
Abajo presentamos una versin que incluso puede detectar un botn presionado y
que manda seales al servo. Esto es importante en maquinaria que se necesitan
counter
pulses
duration
VAR
VAR
VAR
Word
Word
Word
PAUSE 1000
DEBUG "Presione el Interruptor de Inicio P4)para arrancar maquinaria."
DEBUG CR
DO:LOOP UNTIL IN4 = 1
DEBUG "Presione el Interruptor Supresor (P3) para detener maquinaria."
DEBUG CR
DEBUG CR, CR, "Tiempo de Ejecucin del Servo:", CR,
" ~44 pulsos en 1 segundo", CR,
"Posicin del Servo:", CR,
" 350 <= PULSOUT Duration <= 1150", CR, CR
DO
IF IN3 = 1 THEN
DEBUG "Presione el Interruptor de Inicio (P4) .", CR
DO:LOOP UNTIL IN4 = 1
DEBUG "Presione el Interruptor Supresor (P3) para detener "
DEBUG "maquinaria.", CR
ENDIF
DEBUG "Meta el tiempo de Ejecucion como", CR,
"numero de pulsos: "
DEBUGIN DEC pulses
DEBUG "Meta la posicin como", CR,
"Duracin del PULSOUT : "
DEBUGIN DEC duration
duration = duration MIN 350 MAX 1150
DEBUG "Servo se est ejecutando...", CR
FOR counter = 1 TO pulses
Figura 5-1
Ajuste de Volumen de
una Bocina.
Figura 5-2
Ejemplo de
Potenciometros.
Figura 5-3
Smbolo esquemtico y dibujo de un
Potenciometro.
La Figura 5-4 muestra como trabaja la terminal central. Conforme usted gira la perilla
superior del potenciometro la terminal central hace contacto con el elemento resistivo en
diferentes lugares. Conforme gira la perilla en sentido de las manecillas del reloj, la
terminal central se acerca a la terminal A, y cuando usted gira la perilla en sentido inverso
a las manecillas del reloj, la terminal central se acerca a la terminal B.
Figura 5-4
Ajustando la terminal central del
potenciometro.
Un potenciometro de 10 K
Un resistor de 220 (rojo-rojo-caf)
Un LED rojo
Un alambre para puente
Construyendo el Circuito de Prueba del Potenciometro.
La Figura 5-5 muestra el circuito que usar para ajustar el brillo del LED con un
potenciometro
9 Construya el circuito que muestra la Figura 5-5..
Sugerencia; Si usted tiene problemas al colocar el potenciometro en los conectores de la
Tablilla, observe sus terminales. Si cada una tiene un pequeo doblez, use unas pinzas de
punta para enderezarlas y luego vuelva a meterlas en la Tablilla. Cuando las terminales del
potenciometro estan derechas pueden mantener mejor contacto con los conectores de la
Tablilla.
Figura 5-5
Circuito de Prueba
Potenciometro-LED
9 Gire el potenciometro en sentido de las manecillas del reloj hasta que llegue a su
lmite mecnico como lo muestra la Figura 5-6(a)
Presione un poco el potenciometro contra la Tablilla mientra gira la perilla. Para estas
actividades el potenciometro necesita estr firmemente colocado en los conectores de la
Tablilla. Si no tiene precaucin cuando gira la perilla el potenciometro se puede
desconectar de los conectores de la tablilla y esto generar mediciones incorrectas.
Entonces, aplique un poco de presin hacia abajo mientras gira la perilla del potenciometro
para que este firmemente colocado en la Tablilla.
Trtelo con cuidado. Si su potenciometro no gira totalmente, no trate de forzarlo. Solo
girelo hasta que alcance su lmite mecanico, sino lo hacer se podra romper.
(a)
(b)
(c)
(d)
(e)
(f)
Figura 5-6
Perilla del
Potenciometro.
Desde (a) hasta (f) se
muestra la terminal
deslizante del
potenciometro ajustada a
diferentes posiciones.
La Figura 5-7 muestra el smbolo esquemtico y el dibujo del tipo de capacitor usado en
esta actividad. El valor de la Capacitancia se mide en microfarads (F) y su valor se
imprime tipicamente en el capacitor.
La forma cilindrica de este capacitor particular se llama pequea caja. Este tipo
capacitor se llama electrolitico capacitor y se debe manejar con cuidado.
9 Lea el recuadro de PRECAUCIN EN LA SIGUENTE PGINA.
Precaucin: El capacitor tiene una terminal positiva (+) y una negativa (-). La terminal
negativa es la que est fija en el cuerpo del capacitor y esta cerca de una raya con un signo
negativo (-). Siempre asegurese que conecta las terminales como lo muestra el diagrama
del circuito. Si conecta este capacitor incorrectamente lo puede daar. En algunos circuitos,
al conectar incorrectamente este tipo de capacitor y luego conectarle la alimentacin hace
que se caliente e incluso explote.
Precaucin: No aplique m voltaje a un capacitor electroltico que el que tiene
especificado. El voltaje que soporta esta impreso en el cuerpo del capacitor.
Precaucin: Se recomienda usar gogles cuando trabaje con este capacitor.
3300
F
3300 F
Figura 5-7
Smbolo esquemtico y dibujo de un
capacitor de 3300 F
Un Capacitor de 3300 F
Un Capacitor de 1000 F
Un Resistor de 220 (rojo-rojo-caf)
Un Resistor de 470 (amarillo-violeta-cafe)
Un Resistor de 1 K (caf-negro-rojo)
Un Resistor de 2 K (rojo-negro-rojo)
Un Resistor de 10 (caf-rojo-naranja)
Construyendo y Verificando el Circuito de Tiempo Resistor-Capacitor
La Figura 5-8 muestra el circuito esquemtico, y la Figura 5-9 muestra el diagrama del
alambrad para esta actividad. Tomaremos mediciones de tiempo usando diferentes
valores del resistor en donde est colocado el resistor de nombre Ri.
3300 F
R1 = 470
R2 = 1 k
R3 = 2 k
R4 = 10 k
Figura 5-8
Esquemtico para
verificar la descarga del
voltaje del circuito RC.
Se usarn cuatro
diferentes resistores en
donde est marcado Rin
Vss
R3
Vdd
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
R2
R1
Vin
Vss
0
33
R4
Figura 5-9
Diagrama de Alambrado
para ver el tiempo de
descarga de un circuito
de tiempo RC.
Asegurese que el lado
negativo del capacitor lo
conecta en su Tablilla de
la misma forma que lo
muestra esta figura, cn la
terminal negativa
conectada a Vss.
Aunque se puede usar un reloj para registrar que la carga del capacitor alcance cierto
nivel, el BASIC Stamp se puede programar para monitorear el circuito y darle usted
mediciones de tiempo ms consistentes.
Programa Ejemplo: PolledRcTimer.bs2
470
1k
2k
10 k
VAR
VAR
Word
Nib
DEBUG CLS
HIGH 7
DEBUG "Capacitor en carga...", CR
FOR counter = 5 TO 0
PAUSE 1000
DEBUG DEC2 counter, CR, CRSRUP
NEXT
DEBUG CR, CR, "Ahora Mida el tiempo de Descarga!", CR, CR
INPUT 7
DO
PAUSE 100
timeCounter = timeCounter + 1
DEBUG ? IN7
DEBUG DEC5 timeCounter, CR, CRSRUP, CRSRUP
LOOP UNTIL IN7 = 0
DEBUG CR, CR, CR, "The RC decay time was ",
DEC timeCounter, CR,
"Decimas de segundo.", CR, CR
END
VAR
VAR
Word
Nib
La instruccin DEBUG CLS limpia la Terminal Debug para que no se amontonen las
mediciones sucesivas. High 7 pone en alto P7 e inicia la carga del capacitor, y entonces
se muestra el mensaje Capacitor Cargando. Despus de eso, el bucle FOR...NEXT hace
un conteo descendente mientras el capacitor se est cargando. Cuando el capacitor se
carga, se incrementa el voltaje a travs de sus terminales desde 3.4 y 4.9 V (depende del
valor de Ri)
DEBUG CLS
HIGH 7
DEBUG "Capacitor Cargando...", CR
FOR counter = 5 TO 0
PAUSE 1000
DEBUG DEC2 counter, CR, CRSRUP
NEXT
Para permitir que el capacitor se descargue a travs del resistor Ri, el pin de E/S cambia
de HIGH a INPUT. Cuando est como entrada el pin E/S no afecta al circuito, pero
pueden sensar seales high o low. Tan pronto como el pin E/S libera el circuito, el
capacitor se descarga y circuila corriente a travs del resistor. Cuando se ha descargado el
capacitor el voltaje a travs de sus terminales se hace menor y menor (se descarga).
INPUT 7
En el captulo anterior del botn push, usted us el BASIC Stamp para detectar una seal
high o low usando las variables IN3 y IN4. En esa ocasin, la seal high era Vdd y
la seal low era Vss. Para el BASIC Stamp verdaderamente la seal high es cualquier
voltaje mayor de 1.4 V. Claro que tambin puede ser 5V. En forma semejante, la seal
low el cualquier voltaje entre 1.4 V y 0V.
El bucle DO...LOOP verifica el pin P7 cada 100 ms hasta que el valor de IN7 cambia de
1 a 0, y esto indica que el voltaje de descarga del capacitor es 1.4 V.
DO
PAUSE 100
timeCounter = timeCounter + 1
DEBUG ? IN7
DEBUG DEC5 timeCounter, CR, CRSRUP, CRSRUP
LOOP UNTIL IN7 = 0
470
1k
2k
10 k
104
0.1 F
0.01 F
103
Figura 5-10
Capacitores de
Cermica
Esquemtico y dibujo
del capacitor de 0.1F
(izquierda) y el de 0.01
F (derecha)
Figura 5-11
Diagrama esquemtico
y alambrado del circuito
de Tiempo RC para el
BASIC Stamp con
potenciometro.
unidas muy finas de medicin, usted puede reducir el tamao del capacitor desde 3300
F hasta 0.1 e iincluso a 0.01 F, y todova obtener mediciones de tiempo que indican el
valor del resistor. Como la resistencias entre las terminales del potenciometro cambina
conforme gira la perilla, la medicin RCTIME le dan a usted mediciones de tiempo que
corresponde a la posicin de la perilla del potenciometro.
Programa Ejemplo: ReadPotWithRcTime.bs2
La Figura 5-12 como interactuan las intrucciones HIGH, PAUSE y RCTIME del
programa ReadPotWithRcTime.bs2 con el circuito de la Figura 5-11.
Figura 5-12 Voltajes en P7 con HIGH, PAUSE y RCTIME
La figura 5-13 muestra la forma en que cambia la descarga con la resistencia del
potenciometro para el circuito de la Figura 5-11. Cada posicin de la perilla del
potenciometro determina una cierta resistencia. Girandolo en una direccin la resistencia
aumenta y en la otra direccin la resistencia disminuye. Cuando la resistencia es mayor el
tiempo de descarga es ms largo, y la instruccin RCTIME almacena un valor mayor en
la variable time. La instruccin DEBUG del programa ReadPotWithRcTime.bs2
muestra esta medicin de tiempo en la Terminal Debug, y como el tiempo de descarga
Figura 5-13
Forma en que la Resistencia
del Potenciometro afecta el
Tiempo de Descarga
Horizontal
potentiometer
Figura 5-14
Potenciometros dentro
del Mdulo Joystick de
Parallax.
Vertical
potentiometer
Potenciometro de 10 K
Un Resistor de 220 (rojo-rojo-cafe)
Un Resistor de 470 (amarillo-violeta-cafe)
Un Capacitor de 0.1 F
Un Servo Normalizado de Parallax
Un LED de cualquier color
Dos alambres para puentes
Los usuarios de la Tablilla HomeWork Board tambin necesitarn:
Un conector de 3 terminales hembra-hembra
Cuatro alambres para puentes
Construyendo el Circuito de Perilla y Servo
Esta actividad usar dos circuitos que usted ya ha construido individualmente: el circuito
del potenciometro de la actividad que acaba de terminar y el circuito servo del captulo
anterior.
9 Quite del rea de su tablilla el potenciometro del circuito RC de la actividad # 3.
Si necesita reconstruirlo, use la Figura 5-11. Asegurese que usa el capacitor de
0.1 F y no el capacitor de 0.01 F.
9 Agregue al proyecto el circuito servo del captulo 4, actividad 1. Recuerde que su
circuito servo ser diferente dependiendo de la Tablilla que use. Abajo estn las
pginas para esta seccin que necesita buscar en:
o Vaya a la Pgina 96 si usa la Tablilla Board of Education
o Vaya a la Pgina 99 si usa la Tablilla BASIC Stamp HomeWork
Programando Potenciometro Controlando el Servo
Usted necesitar los valores ms pequeo y ms grande de la variable tiempo que guard
de su circuito RC de tiempo cuando us un capacitor de 0.1 F
9 Si no ha completado la seccin Su Turno de la actividad anterior, regresese y
completela ahora.
Para este siguiente ejemplo, estos son los valores de tiempo que midieron los tcnicos de
Parallax, sus valores son quiz ligeramente diferentes.
1
691
Entonces, como pueden ajustarse estos valores de entrad para que cubran el rango de
500 1000 para controlar el servo con la instruccin PULSOUT? La respuesta es usando
multiplicaciones y sumas. Primero, multiplique los valores de entrada por algo para hacer
la diferencia de entre los valores en el sentido de las manecillas del reloj (mnimo) y en
sentido inverso de las manecillas del reloj (mximo) 500 en lugar de casi 700. En
seguida, agregue un valor constante al resultado para que el rango de 500 a 1000 en lugar
de 1 a 500. En electrnica a estas operaciones se les llama Escalamiento y ajuste. As
es como trabaja la matemtica para la multiplicacin (escalamiento).
500
= 691 0.724 = 500
691
500
time(minimum) = 1
= 0.724
691
time(maximum) = 691
2. Tome el valor fraccional que usted desea usar y mutipliquelo por 256
nuevo valor fraccional = 0.724x256 = 185.344
3. Quite los decimales del nmero
nuevo valor fraccional = 185
Estos son los pasos del escalamiento ahora todo lo que necesitamos es agregar el offset
de 500. Esto puede hacerse con una segunda instruccin que suma 500 a tiempo:
tiempo = tiempo */ 185
tiempo = tiempo + 500
Ahora, tiempo esta listo para reciclarce con el argumento Duration de la intruccin
PULSOUT
time = time */
time = time + 500
PULSOUT 14, time
9 Meta y ejecute este programa, luege gire la perilla del potenciometro y asegurese
que a iguales movimientos del servo, corresponden al potenciometro.
' Que es un Microcontrolador - ControlServoWithPot.bs2
' Lee el potentiometro del circuito de tiempo RC usando la instruccin RCTIME.
' Escale time por 0.724 y offset por 500 para el servo.
' {$STAMP BS2}
' {$PBASIC 2.5}
PAUSE 1000
DEBUG "Programa ejecutandose!"
time
VAR
Word
DO
HIGH 7
PAUSE 10
RCTIME 7, 1, time
time = time */ 185
time = time + 500
PULSOUT 14, time
LOOP
time
En programas grandes, usted puede terminar usando el valor del factor de escalamiento
(que fue 185) y el de offset (que fue 500) muchas veces en el programa. Nmeros como
185 y 500 en su programa se llaman constantes porque a diferencia de las variables su
valores no cambian mientras se ejecuta el programa. En otras palabras, el valor
permanece constante. Usted puede crear nombres para estas constantes con directivas
CON.
Factor de escalamiento
Ofsset
delay
CON
CON
CON
185
500
10
Estas directivas CON siempre se declaran cerca del comienzo del programa, para
que sean fciles de encontrar.
Una vez que sus valores constantes se le han dado nombres con las directivas CON,
usted puede usar en su progrma ScaleFactor en lugar de 185 y Offset en lugar de 500.
Por ejemplo:
time = time */ scale Factor
time = time + offset
Escalaminento de 0.724
Offset de 500
Con los valores que asignamos a las constantes con las directivas CON las
instrucciones verdaderamente son:
time = time */ 185
time = time + 500
Escalaminento de 0.724
Offset de 500
Una ventaja importante al usar constantes es que usted puede cambiar una directiva con
y esta se actualiza en cada instante del nombre de al constante en su programa. Por
ejemplo, si usted escribe un programa grande que usa la constante ScaleFactor en 1
diferentes lugares, un cambio para Scale Factor Con... y todos los momentos su programa
usara ScaleFactor que actualiza el valor para el siguiente prograda descargado.
Entonces, Si usted cambia ScaleFactor CON 500 por ScaleFactorCON510, cada
instruccin con ScaleFactor usar 510 en lugar de 500.
Usted tambien puede darle nombres a los pines E/S usando la directiva PIN. Por
ejemplo, usted puede declarar un directiva PIN para el pin E/S p/ de la siguiente manera:
RcPin
PIN7
Hay dos lugares en el programa del ejemplo anterior donde se usa el nmero 7 para
referirse al pin E/S P7. El primero ahora puede escribirse como:
HIGH RcPin
Si posteriormete cambia su circuito para usar diferentes pines E/S, todo lo que tiene que
hacer es cambiar el valor de su directiva PIN y las dos instrucciones HIGH y RCTIME,
se actualizarn automticamente.
De igual forma, si usted tiene que recalibrar su factor de escalamiento o el offset, usted
solamente necesita cambiar las directivas CON al principio del programa.
La directiva del PIN tiene una caracterstica adicional: El compilador PBASIC puede
detectar si el nombre del pin se usa como entrada o salida, y substituur al nmero del pin
E/S, o al bit del registro de la variable de entrada correspondiente. Por ejemplo, usted
podra declarar dos directivas pin, como LedPin PIN 14 y ButtonPin PIN3. Entonces su
cdigo puede tener una frase como IF buttonPin = 1 THEN HIGH LedPin. El compilador
PBASIC convierto esto a IF IN3 = 1 THEN HIGH14.
El IF ButtonPin = 1 hizo una comparacin, y el compilador PBASIC conoce que usted
est usando Button Pin como una entrada. Entonces, usa el bit del registro de entrada IN3
en lugar de nmero 3. De igual manera, el compilador PBASIC sabe que HIGH LedPin usa
el nombre pin LedPin como el valor constante 14 para una operacin de salida, y este lo
sustituye por HIGH 14.
PIN
PIN
7
14
scaleFactor
offset
delay
CON
CON
CON
185
500
10
time
VAR
Word
PAUSE 1000
' Initializacion
DO
HIGH rcPin
PAUSE delay
RCTIME rcPin, 1, time
time = time */ scaleFactor
time = time + offset
PULSOUT servoPin, time
DEBUG HOME, DEC5 time
LOOP
Como se mencion anters, si usted conecta el circuito RC a un pin E/S diferente, usted
puede simplemente cambiar el valor de la directiva RcPin PIN, y este cambio
automticamente se refleja en las instrucciones HIGH RcPin y RCTIME RcPin, 1, time.
9 Guarde el Programa Ejemplo con un nombre nuevo.
9 Cambie scaleFactor y offser a los valores nicos para su circuito RC que usted
determinado en la seccin anterior Su Turno.
9 Ejecute el programa modificado y verifique que trabaja correctamente.
9 Modifique su circuito moviendo la conexin del circuito RC de pin E/S 7 al pin
de E/S 8.
9 Modifique la declaracin rcPin que diga:
rcPin
PIN 8
RESUMEN
Este captulo introdujo el potenciometro, una parte frecuentemente encontrada debajo de
varios botones y perillas. El potenciometro tiene un elemento resistivo que tipicamente se
conecta al exterior con dos terminales y una terminal deslizable que hace contacto en un
punto variable sobre el elemento resistivo. El potenciometro se puede usar como un
resistor variable si la terminal deslizable y una de las terminales exteriores se usan en un
circuito.
En este capitulo tambien se introdujo el capacitor. Un capacitor se puede usar para
almacenar y liberar carga. La cantidad de carga que un capacitor puede almacenar se
relaciona con su valor, que se mide en farads, (F). El smbolo es una notacin de
ingeniera de micro y significa una millonsima. El capacitor utilizado en las actividades
de este captulo fue de 0.01 a 3300 F.
Un resistor y un capacitor se pueden conectar junto en un circuito que necesita cierta
cantidad de tiempo para cargarse y descargarse. A este circuito se le llama comunmente
circuito de tiempo RC. La R y C del circuito de tiempo RC se refieren al resistor y al
capacitor. Cuando un valor (C en las actividades de este captulo) se mantiene constante,
el cambio en el tiempo que le toma para que el circuito se descargue se relaciona con el
valor de R. Cuando cambia el valor de R, el valor que el tiempo toma para que se cargue
y descarge tambien cambia. El tiempo total que le toma al circuito RC para descargarse
puede escalarse usando un capacitor de diferente tamao.
Se uso el polling para monitorear el tiempo de descarga de un capacitor en un circuito
RC en donde el valor de C era muy grande. Se usaron diferentes resistores para mostrar
como cambia el tiempo de descarga cuando cambia el valor del resistor del circuito. Se
us la instruccin RCTIME para monitorear un potenciometro (un resistor variable) en un
circuuito de tiempo RC con un capacitor ms pequeo. Aunque estos capacitores hacen
que el tiempo de descarga tenga un rango de 2 a 1500 us (millonesimas de segundo), el
BASIC Stamp no tiene problemas para controlar estas mediciones de tiempo con la
instruccin RCTIME. El pin E/S debe fijarse en HIGH y entonces al capacitor del
circuito de tiempo RC se le permite descargarse usando PAUSE antes usar la instruccin
RCTIME.
La programacin en PBASIC puede usarse para medir un sensor resistivo como un
potenciometro y escalar su valor para que sea de utilidad con otro dispositivo, por
ejemplo un servo. Esto incluye realizar operaciones matemticas en el tiempo de descarga
de RC medido, que la instruccin RCTIME almacena en una variable. Esta variable
puede ajustarse sumandole un valor constante que nos permite controlar el servo. En la
seccin Proyectos, usted puede por si mismo encontrarlo usando multiplicaciones y
divisiones.
La directiva CON puede usarse al principio de un programa para sustituir el nombre de
un valor constante (un nmero). Despus de darle nombre a una constante, el nombre
puede usarse en lugar del nmero en todo el programa. Todo da facilidad, especialmente
si usted necesita usar el mismo nombre en 2, 3, o incluso 100 diferentes lugares en el
programa. Usted puede cambiar el nmero en la directiva CON, y todos los 2, 3, o
incluso 100 diferentes ejemplos de ese nmero se actualizarn automticamente la
siguiente vez que usted ejecute el programa. Las directivas PIN le permiten que usted
le asigne nombre a los pines de E/S. El nombre del pin de E/S es sensible en contexto, de
tal manera que el compilador PBASIC sustituye el nmero del pin E/S correspondiente
por el nombre del pin en instrucciones como HIGH, LOW y RCTIME. Si el nombre del
pin se usa en una frase condicional, este lo sustituye en lugar del registro de entrada
correspondiente como IN2, IN3, etc.
Preguntas
Q1. Un potenciometro
Q2. No. Est fija. La resistencia variable est entre cualquiera de las terminales
finales y la terminal central
Q3. Q3. Un capacitor es como una pila recargable porque puede cargarse para que
mantenga un voltaje. La diferencia es que solamente retiene la carga por una
pequea cantidad de tiempo.
Q4. Usted puede medir el tiempo que le toma al capacitor descargarse (o cargarse).
Este tiempo se relaciona con la resistecia y la capacitancia. Si se conoce la
capacitancia y la resistencia es variable, entonces el tiempo de descarga da una
indicacin de la resistencia.
Q5. La directiva CON sustituye un nombre por un nmero.
E1. El nuevo capacitor = (10 veces el valor del capacitor viejo) = (10x0.5F) = 5
F.
P1. Actividad #4 agregandole el LED Bicolor
P13
P12
470
'
'
'
'
'
'
'
'
PAUSE 1000
DEBUG "Programa en Ejecucin!"
time
potenciometro
prevTime
VAR
Word
VAR
Word
DO
prevTime = time
HIGH 7
PAUSE 10
RCTIME 7, 1, time
time = time + 350
HIGH 7
PAUSE 10
RCTIME 7, 1, time
time = time + 649
IF (time < 650) THEN
time = 650
ENDIF
IF (time > 850) THEN
time = 850
ENDIF
Figura 6-1
Reloj Digital con
Indicador de 7
segmentos en la puerta
del horno.
Cada uno de los tres dgitos de la Figura 6-1 se llama indicador de 7 segmentos. En este
captulo, usted programar el BASIC Stamp para mostrar nmeros y letras en un
indicador de 7 segmentos.
QU ES UN INDICADOR DE 7 SEGMENTOS?
Un Indicador de 7 segmentos es un bloque rectangular de 7 lneas de igual longitud que
puede iluminarse selectivamente con LEDs para mostrar digitos y algunas letras. La
Figura 6-2 muestra un dibujo de un indicador de 7 segmentos que usted usar en las
actividades de este captulo. Tambin tiene un punto que puede usarse como punto
decimal. Cada uno de los segmentos (desde A hasta G) y el punto contienen un LED
separado, que pueden controlarse individualmente. La mayora de los pines tiene un
nmero junto con una etiqueta que corresponde a uno de los LEDs del segmento. El pin 5
tiene la etiqueta DP, que significa punto decimal. Los pines 3 y 8 tienen la etiqueta
ctodo comn y estudiaremos su significado cuando veamos su diagrama.
Common
Cathode
10 9 8 7 6
G F
A B
A
F
B
G
C
E
D
E D
Figura 6-2
Indicador de 7 segmentos
Dibujo y mapa de pines.
C DP
1 2 3 4 5
Common
Cathode
La Figura 6-3 muestra un esquemtico del LED dentro del indicador LED de 7
segmentos. Cada nodo del LED se conecta a un solo pin. Todos los ctodos se conectan
juntos por alambres dentro de la parte. Debido a que los ctodos comparten una conexin
comn, al indicador LED de 7 segmentos se le llama de ctodo comn. Se pueden
conectar los pines 3 o 8 de la parte a Vss, usted conectar todos los ctodos del LED a
Vss.
10
DP
LEDs
Figura 6-3
Esquemtico de un
Indicador LED de 7
segmentos
Vdd
nc
nc
nc
nc
X
nc
nc
nc
X
1 k
10
DP
Figura 6-4
Esquemtico del circuito
de prueba para el
segmento A del
indicador LED
LEDs
8
X
3
Vss
nc
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Vdd
Vin
Vss
Figura 6-5
Diagrama de alambrado
del circuito de prueba
para el segmento A
del indicador LED.
Vdd
nc
nc
nc
X
nc
nc
nc
nc
X
1 k
10
DP
Figura 6-6
Esquemtico del circuito
de prueba para el
segmento B del
indicador LED
LEDs
8
X
3
Vss
nc
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Vdd
Vin
Vss
Figura 6-7
Diagrama de alambrado
del circuito de prueba
para el segmento B del
indicador LED.
Vdd
Vdd
Vdd
Vdd
1 k (all)
nc
nc
nc
1
10
DP
Figura 6-8
Alambrado del dgito
3
LEDs
8
X
3
Vss
nc
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Vdd
Vin
Figura 6-9
Diagrama de
alambrado de la
Figura 6-8
Vss
10 9 8 7 6
G F
A B
A
F
B
G
C
E
D
E D
C DP
1 2 3 4 5
Common
Cathode
Figura 6-10
Dibujo del Indicador LED de 7
segmentos y Mapa de pines
1 k
(All)
P15
P14
P13
P12
P11
P10
P9
P8
DP
LEDs
Figura 6-11
Esquematico
del BASIC
Stamp
controlando
un Indicador
LED de 7
segmentos.
common
Vss
Sea cuidadoso con los resistores conectados a P13 Y P14. Observe cuidadosamente a los
resistores conectados en P13 y P14 de la Figura 6-12. Hay una distancia entre estos dos
resistores. El espacio se muestra porque el pin 8 del indicador LED de 7 segmentos est
sin conectar. Un resistor conecta el pin E/S P13 con pin 9 del indicador LED de 7
segmentos. Otro resistor conecta a P14 con el pin 7 del indicador de 7 segmentos
DP
EDC GFAB
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Vdd
Figura 6-12
Diagrama de alambrado
para la Figrua 6-11.
Vin
Vss
Las instrucciones HIGH y LOW aceptarn una variable Pin como argumento. Para
verificar cada segmento, uno a la vez, simplemente coloque las instrucciones HIGH y
LOW en un bucle FOR...NEXT, y use el indice para fijar nuevamente los pines E/S en
HIGH y LOW.
9 Meta y ejecute el programa SegmentTestWithHighLow.bs2
9 Verifique que cada segmento en el indicador LED de 7 segmentos se ilumina
brevemente girando nuevamente en apagado y encendido.
9 Haga una lista de que segmento controla cada pin de E/S.
Programa Ejemplo: SegmentTestWithHighLow.bs2
' Que es un Microcontrolador- SegmentTestWithHighLow.bs2
' Individualmente verifique cada segmento en un indicador LED de 7-Segment .
'{$STAMP BS2}
'{$PBASIC 2.5}
pinCounter
VAR
Nib
PAUSE 1000
DEBUG "Pin de E/S", CR,
"-------", CR
FOR pinCounter = 8 TO 15
DEBUG DEC2 pinCounter, CR
HIGH pinCounter
PAUSE 1000
LOW pinCounter
NEXT
En esta actividad, usted experimentar con las variables DIRH y OUTH. DIRH es una
variable que controla la direccin (entrad o salida) de los pines de E/S desde P8 hasta
P15. OUTH controla las seales high o low que cada unos de estos pines E/S manda.
Como usted pronto ver, OUTH es especialmente til porque usted puede usarla para
mandar al mismo tiempo las seales high/low para 8 diferentes pines con solamente una
instruccin. Este es un programa ejemplo que muestra como se pueden usar estas dos
variables para contar desde 0 hasta 0 con el indicador LED de 7 segmentos sin usar las
instrucciones HIGH y LOW.
Programa Ejemplo. DisplayDigits.bs2
Funcionamiento de DisplayDigits.bs2
Vin
Vss
La Figura 6-13 le muestra como puede usar las variables DIRH y OUTH para controlar la
direccin y estado (high/low) de los pines de E/S desde P8 hasta P15.
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
X3
Vdd
Figura 6-13
Usando DIRH y OUTH
para fijar todos los pines
a Salida-Low
OUTH = %00000000
DIRH = %11111111
La primera instruccin:
OUTH = %00000000
Hace que todos los pines E/S (de P8 a P15) estn listos para mandar seales low. Si
todos ellos mandan seales low, apagarn todos los LEDs del indicador LED de 7
segmentos. Si usted desea que todos los pines E/S manden una seal high usted podra
usar OUTH = %11111111
Qu hace %? El simbolo % formato en Binario se usa para decirle al Editor BASIC
Stamp que el nmero es un nmero binario. Por ejemplo, el nmero binario %00001100 es
lo mismo que el nmero decimal 12. Como usted ver en esta actividad, los nmeros
binarios pueden hacer ms fcil muchas tareas de programacion.
Las seales low verdaderamente no se manda por los pines E/S hasta que se usa la
variable DIRH que cambia los pines E/S de entrada a salida. La instruccin:
DIRH = %11111111
Fija los pines de E/S desde P8 hast P15 como salidad. Tan pronto como se ejecuta esta
instruccin P8 hasta P15 empiezan a mandar seales low. Esto se debe a que la
instruccin OUTH = 00000000 se ejecut justamente antes de la instruccin DIRH. Tan
pronto como la instruccin DIRH fija todos los pines como salida, empiezan a mandar
seales low.
Usted tambien puede usar DIRH = %00000000 para cambiar todos los pines E/S en
entradas.
Antes que los pines E/S se conviertan en salidas: Hasta que los pines de entrada cambian a
salida, sensan las seales y actualizan la variable INH. Esta es la variable que contiene IN8,
IN9 hasta IN15. Estas variables se pueden usar de la misma forma que se usaron IN3 y IN4
para leer los botones push en el Captulo 3 Entrada Digital Botones push.
En el BASIC Stamp todos los pines de E/S se inicializan como entradas. A esto se le llama
default. Usted tiene que decirle a el BASIC Stamp que un pin I/O cambie a salida antes de
que empiece a mandar seales high o low. Las dos instrucciones HIGH y LOW cambian
automticamente la direccin de los pines E/S del BASIC Stamp como salida. Colocando un
1 en la variable DIRH tambin se hacen uno los pines de E/S en salida.
Siempre fije valores en un registro OUT antes de hacerlos salidas con valores en el registro
DIR correspondiente. Esto previene que brevemente se manden seales no desadas. Por
ejemplo, si a DIR5 = 1 le sigue OUT5 = 1 en el principio de un programa, el brevemente
manda una seal low no deseada antes de cambiar a high porque OUT5 almacena cero
cuando el programa comienza. (En BASIC Stamp todas las variables/registros se inicializan
en 0.) Si OUT5 = 1 y le sigue DIR5 =1, el pin de E/S mandar una seal high tan pronto
como se convierta en salida.
Como los valores almacenados por default en todas las variables es 0 cuando el programa
inicia, la instruccin OUTH = %00000000 en realidad es redundante.
La Figura 6-14 muestra como usar la variable OUTH para mandar selectivamente seales
high y low a P8 hasta P15. Un 1 binario se usa para mandar una seal high, y un 0 binario
se usa para mandar una seal low. Este ejemplo muestra el nmero tres en el indicador
LED de 7 segmentos:
'
BAFG.CDE
OUTH = %11010110
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
X3
Vdd
Vin
Vss
Figura 6-14
Usando OUTH para
controlar las seales
High/Low desde P8
hasta P15
BAFG.CDE
OUTH = %11010110
La instruccin OUTH = %11010110 usa ceros binarios para fijar los pines E/S P8, P11 y
P13 en low, y usa unos binarios para fijar P9, P10, P12, P14 y P15 en high. La linea
debajo de la instruccin es un comentario que muestra las etiquetas del segmento con el
valor binario que hace que el segmento se ilumine o se apague.
Dentro de HIGH and LOW commands:
HIGH 15
OUT15 = 1
DIR15 = 1
OUT15 = 0
DIR15 = 1
Igualmente , la instruccin :
LOW 15
Si desea cambiar P15 como entrada, use DIR15 = 0. Entonces, puede usar IN15 para
detectar (en lugar de mandar) seales high/low .
Decimal vs Hexadecimal
Los digitos basicos en el sistema de nmeros decimales son;
0,1,2,3,4,5,6,7,8,9
En el hexadecimal (base-16) en el nmero de dgitos del sistema de base son:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
La Base-16 se usa mucho en la programacin de computadoras y microcontroladores. Una
vez que usted sepa calcular como mostrar los caracteres de A hasta F, usted podr
modificar su programa para contar en hexadecimal de 0 hasta F.
Hay dos variables que usa estra instruccin index y value. Si index es 0, value
almacena 7, Si index es 1, value almacena 85. En el siguiente programa ejemplo, index
vale 2, entonces la instruccin LOOKUP coloca 19 en value y eso es lo que muestra la
Terminal Debug.
Programa Ejemplo: SimpleLookup.bs2
VAR
VAR
Byte
Nib
index = 2
PAUSE 1000
DEBUG ? index
LOOKUP index, [7, 85, 19, 167, 28], value
DEBUG ? value, CR
DEBUG "Cambie la variable indice de un ", CR,
"numero diferente (entre 0 y 4).", CR, CR,
"Ejecute el programa moficado y ", CR,
"verifique que ve el nmero", CR,
"que la instruccin LOOKUP coloca en el", CR,
"variable valor."
END
VAR
Nib
OUTH = %00000000
DIRH = %11111111
PAUSE 1000
DEBUG "index
"-----
OUTH
", CR,
--------", CR
FOR index = 0 TO 9
LOOKUP index, [ %11100111, %10000100, %11010011,
%11010110, %10110100, %01110110,
%01110111, %11000100, %11110111, %11110110 ], OUTH
DEBUG "
", DEC2 index, "
PAUSE 1000
NEXT
DIRH = %00000000
END
Figura 6-15
Esquemtico del circuito
del potenciometro
agregado al proyecto.
Figura 6-16
Diagrama de alambrado
para la Figura 6-15
Hay una instruccin muy til llamadoa LOOKDOWN, y claro, es la instruccin inversa a
LOOKUP.Entanto que la instruccin LOOKUP entregra un nmero basado en un ndice,
la instruccin LOOKDOWN entrega un ndice basado en un nmero.
Programa Ejemplo: SimpleLookdown.bs2
VAR
VAR
Byte
Nib
value = 167
PAUSE 1000
DEBUG ? value
LOOKDOWN value, [7, 85, 19, 167, 28], index
DEBUG ? index, CR
DEBUG "Cambie el valor de la variable a un ", CR,
"numero diferente en esta lista:", CR,
"7, 85, 19, 167, or 28.", CR, CR,
"Ejecute el programa modificado ", CR,
"verifique que ve el nmero que ", CR,
"que la instruccin LOOKDOWN coloca en la ", CR,
"variable indice."
END
palabras, el operador regresa el ndice del primer valor en la lista que hace la frase
verdadera en la instruccin.
9 Modifique SimpleLookdown.bs2. sustituyendo las frases value y LOOKDOWN
en lugar de los que ya existen.
9 Modifique las instruccin DEBUG para que muestre:
DEBUG "Cambie la variable value a un ", CR,
"numero diferente en este rango:", CR,
"0 a 170.", CR, CR,
"Ejecute el programa modificado y ", CR,
"verifque que se ver el nmero que ", CR,
"la instruccin LOOKDOWN coloca en la ", CR,
"variable indice."
Figura 6-17
Mostrando la posicin del
potenciometro con el indicador LED
de 7 segmentos
'{$STAMP BS2}
'{$PBASIC 2.5}
PAUSE 1000
DEBUG "Programa en Ejecucin
index
time
VAR
VAR
Nib
Word
OUTH = %00000000
DIRH = %11111111
DO
HIGH 5
PAUSE 100
RCTIME 5, 1, time
LOOKDOWN time, <= [40, 150, 275, 400, 550, 800], index
LOOKUP index, [ %11100101, %11100001, %01100001,
%00100001, %00000001, %00000000 ], OUTH
LOOP
Este Programa Ejemplo toma mediciones con RCTIME del potenciometro y las almacena
en una variable llamada time
HIGH 5
PAUSE 100
RCTIME 5, 1, time
La variable time se usa en una tabla LOOKDOWN. La tabla LOOKDOWN decide que
nmero en la lista time es menor que, y luego carga el nmero (0 a 5 en este caso) en la
variable indice
LOOKDOWN time, <= [40, 150, 275, 400, 550, 800], index
En seguida, la variable index se usa en una tabla LOOKUP para escoger el valor
binario a cargar en la variable OUTH.
LOOKUP index, [ %11100101, %11100001, %01100001,
%00100001, %00000001, %00000000 ], OUTH
El programa DialDisplay.bs2 solo gira cinco de los seis segmento cuando usted gira la
perilla. La secuencia de giro de los LEDs del programa DialDisplay.bs2 es E, F, A, B, C,
el segmento D no se ilumina.
9 Guarde el programa DialDisplay.bs2 con el nombre DialDisplayYourTurn.bs2
9 Modifique DialDisplayYourTurn.bs2 para que haga que los seis LEDs exteriores
se iluminen conforme gira el potenciometro. La secuencia deber ser: E,F,A,B,C,
y D.
Sugerencia: Quite el circuito LED de su tablilla. Estaremos usando nuevamente el circuito
indicador LED de 7 segmentos con otros circuitos del Captulo 7, Actividad 4.
RESUMEN
Este captulo introdujo el indicador LED de 7 segmentos, y la lectura de un mapa de
pines. Este captulo tambin introdujo algunas tcnicas para dispositivos y circuitos que
tienen entradas paralelas. Se introdujeron las variables DIRH y OUTH como un medio
para controlar los valores de los pines E/S del BASIC Stamp de P8 hasta P15. Se
introdujeron las instrucciones LOOKUP y LOOKDOWN como un medio de referencia
de listas de valores usados para mostrar letras y nmeros.
Preguntas
1. Escriba un comando OUTH para fijar en high P8, P10,P12. y P9, P11 Y P13
en low. Considere que todos los pines de E/S comienzan como entradas,
escriba la instruccin DIRH que har que los pines de E/S de P8 a P13 manden
seales high/low mientras que P14 y P125 se configuren como entradas.
1. Deletree FISH CHIPS And Dip en forma permanente con su indicador LED de
7 segmentos. Haga que cada letra dure 400 ms.
Soluciones
9
0
8
1
Bit 15 14 13 12 11 10
DIRH 0 0 1 1 1 1
9
1
8
1
DIRH = %00111111
E2. La clave para resolver este problema es dibujar cada letra y observar que
segmentos deben iluminarse. Coloque un 1 en cada segmento que debe
iluminarse. Translade eso valores binarios OUTH. La lista de segmentos
BAFG.CDE para los bits de OUTH est en la Figura 5-14.
Letra
a
C
d
F
H
I
n
P
S
LED Segmentos
e, f, a, b, c, g
a, f, e, d
b, c, d, e, g
a, f, e, g
f, e, b, c, g
f, e
e, g, c
all but c and d
a, f, g, c, d
B A F G.C D E
11110101
01100011
10010111
01110001
10110101
00100001
00010101
11110001
01110110
OUTH Valor =
%11110101
%01100011
%10010111
%01110001
%10110101
%00100001
%00010101
%11110001
%01110110
Common
Cathode
10 9 8 7 6
G F
A B
A
F
B
G
C
E
D
E D
C DP
1 2 3 4 5
Common
Cathode
P1. Use el esquemtico de la Figura 6-11. Para resolver este problema modifique el
programa DisplayDigitsWithLookup.bs2, usando el patrn de letras que resolvi
en el Ejercicio 2. En la solucin las letras tienen que arreglarse como constantes
para hacer el programa ms intuitivo. Es correcto usar los valores binarios, pero
est sujeto a mayores errores.
' Que es un Microcontrolador - Ch6Prj01_FishAndChips.bs2
' Use la tabla lookup para almacenar y mostrar los digitos
' en un indicador 7-segment. Deletree el mensaje: FISH CHIPS And dIP
'{$STAMP BS2}
'{$PBASIC 2.5}
' Patrones del indicador 7-Segment para crear letras
A
CON
%11110101
C
CON
%01100011
d
CON
%10010111
F
CON
%01110001
H
CON
%10110101
I
CON
%00100001
n
CON
%00010101
P
CON
%11110001
S
CON
%01110110
space
CON
%00000000
index
VAR
Byte
OUTH = %00000000
DIRH = %11111111
PAUSE 1000
DO
DEBUG "indice
OUTH
", CR,
"-----
--------", CR
FOR index = 0 TO 18
esto a travs de la lente de una cmara digital, el LED parecera blanco. La luz blanca
contiene todos los colores del espectro. Los sensores, rojo, verde y azul dentro del chip de
la cmara reportan que detectan luz en respuesta a la luz blanca.
Esto sucede porque los sensores rojo/verde/azul todos detectan la luz infraroja del LED
IR del control. Entoces la cmara tambien interpreta la luz de un LED infrarojo como
blanca.
Ms respecto a LEDs infrarojos y Detectores
La Robtica con el Boe-Bot tiene ejemplos con el BASIC Stamp controlando el robot BoeBot e internamente tiene LEDs IR como los del control remoto del TV, y el Receptor IR
dentro del TV para detectar objetos enfrente de l. El Boe-Bot usa LEDs IR como luz, y el
receptor IR dentro de los TVs para detectar las reflexiones luz de objetos lejanos enfrente
de l. El libro IR Remote for theBoe-Bot explica con los controles de TV remotos codifican el
mensaje que al TV, tambin tiene ejemplos de cmo programar el microcontrolador del
BASIC Stamp para decodificar mensajes del control remoto para que pueda mandar
mensajes al Boe-Bot e incluso controlarlo alrededor, todo con un control remoto.
El tipo de luz, que un dispositivo sensa depende como fue diseado. Por ejemplo, los
sensores de luz de dispositivos que se ajustan a las condiciones de luz ambiental
necesitan sensar luz visible. Los sensores de pixeles rojo, verde y azul internos de las
cmaras digitales estn sensando los niveles de los colores especficos de una imagen
digital. El sensor IR dentro del TV est buscando luz infraroja que parpadee cerca de 40
kHz.Estos son solamente unos ejemplos de lo que requiere una aplicacin para diferentes
clases de sensores de luz.
La Figura 7-1 muestra unos ejemplos de sensores de luz disponible para varios
requerimientos de sensores de luz. De izquierda a derecha, se muestra un fototransistor,
un fotoresistor de sulfuro de cadmio, un sensor lineal de luz, un fotodiodo fortalecido
para el color azul, un convertidor de luz a frecuencia, un fototransistor infrarojo y un
receptor remotor infrarojo de TV.
Los documentos de cada sensor de luz describen el tipo de luz que detecta en trminos de
la longitud de onda. La longitud de onda de la distancia entre las formas o ciclos
repetidos. Por ejemplo, imagine una onda viajando en el oceano, subiendo y bajando, La
longitud de tal onda deber ser la distancia entre cada pico (pico de espuma) del ciclo de
la onda. La longitud de onda de la luz se puede medir en forma similar, en lugar de que
midamos la distancia entre dos picos de las oscilaciones electromagnticas de luz. Cada
color de luz tiene su propia longitud de onda y se considera que es luz visible, esto
significa que el ojo humano puede detectarla. La Figura 7-2 muestra longitudes de onda
de luz visible y tambin algunos tipos de luz que el ojo humano no puede detectar,
incluyendo la ultravioleta y el infrarojo. Estas longitudes de onda se miden en
nanometros, que se abrevia nm. Un nanometro es la billonsima parte de un metro.
Ultraviolet
450
Violet
495
Blue
Orange
Yellow
750100,000
Infrared
Red
Nota: Si usted esta viendo esta imagen en un libro impreso en escala de gris, usted puede
bajarlo a todo color del PDF en www.parallax.com/go/WAM.
CONOCIENDO EL FOTOTRANSISTOR
Un transistor es como una vlvula que permite que pase cierta cantidad de corriente a
travs de dos de sus terminales. La tercera terminal del transistor controla la cantidad de
corriente que pasa a travs de las otras dos terminales. Dependiendo del tipo de transistor,
el flujo de corriente puede controlarse por voltaje, corriente o en caso del fototransistor
por luz. La Figura 7-3 muestra el esquemtico y el dibujo del fototransistor de su kit Qu
es un Microcontrolador?. A mayor cantidad de luz que llega a la terminal de la base del
fototransistor conduce mayor corriente la terminal del colector. la cual sale de la terminal
del emisor. En forma inversa, si llega menor cantida de luz a la terminal de la base hay
menor conduccin de corriente.
B
Figura 7-3
Smbolo esquemtico y dibujo del
Fototransistor
B
E
E
C
La sensibilidad pico de este fototransistor est en 850 nm, y de acuerdo con la Figura 7-2
en la escala infraroja. Tambin responde a la luz visible, aunque es menos sensitivo
especialmente a longituedes de onda debajo de 450 nm, que estn a la izquierda del azul
en la Figura 7-2. La luz de lmparas de halogeno e incandescentes, y especialmente la luz
del sol, son fuentes muy fuertes de infrarojo comparado con las lmparas fluorescetes. El
transistor infrarojo responde bien a todas estas fuentes de luz, pero es ms sensible a la
luz del sol, un poco menos a lmparas de halogeno e incandescentes y mucho menor a
lmparas fluorescentes.
El diseo de circuito que usan el transistor puede ajustarse para que trabaje mejor en
ciertos tipos de condiciones luminosas., y los circuitos de fototransistor de este captulo
se disean para el interior. Hay una aplicacin sensor de luz externa, pero se usar un
dispositivo diferente que al principio parecera que no es candidato a ser sensor de luz: el
diodo emisor de luz.
Un Fototransistor
Un Resistor de 220 (rojo-rojo-caf)
Vdd
Vin
Vss
X3
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Longer pin
(C) terminal
Flat spot
(E) terminal
Evite luz solar directa. El circuito y programa que usted est diseando para detectar
variaciones de luz en interiores y no trabaja para luz solar incidiendo directamente. Deje la
luz interior pero cierre las cortinas si los rayos del sol atraviezan una ventana cercana.
VAR
Word
DO
HIGH 2
PAUSE 100
RCTIME 2, 1, time
DEBUG HOME, "time =
LOOP
Las mediciones de tiempo con un capacitor de 0.1F sern diez veces mayores que un
capacitor de 0.01F, esto significa que el valor de la variable time que muestre la
Terminal Debug debern ser 10 veces ms grandes. Al reeplazar el capacitor de 0.01F
por uno de 0.1F ser ms til en condiciones de luz ms brillantes, donde usted
tpicamente vea mediciones pequeas usando el capacitor de 0.01F. Por ejemplo,
digamos que las condiciones de luz son muy brillantes y las mediciones estn en el rango
de 1 a 13 con el capacitor de 0.01 F. Al reemplazarlo con uno de 0.1F sus mediciones
estarn en el rango de 10 a 130, y su aplicacin ser mas sensible a variaciones de luz
dentro de la habitacin.
El chip del BASIC Stamp que almacena la memoria de programa y los datos se muestran
en la Figura 7-5. Este chip se llama EEPROM que significa memoria de Solo Lectura
Programable y Borrable Electricamente. Esto esta muy largo y pronunciar cada una de
sus letras es todava un montn de trabajo. Entonces, cuando las personas hablan de una
EEPROM, generalmente dicen E-E-Prom.
2 KB EEPROM
stores your
PBASIC source
code.
Figura 7-5
Chip de EEPROM del
mdulo BASIC Stamp
Esta EEPROM almacena
su cdigo de programa y
cualquier otros datos que
su programa coloca ah,
incluso cuando la
alimentacin se
desconecta.
La Figura 7-6 la ventana del Mapa de Memoria del Editor del BASIC Stamp. Usted
puede ver esta ventana haciendo click en el men RUN del Editor de BASIC Stamp y
seleccionar Memory Map.
El Mapa de Memoria usa diferentes colores para mostrar los mdulos RAM (variables en
random access memory ) y EEPROM (program memory) que se utilizan. El cuadro rojo
en la barra en la parte izquierda indica que porcin de la EEPROM es visible en el Mapa
de EEPROM. Usted puede dar click y jalar este cuadro hacia arriba y abajo para ver
varias porciones de la memoria EEPROM. Al jalar el cuadro rojo de arriba abajo, usted
puede ver cuanto espacio de memoria EEPROM usa el programa TestPhototransistor.bs2
de la Actividad #1.
Los bytes que contienen los Smbolos del programa estn resaltados en azul, y solamente
35 bytes fuera de la EEPROM de 2048 se usan para el programa. Los 2013 bytes
restantes estn libres para almacenar datos.
Figura 7-6
Mapa de Memoria
Para ver esta
ventana haga click
en RUN y seleccione
Memory Map
representar sus valores. Los dgitos 0 a 9 representan los primeros 10 valores, y las letras
A a F representan los valores 10 a 15. Cuando se convierte de hexadecimal a decimal
cada digito de la derecha la potencia mayor de dieciseis. El dgito ms a la derecha es el
nmero de unos, el cual es el nmero 16. El siguiente digito de la derecha es el nmero
de 16, el cual es el nmero 16. El tercer dgito es el nmero de 256s, el cual es el nmero
16.
Hexadecimal 7DC
=
=
=
=
=
Esta aproximacin de conversin trabaja de igual manera con otras bases, incluyendo la
base 10 de valores decimales. Por ejemplo:
2102 = (2 103) + (1 102) + (0 101) + (2 100)
= (2 1000) + (1 100) + (0 10) + (2 1)
2048 Bytes = 2 KB
Aunque la letra K y la letra k se llaman kilo son ligeramente diferentes. En electrnica y
computacin la K se usa para indicar un kilobyte binario que es 1x2 = 1024. Cuando nos
referimos con exactitud a 1000 bytes, usamos la letra k que se usa como kilo y es 1x10 =
1000 en el sistema mtrico
Tambien, la letra B significa bytes, mientras que la letra b significa bits. Esto puede hacer
una gran diferencia por 2Kb significa 2048 bits, que is 2048 numeros diferentes donde cada
nmero est limitado a un valor de 0 o 1. En contraste 2KB significa 2048 bytes cada uno
de los bytes puede almacenar un valor en el rango de 0 a 255.
Usando la EEPROM para almacenar datos puede ser muy til en aplicaciones remotas.
Un ejemplo de una aplicacin remota podra ser un monitor de temperatura colocado en
un camin que contiene comida refrigerada. El podra fijar la temperatura durante todo el
viaje para ver si siempre est lo suficientemente fria para asegurar que ninguno de los
embarques cambie de congelado a lquido. Un segundo ejemplo es una estacin de
monitoreo del clima. Una de las piezas de la estacin de datos del clima podra almacenar
para que despues obtener sus niveles de luz. Esto puede dar una indicacin de nubes que
cubren los tiempos de un da.
Y algunos estudios la usan para monitorear los efectos de contaminacin y condensacin
de trails en aviones, con altos niveles que llegan a la superficie de la tierra.
Teniendo en mente el el ajuste de niveles de luz, esta actividad introduce una tcnica para
almacenar los niveles de luz medidos en la EEPROM y despus analizarlos. En esta
actividad, usted ejecutar un Programa Ejemplo PBASIC que almacena una serie de
mediciones de luz en el mdulo EEPROM del BASIC Stamp. Despus que se termine el
programa, usted ejecutar un segundo programa que retira los valores de la EEPROM y
los muestra en la Terminal Debug.
Programando Almacenamiento de Datos en Terminos Grandes
Por ejemplo, si usted quiere escribir el valor 195 en la direccin 7 en la EEPROM, usted
podra usar la instruccin
WRITE 7, 195
Los valores WORD pueden ser cualesquiera desde 0 hasta 65565, mientras que los
valores byte solamente pueden contener nmeros de 0 a 255. Un valor word toma el
espacio de dos bytes. Si usted quiere escribir un valor en EEPROM, usted tiene que usar
el modificador opcional Word.
Sea cuidadoso. Como word ocupa dos bytes usted tiene que brincar una de las
direcciones tamao byte en la EEPROM antes de que usted pueda escribir otro word.
Digamos que usted necesita guardar dos valores word en EEPROM: 659 y 50012. Si
usted desea almacenar el primer valor en la direccin 8, usted tendr que escribir el
segundo valor en la direccin 10WRITE 8, Word 659
WRITE 10, Word 50012
Este Programa Ejemplo muestra con usar la instruccin WRITE tomando mediciones de
luz cada 5 segundos durante 2 minutos y almacenandolos en la EEPROM. Como el
Programa Ejemplo de la actividad anterior muestra las mediciones en la Terminal Debug,
pero tambien las almacena en la EEPROM para su posterior retiro con un programa
diferente que usa la instruccin READ.
9 Meta y ejecute StoreLightMeasurementsinEeprom.bs2
9 Registre las mediciones mostradas por la Terminal Debug para que usted pueda
verificar las mediciones de lectura cuando se obtengan de la EEPROM.
9 Gradualmente incremente la sombra sobre el fototransistor durante 2 minutes
de perodo de prueba para tener datos significativos.
Especialmente si usted tiene una Tablilla USB, su reconexin en la computadora podra
Resetear el BASIC Stamp y resetear el programa, en cuyo caso, podra empezar a tomar
un nuevo conjunto de mediciones.
9 Despus que el programa StoreLightMeasurementsinEeprom.bs2 haya
concluido, desconecte la alimentacin y djela desconectada hasta que usted este
listo
para
ejecutar
el
siguiente
programa
ejemplo:
ReadLightMeasurementsFromEeprom.bs2.
Usted puede cambiar las pausas en el bucle FOR...NEXT. Este Programa Ejemplo tiene
pausas de 5 segundos, las cuales resaltan las mediciones perodicas que toman las tarjetas
de adquisicin de datos. Esto podra parecer muy largo, entonces usted puede reducir
PAUSE 5000 a PAUSE 500 para hacer que el programa ejecute diez veces ms
rpidamente la prueba.
VAR
VAR
Word
Byte
PAUSE 1000
DEBUG "Iniciando mediciones...", CR, CR
"Medicion
Valor", CR,
"---------------", CR
FOR eepromAddress = 0 TO 58 STEP 2
HIGH 2
PAUSE 5000
RCTIME 2, 1, time
DEBUG DEC2 eepromAddress,
"
", DEC time, CR
WRITE eepromAddress, Word time
NEXT
DEBUG "Todo hecho. Ahora, ejecutelo:", CR,
"ReadLightMeasurementsFromEeprom.bs2"
END
El bucle FOR...NEXT que mide los valores de tiempo RC y los almacena en la EEPROM
tiene que contar en pasos de 2 porque los valores word se escriben en la EEPROM.
FOR eepromAddress = 0 to 58 STEP 2
1, time
Recuerde, que la direccin para la instruccin WRITE siempre est en trminos de bytes.
Entonces, la variable eepromAddress se incrementa por dos cada vez en el bucle
porque la variable Word toma dos bytes.
WRITE eepromAddress, Word time
NEXT
Para extraer los valores que usted grab en la EEPROM, usted puede usar la instruccin
READ. La sintaxis de la instruccin es:
READ Location, {WORD} Variable
Mientras que la instruccin WRITE puede copiar una de una constante o una variable a la
EEPROM, la instruccin READ tiene que copiar el valor almacenado en una direccin de
la EEPROM a una variable, entonces como su nombre lo sugiere , el argumento
Variable tiene que ser una variable.
Recuerde que las variables se almacenan el mdula RAM de el BASIC Stamp. De manera
diferente a la EEPROM, los valores RAM pueden borrarse cuando se desconecta la
alimentacin y tambin cuando se presiona el botn RESET de su Tablilla.
El BASIC Stamp 2 tiene 26 bytes de RAM, mostrados en el lado derecho del Mapa de
Memoria en la Figura 7-6. Si usted declara una variable word usted est usando dos
bytes. La declaracin de una variable byte usa un byte, un nible usa la mitad de un byte y
un bit usa 1/8 de byte.
ltima de las tres instrucciones copia una word que ocupan las direccines 10 y 11de la
EEPROM y la almacena en la variable eepromValueB.
Programa Ejemplo: ReadLighMeasurementsFromEeprom.bs2
Este Programa Ejemplo demuestra como usar la instruccin READ para extraer las
mediciones de luz que fueron almacenadas en la EEPROM con el programa
StoreLightMeasurementsInEeprom.bs2.
9 Conecta la energa a su Tablilla.
9 Meta el programa ReadLighMeasurementsFromEeprom.bs2 en el Editor de
BASIC Stamp.
9 Si usted tena desconectada la alimentacin de su tablilla, cuando la reconect,
inmediatamente haga click en el botn Run del Editor del BASIC Stamp para
bajar el programa en el BASIC Stamp.
No espere ms de 6 segundos entre reconectar la alimentacin y bajar el programa
ReadLighMeasurementsFromEeprom.bs2 en el BASIC Stamp, porque el programaque
todava est en la mememori de programa (StoreLightMeasurementsInEeprom.bs2.)
empezar a grabar sobre la mediciones anteriores. Entonces, si usted reduce Duration de
la instruccin PAUSE de 5000 a 500 usted solamente tendra 1.5 segundos.
Compare la Tabla de la Terminal Debug que muestra este programa con la Tabla que
mostro el programa StoreLightMeasurementsInEeprom.bs2, y verifique que los valores
son los mismos.
' Que es un Microcontrolador - ReadLightMeasurementsFromEeprom.bs2
' Lectura de mediciones de luz de la EEPROM.
' {$STAMP BS2}
' {$PBASIC 2.5}
time
eepromAddress
VAR
VAR
Word
Byte
PAUSE 1000
DEBUG "Extrayendo mediciones", CR, CR,
"Mediciones
Valores", CR,
"--------------", CR
FOR eepromAddress = 0 TO 58 STEP 2
READ eepromAddress, Word time
DEBUG DEC2 eepromAddress, "
NEXT
END
Su Turno Ms Mediciones
7000
6000
5000
4000
3000
2000
1000
0
0
"Decay Time"
10
20
30
40
50
60
Tim e (s)
Un Fototransistor
Un Resistor de 220 (rojo-rojo-caf)
Figura 7-9
Circuito
esquemtico del
Medidor de Luz
Figura 7-10
Diagrama de
Alambrado para la
Figura 7-9
Usando Subrutinas
La mayora de los programas que usted ha escrito hasta ahora trabajan dentro de un bucle
DO...LOOP. Como toda la actividad principal del programa sucede dentro de
DO...LOOP, a esta usualmente se le llama rutina principal. Conforme usted agrega ms
circuitos y ms funciones tiles a su programa, puede tener un poco de dificultad para
tener el control de todo el cdigo en la rutina principal. Su programa trabajar con mayor
facilidd si usted lo organiza en pequeos segmentos de cdigo que hagan ciertas tareas.
PBASIC tiene algunas instrucciones que usted puede usar para hacer que el programa
brinque de la rutina principal, haga una tarea, y luego regrese al mismo punto de la rutina
principal. Esto le permitira que usted mantenga cada segmento de cdigo haciendo un
trabajo particular sin estar en la rutina principal. Cada vez que usted necesite el programa
para hacer uno de esos trabajos, usted puede escribir una instruccin dentro de la rutina
principal que le diga al programa que brinque a tal trabajo, lo haga, y regrese cuando el
trabajo est hecho. Los trabajos se llaman subrutinas y a este proceso se le llama
llamado de subrutinas
La Figura 7-11 muestra un ejemplo de una subrutina y como se usa. La instruccin
GOSUB Subroutine_Name hace que el programa brinque a la etiqueta Subroutine_Name.
Cuando el programa va a esa etiqueta, corriendo y ejecutando las instrucciones hasta que
llega a la instruccin (retorna) RETURN. Y ahora el programa regresa a la instruccin
que viene despues de la instruccion GOSUB. En el caso del ejemplo de la Figura 7-11,
la siguiente instruccin es: DEBUG Next command
DO
GOSUB Subroutine_Name
DEBUG "Next command"
LOOP
Figura 7-11
Subroutine_Name:
DEBUG "This is a subroutine..."
PAUSE 3000
RETURN
Funcionamiento
Subrutina
de
la
Este Programa Ejemplo muestran como funcionan las subrutinas mandando mensajes a la
Terminal Debug.
9 Examine el programa SimpleSubroutines.bs2 y trate de adivinar el orden en el
cual se ejecutarn las instrucciones DEBUG.
9 Meta y ejecute el programa.
9 Compare el comportamiento del programa real con sus predicciones.
' Que es un Microcontrolador - SimpleSubroutines.bs2
' Demostracin del funcionamiento de la subrutina.
' {$STAMP BS2}
' {$PBASIC 2.5}
PAUSE 1000
DO
DEBUG
PAUSE
GOSUB
DEBUG
PAUSE
GOSUB
DEBUG
PAUSE
LOOP
First_Subroutine:
DEBUG " Primera Ejecucin "
DEBUG "subroutine.", CR
PAUSE 3000
RETURN
Segunda_Subrutina:
DEBUG " Executing second "
DEBUG "subroutine.", CR
PAUSE 3000
RETURN
Funcionamiento de SimpleSubroutines.bs2
PAUSE 2000
GOSUB First_Subroutine
DEBUG "Back in main.", CR
First_Subroutine:
DEBUG "
Figura 7-12
Llamada a la Primera
Subrutina.
DEBUG "subroutine.", CR
PAUSE 3000
RETURN
La Figura 7-13 muestra un segundo ejemplo del mismo proceso con llamada a la segunda
subrutina (GOSUB Second_Subrutine).
PAUSE 2000
GOSUB Second_Subroutine
DEBUG "Repeat main...", CR
Second_Subroutine:
DEBUG "
Figura 7-13
Llamada a segunda
subrutina
DEBUG "subroutine", CR
PAUSE 3000
RETURN
Usted puede agregar subrutinas adems de las dos que estn en el programa y llamarlas
de la rutina principal.
9 Agregue la subrutina mostrada en la Figura 7-11 al programa
SimpleSubroutines.bs2.
9 Haga los ajustes necesarios a la instruccin DEBUG para que muestre
correctamente las tres subrutinas.
Usted tambin puede llamar una subrutina dentro de otra subrutina. A esto se le llama
subrutinas anidadas.
9 Intente mover la instruccin GOSUB para que llame a la subrutina
Subroutine_Name hacia otra de las subrutinas, y vea como funciona.
Cuando anidar subroutines. La regla es no ms de cuatro profundidades. Vea el Manual
BASIC Stamp o la Ayuda del BASIC Stamp Editor para ms informacin Vea GOSUB y
RETURN
VAR
VAR
OUTH = %00000000
DIRH = %11111111
Nib
Word
DO
LOOP
' Subrutinas
Get_Rc_Time:
HIGH 2
PAUSE 3
RCTIME 2, 1, time
RETURN
Delay:
PAUSE time / 3
RETURN
Update_Display:
Las primeras dos lneas del programa declaran variables. No importa donde se usen estan
variables en la subrutinas o en la rutina principal, siempre es mejor declarar variables
(y constantes) al principio de su programa.
Como esto es prctica comn, esta seccin de cdigo tiene un nombre Variable
declarations (Declaracin de Variables). Este nombre se muestra como comentario a
la derecha la la primera declaracin de variable.
index
time
VAR Nib
VAR Word
Declaracin de Variables.
Algunos programas tambien tiene procedimientos que necesitan hacerse de una vez al
inicio del programa. Por ejemplo: Ajustar todos los pines de los 7 segmentos en low y
direccionarlos como salidas. Este seccin de programa PBASIC tambin tiene un nombre
Inicializacin
OUTH = %00000000
DIRH = %11111111
Hay dos formas para cambiar la sensibilidad del medidor. Primero por software: el
programa en PBASIC puede cambiarse para ajustar la velocidad. Anteriormente
mencionamos que dividiendo la variable time de la subrutina Delay con la instrucin
PAUSE time /3 con nmeros mayores que 3 acelerarn el indicador y con nmeros
menores a 3 los desacelerarn. Para verdaderamente desacelararlo tambin puede
multiplicarlo por valores con el operador de multiplicacin * , y para ajustes finos existe
el operador */.
Cuando usted conecta capacitores en paralelo, su valor aumenta. Entonces, colocando un
segundo capacitor de 0.01 F en seguida del primero como lo muestra la Figura 7-14 y 715, la capacitancia sera 0.02 F. Al tener dos veces al capacitancia, las mediciones de
descarga sern dos veces mayores para el mismo nivel de luz.
Figura 7-14
Dos capacitores de 0.01
F en paralelo.
Figura 7-15
Circuitos del Medidor de
Luz con dos capacitores
de 0.01 F en paralelo.
CON
CON
4000
100
El programa tambin usa los operadores MIN y MAX para asegurarse que los valores
permanecen dentro de estos lmites antes de usarlos para tomar decisiones. Si time es
mayor que valMax (4000 en este Programa Ejemplo), la frase fija time to valMax =4000
De forma semejante si time es menor que valMin (100 en el Programa Ejemplo), la frase
fija time to valMin= 100
time = time MAX valMax MIN valMin
Antes de que este programa trabaje correctamente, usted tiene que calibrar sus
condiciones de luz como sigue:
9 Verique su circuito fototransistor para asegurarse que solo tiene un capacitor de
0.01 F (marcado con 103)
9 Meta el programa PhototransistorAnalogToBinary.bs2 en el Editor de BASIC
Stamp. Asegurese de agregar un espacio extra despues de s in el mensaje
Encienda la luces
9 Cargue el programaen el BASIC Stamp.
9 Observe al Terminal Debug cuando ustes aplica las condiciones de luz penunbra
y brillo que usted desea verificar, y escriba los valores de tiempo resultantes de
mximo y mnimo.
9 Meta estos valores en el programa con las directivas valMax y valMIn.
9 Ahora, su programa est listo para ejecutarse y verificarse.
9 Cargue el programa modificado en el BASIC Stamp.
9 Verifique para comprobar que las condiciones de luz en penumbra generan el
mensaje Encienda las luces y en condiciones de brillo genera el mensaje
Apague las luces.
CON
CON
4000
100
time
VAR
Word
PAUSE 1000
DO
HIGH 2
PAUSE 100
RCTIME 2, 1, time
time = time MAX valMax MIN valMin
DEBUG HOME, "time = ", DEC5 time
IF time > (valMax - valMin) / 2 THEN
DEBUG CR, "Ecienda las luces "
ELSE
DEBUG CR, "Apague las luces"
ENDIF
LOOP
valMax
"Turn light on "
(valMax - valMin) / 2
Figura 7-16
Oscilaciones
Arriba/Debajo del
Umbral.
valMin
Un remedio para este problema es agregar un segundo umbral, como lo muestra la Figura
7-17. El umbral Enciende la lmpara solamente enciende la lmpara despus tener
mucha obscuridad, y Apaga la lmpara despues que hay mucho brillo. Con este
sistema, la lmpara se enciende despues que time pas del rango de Enciende la
lmpara. La lampara encendida genera brilla, entonces time disminuy ligeramente,
pero como no baj hasta el umbral de Apaga la lmpara nada ha cambiado y la lmpara
sigue encendida. El trmino HISTERESIS se usa para describir este tipo de sistemas, que
tiene dos umbrales de entrada diferentes que afectan su salida junto con una zona de notransicin entre ellas.
valMax
"Turn light on "
(valMax - valMin) / 4 * 3
No transition
(valMax - valMin) / 4
"Turn light off"
valMin
Figura 7-17
Usando Diferentes
Umbrales Alto y Bajo
para Prevenir
Oscilaciones.
Usted puede realizar este sistema de dos umbrales en su cdigo PBASIC modificado la
instruccin IF...THEN..ELSEIF del programa PhototransistorAnalogToBinary.bs2 . Este
es un ejemplo:
IF time > (valMax - valMin) / 4 * 3 THEN
DEBUG CR, "Enciende las lmparas "
ELSEIF time < (valMax - valMin ) / 4 THEN
DEBUG CR, "Apaga las lmparas"
ENDIF
El primer bloque IF...THEN muestra Enciende las lmparas cuando la variable time
almacena un valor que es mayor a del valor del tiempo ms alto (el menor brillo). El
bloque de cdigos ELSEIF slo muestra Apaga las lmparas cuando la variable tiempo
almacena un valor que es menor a del menor valor de tiempo (mximo brillo).
9 Guarde el programa PhototransistorAnalogToBinary.bs2 con el nombre
PhototransistorHysteresis.bs2.
9 Antes de modificar el programa PhototransistorHysteresis.bs2 verifiquelo para
asegurarse que funciona el umbral. Si la iluminacin ha cambiado, repita los
pasos de calibracin (del programa PhototransistorAnalogToBinary.bs2) de
valMin y valMax.
9 Reemplace
la
instruccin
IF...ELSE...ENDIF
del
programa
PhototransistorAnalogToBinary.bs2 que acaba,ps de analizar.
9 Cargue el programa PhototransistorHysteresis.bs2 en el BASIC Stamp.
9 Verifique y compruebe que es obscuro el umbral Enciende las lmparas2 y que
es luminoso el umbral Apague las lmparas
Si usted agrega un circuito LED y modifica el cdigo para que encienda y apague el
LED, pueden suceder algunas situaciones interesantes. Especialmente si usted pone el
LED cerca del fototransistor, usted podra todava ver el comportamiento enc/apag
cuando hay obscuridad incluso con la histeresis programada. Qu tan lejos del
fototransistor debe estr el LED para hacer que los dos umbrales prevengan el
comportamiento enc/apag?
Considerando que los valores de valMin y valMax son iguales en ambos programas, qu
tan lejos debe estar el LED para que trabaje correctamente el programa
PhototransistorAnalogToBinary.bs2 que no se ha modificado?
Schmitt Trigger
Symbol
5V
Logic 1
Schmitt Trigger
Threshold
5V
4.25 V
Logic 1
No Change
1.4 V
Logic 0
0V
0.75 V
0V
Logic 0
En la Actividad #2 del Captulo 5 se mencion que el voltaje de umbran para un pin E/S
del BASIC Stampa es 1.4 V. Cuando un pin de E/S se direcciona como entrada, los
voltajes arriba de 1.4 V aplicados a un pin de E/S resulta en un 1 binario, y los voltajes
debajo de 1.4 V resultan en un 0 binario. El nudo Vo en el circuito que muestra la Figura
7-19 cambia su voltaje en funcin de la luz. El circuito puede conectarse a el pin E/S del
BASIC Stamp, y con poca iluminacin el voltaje pasar abajo del umbral de BASIC
Stamp de 1.4 V, y el registro de entrada del pin de E/S almacenar un 0. En condiciones
de mucha iluminacin, Vo sube arriba de 1.4 V, y el registro de entrada del pin de E/S
almacenar un 1.
Figura 7-19
Circuito del Voltaje de
Salida en Funcin de la
Luz.
+
V
=R
I
La razn de los cambios del voltaje en Vo con niveles de luz lo explica la ley de Ohm .
Que establece que el voltaje en los extremos de un resistor (V en la Figura 7-19) es iual a
la corriente que pasa por el resistor (I), multiplicado por la resistencia del resistor (R).
V=IxR
Recuerde que un fototransistor permite que pase ms corriente a travs de l cuando
recibe ms iluminacin, y menos corriente cuando recibe menos iluminacin.
Pongamosle atencin al ejemplo del circuito de la Figura 7-19 y calculemos cuanta
corriente podra pasar a travs del resistor para crear una cada de voltaje de 1.4 V.
Primero, sabemos que el valor del resistor es 10 K , o 10000 . Tambien sabemos que
la diferencia de potencial sea igual a 1.4 V, entonces necesitamos modificar la ley de
Ohm para encontrar I. Para hacer esto, dividimos ambos miembros de la ecuacin V = I x
R por R, y obtenemos I = V/R. Entonces sustituimos los valores conocidos (V = 1.4 V y
R = 10 K ) y resolvemos para I.
I
=
=
=
=
=
=
VR
1.4 V 10 k
1.4 V 10,000
0.00014 V/
0.00014 A
0.14 mA
=
=
=
=
=
IR
0.28 mA 10 k
0.00028 A 10,000
2.8 A
2.8 V
Con 2.8 V aplicados a un pin E/S, su registro de entrada deber almacenar un 1 ya que
2.8 V est arriba del voltaje de umbral del pin E/S que es 1.4 V.
Su Turno Ms clculos
Verificar el circuito del sensor binario de luz es parecido a verificar el circuito de los
botones push del captulo 3. Cuando el circuito se conecta a un pin E/S, el voltaje puede
estar arriba o debajo de voltaje de umbral de 1.4 V del BASIC Stamp, lo cual resulta en
un 1 o 0 y este lo mostrar la Terminal Debug.
Partes para el Circuito Analgico y el Sensor Binario de Luz
Un fototransistor
Un Resistor de 220 (rojo-rojo-caf)
Un Resistor de 10 K (caf-negro-naranja)
Un Resistor de 2 K (rojo-negro-rojo)
Un Resistor de 4.7 K (amarillo-violeta-rojo)
Un Resistor de 100 K (caf-negro-amarillo)
Dos alambres para puentes
Circuito Analgico y Sensor Binario de Luz
El circuito que muestra la figura 7 se comporta como un botn push controlado por
sombra.
La obscuridad hace que in2 = 0, y la iluminacin hace que in2 = 1. Recuerde que un pin
de E/S direccionado como entrada no afecta al circuito que monitorea porque no
proporciona ni consume corriente. Esto hace al pin E/S y al resitor de 220
esencialmente invisible al circuito. Entonces, el voltaje resultante de los clculos de
nuestro circuito de la seccin anterior ser el mismo con o sin el resistor de 220 y el
pin E/S conectados.
9 Construya el circuito que muestra la Figura 7-20
Figrua 7-20 Diagrama Esquemtico y de Alambrado del Circuito Analgico y Sensor Binario
de Luz.
9 Escoja un resistor con la mejor respuesta a los cambios 1/0 con niveles de baja
iluminacin en su rea de trabajo.
9 Agregue la caracterstica del LED del Captulo 3, Actividad #3 para el circuito
de umbral del fototransistor.
9 Ponga algo entre el LED y el fototransistor para que el fototransistor no pueda
ver el LED. Esto elimina la posibilidad de cruce entre los dos dispositivos.
Modifique el programa para que haga que la luz parpadee cuando una sombre se proyecta
sobre el fototransistor.
Yellow
Figura 7-21
Esquemtico del LED en
un Circuito de tiempo RC
Sensible a la Luz
Un LED amarilla
Un LED verde
Un LED rojo
Un Resistor de 220 (rojo-rojo-caf)
Un alambre para puente
Circuito del Sensor de Luz LED
Una diferencia muy grande entre el LED y el fototransistor es que el LED conduce
mucho menos corriente para la misma cantidad de luz, esto hace que con luz muy
brillante el LED conduce suficiente corriente para descargar el capacitor rpidamente
pero lo suficiente para la medicn de RCTIME. Recuerde que el mximo tiempo de
medicin que RCTIME puede medir es 65535 x 2 us = 131 ms. Entonces para
mediciones buenas de descarga de RC con el BASIC Stamp se requiere un capacitor
mucho muy pequeo. De hecho, el circuito trabaja mejor sin capacitor externo. El LED
tiene una capacitancia interna muy pequea, llamada capacitancia de unin, y los clips
de metal en los que coloca componentes en su tablilla tambin tienen capacitancia.
Pensando, un capacitor son dos placas separadas por aislante llamado dielctrico.
Entonces las placas de metal dentro de su tablilla separadas por plstico y aire forman un
capacitor. La combinacin de la capacitancia de unin del LED, y la capacitancia de los
clips de su tablilla hacen que usted pueda usar el LED sin ningn capacitor externo, como
lo muestra la Figura 7-22.
Construya el circuito mostrado en la Figura 7-22 y 7-23, usando el LED amarillo.
Asegrese de observar la polaridad mostrada en la figuras!
Figura 7-22
Esquemtico del Circuito
LED RCTIME
Figura 7-23
Diagrama de alambrado
del Circuito LED RC
TIME
El circuito LED que sensa la luz puede verificarse en una habitacin bien iluminada o en
exteriores durante el da. En habitaciones con poca iluminacin los tiempos medidos no
exceden a 65535 y en este caso RCTIME almacenar cero en la variable result. Para la
mayora de situaciones, el cdigo es the mismo de la Actividad #1, del programa
TestPhototransistor.bs2.
Si est en una habitacin bien iluminada trate esto:
9 Ejecute el programama TestPhototransistor.bs2 de la Actividad #1.
9 Dirija el LED a la fuente de luz ms brillante volteando su tablilla hacia la luz.
9 Gradualmente gire la tablilla de la fuente de luz ms brillante de la habitacin, el
valor que muestra la Terminal Debug deber ser mayor conforme la luz
disminuye.
En la Figura 7-2, el verde esta en la mitad del espectro y el rojo a la derecha. Si usted baja
la versin PDF a color de este libro de www.parallax.com usted puede colocar el verde y
el rojo en su pantalla y registrar las mediciones de luz del espectro de colores. Entonces,
al comparar las mediones ms pequeas de cada LED, y usted puede detectar si el LED
est enfrente del color verde o rojo de la pantalla.
9 Empiece con el circuito detector de luz con el LED verde de la Figura 7-22 y la
Figura 7-23.
9 Descargue la versin PDF de Qu es un Microcontrolador? de
www.parallax.com/go/WAM.
9 Coloque el espectro de colores de la Figura 7-2 en su monitor y agrande la
imagen.
9 Con el programa TestPhototransistor.bse muestre las mediciones en la Terminal
Debug sostenga su tablilla para que el domo del LED verde apunte directamente
en el monitor sobre el espectro de colores. Para mejores resultados el domo del
LED casi debe tocar el monitor, y los niveles de luz de su habitacin deben ser
mnimos.
9 Dislice el LED verde lentamente a lo largo de la barra del espectro que muestra
el monitor.y anote que color reporta las mediciones ms pequeas.
9 Repite esto con el LED rojo. Reporto el LED rojo los valores de medicin ms
bajos cuando estaba sobre el color rojo del monitor, y el LED verde report sus
mediciones ms bajas cuando estaba sobre el color verde del monitor?
Las mediciones ms bajas del LED rojo deben ocurrir cuando est sobre el color rojo del
monitor, y las mediciones ms bajas del LED verde deben ocurrir cuando estn sobre el
color verde del monitor.
RESUMEN
Este captulo introdujo los sensores de luz y describi como se usan en una variedad de
productos. Diferentes sensores de luz detectan diferentes clases de luz, y sus hojas de
datos describen su sensibilidad en trminos de longitud de onda. Este captulo se enfoc
en el fototransistor, un dispositivo que controla la corriente de colector a emisor por la
cantidad de luz que incide en su base. Un fototransistor conduce porque luz puede
controlar la cantidad de corriente, la tcnica para medir la posicin de una perilla de un
potenciometro del captulo 5 del circuito RC, tambin trabaja para medir la luz que incide
sobre el fototransistor. El tiempo que requiere un capacitor para perder su carga a travs
del fototransistor resulta en la medicin RCTIME que proporciona un nmero que
corresponde a la brillantez de la luz incidente en el fototransistor.
La Adquisicin de Datos por almacenamiento de mediciones de luz en el mdulo de la
memoria de programa EEPROM del BASIC Stamp, se introdujo con las instrucciones
WRITE y READ que se usaron para almacenar valores y retirar valores del mdulo
Preguntas
Soluciones
E2. Los cambios requeridos son muy similares a los que explicamos en la pgina
202.
DO
HIGH 5
PAUSE 100
RCTIME 5, 1, time
DEBUG HOME, "time =
LOOP
E3. Para ir en la direccin opuesta, los patrones deben mostrarse en orden inverso.
Esto puede hacerse conmutando los patrones dentro de la instruccin LOOKUP,
o invirtiendo el orden de obtenerlos de look up. Estas son dos soluciones hechas
con subrutinas alternadas Update-Display.
Solucion 1
Solucion 2
Update_Display:
IF index = 6 THEN index = 0
'
BAFG.CDE
LOOKUP index, [ %01000000,
%10000000,
%00000100,
%00000010,
%00000001,
%00100000 ],
OUTH
index = index + 1
RETURN
P1. El fototransistor de la Figura 7-4, el esquemtico del servo para su tablilla del
Captulo 4, Actividad #1.
' Que es un Microcontrolador - Ch07Prj01_Blinds_Control.bs2
' Control de la Posicion del servo con luz.
' {$STAMP BS2}
' {$PBASIC 2.5}
valMax
valMin
time
CON
CON
VAR
4000
100
Word
PAUSE 1000
DO
HIGH 2
PAUSE 1
RCTIME 2, 1, time
DEBUG HOME, "time =
' Modifica
' Agrega
' Modifica
' Agrega
CON
CON
4000
100
time
VAR
Word
PAUSE 1000
DO
HIGH 2
PAUSE 1
RCTIME 2, 1, time
DEBUG HOME, "time =
' Modifica
' Agrega
' Modifica
' Agrega
En esta actividad usted experimentar mandando una variedad de seales a una comn,
pequea y barata bocina lllamada bocina piezoelctrica. A una bocina piezoelctrica
comunmente se le llama bocina piezo o zumbador piezo. Su smbolo esquemtico y su
dibujo lo muestra la Figura 8-1.
Figura 8-1
Bocina Piezoelctrica.
smbolo esquemtico.
Dibujo
Vin
Vss
X3
P9
Vss
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Figura 8-2
Circuito de la bocina
piezoelctrica, Diagrama
esquemtico y de
alambrado.
Cuando la cuerda de una guitarra vibra, causa cambios en la presin del aire. Estos
cambios en la presin del aire nuestro oido los detecta como un tono. Con cambios
rpidos en la presin del aire es mayor el tono, y para cambios lentos en la presin del
aire, menor es el tono. El elemento dentro de la caja de plstico de la bocina
piezoelctrica se llama elemento piezoelctrico. Cuando las seales high/low se aplican a
la terminal positiva de la bocina, el elemento piezoelctrico vibra, y genera cambios en la
presin del aire como lo hace la cuerda de la bocina. Y como la cuerda de la bocina, su
oido detecta los cambios en la presin del aire que genera la bocina piezoelctrica, y
suena tpicamente como un beep o un tono.
Programando el Control de la Bocina
Y como la mayora de las otras instrucciones usadas en este libro, Pin es un valor que
usted puede usar para escoger que pin del BASIC Stamp usar. El argumento Duration
es un valor que le dice a la instruccin FRECOUT que tan largo, en milisengundos, es el
tono que deber tocar. El argumento Freq1, se usa para fijar en hertz la frecuencia del
tono, , en hertz . Hay un argumento opcional Freq2 que puede usarse para tocar dos tonos
diferentes al mismo tiempo.
As se manda un tono al pin E/S P9 que dura 1.5 segundos y tiene una frecuencia de 2
kHz:
FREQOUT 9, 1500, 2000
Este Programa Ejemplo manda un tono de 2 kHz a la bocina en el pin E/S P9 durante 1.5
segundos. Usted puede usar la Terminal Debug para ver cuando la bocina emite beeps y
cuando se detiene.
9 Meta y corra el programa TestPiezoWithFreqout.bs2
9 Verifique que la bocina hacer un tono claramente audible durante el tiempo que
la Terminal Debug muestrael mensaje: Tone sending (Mandando Tono)
' Que es un Microcontroladirr - TestPiezoWithFreqout.bs2
' Manda un tono a la bocina piezo usando la instruccin FREQOUT.
'{$STAMP BS2}
'{$PBASIC 2.5}
PAUSE 1000
DEBUG "Mandando Tono...", CR
FREQOUT 9, 1500, 2000
DEBUG "Hecho el Tono ."
9
9
9
9
VAR
VAR
Word
Word
PAUSE 1000
DEBUG "Alarm...", CR
PAUSE 100
FREQOUT 9, 500, 1500
PAUSE 500
FREQOUT 9, 500, 1500
PAUSE 500
FREQOUT 9, 500, 1500
PAUSE 500
FREQOUT 9, 500, 1500
PAUSE 500
DEBUG "Robot reply...", CR
PAUSE 100
FREQOUT 9, 100, 2800
FREQOUT 9, 200, 2400
FREQOUT 9, 140, 4200
FREQOUT 9, 30, 2000
PAUSE 500
DEBUG "Hyperspace...", CR
PAUSE 100
FOR duration = 15 TO 1 STEP 1
FOR frequency = 2000 TO 2500 STEP 20
FREQOUT 9, duration, frequency
NEXT
NEXT
DEBUG "Done", CR
END
Funcionamiento de ActionTones.bs2
La rutina Alarma suena como un reloj despertador. Esta rutina toca un tono con una
frecuencia fija de 1.5 kHz que dura 1.5 segundos con retardos fijos entre tonos de 0.5
segundos. La rutina Robot reply usa varias frecuencia de duracin corta.
VAR
VAR
Word
Word
PAUSE 1000
DEBUG "Duration
"--------
Frequency", CR,
---------", CR
Usted puede tocar dos frecuencias diferentes al mismo tiempo. Recuerde la sintaxis de la
instruccin FREQOUT de la Actividad #1.
FREQOUT Pin, Duration, Freq1 {, Freq2}
Usted puede usar el argumento opcional Freq2 para tocar dos frecuencias con una sola
instruccin FREQOUT. Por ejemplo, usted puede tocar 2 kHz y 3 kHz de la siguiente
forma:
FREQOUT 9, 1000, 2000, 3000
Este Programa Ejemplo demuestra la diferencia en tono cuando toc juntas 2 kHz y 3
kHz. Tambin demuestra un fenomeno interesante que ocurre cuando usted suma dos
ondas de sonida que estn muy cerca en frecuencia. Cuando usted toca 2000 Hz y 2001
Hz al mismo tiempo el tono entra y sale una vez cada segundo (a un frecuencia de 1 Hz).
Si usted toca 2000 Hz y 2002 Hz, el tono entra y sale dos veces por segundo (2Hz) y as
sucesivamente.
Batido es cuando dos tonos muy cercanos en frecuencia se tocan juntan originando que el
tono que usted oye entra y salga. La frecuencia de ese desvanecimiento es la diferencia
entre las dos frecuencias. Si la diferencia es 1 Hz, el tono entra y sale a 1 Hz. Si la
diferencia es 2 Hz, el tono entra y sale a 2 Hz.
Las variaciones en la presin del aire que hace la bocina piezoelctrica se llaman ondas de
sonid Cuando el tono es ms grabe, las variaciones en la presin del aire causadas por las
dos frecuencias se agregan una a otra (a esto se le llama superposicin). Cuando el tono
esta en lo ms quieto , las variaciones en la presin del aire se cancelan unas a otras (a
esto se se llama interferencia).
Las teclas y sus notas correspondientes estn marcadas C6 hasta C8. Estas teclas estn
separadas en dos grupos de 12, 7 son teclas blancas y 5 son teclas negras. La secuencia de
notas se repite en si misma cada 12 teclas. Notas de la misma letra estn relacionadas con
la frecuencia que se dobla cada octava mayor. Por ejemplo, C7 es dos veces la frecuencia
de C6, y C8 es el doble de C7. De igual forma, si va una octava hacia abajo, la frecuencia
ser la mitad del valor, por ejemplo, A6 es la mitad de frecuencia de A7.
Si usted ha escucha a un cantante practicar sus notas cantando el Solfeo, Do Re Mi Fa
Sol La Si Do, el cantante est intentando igualar la notas que usted obtiene de golpear
las teclas blancas del teclado de un piado. Estas teclas blancas se llaman teclas naturales,
y el nombre octava se relaciona al doblar la frecuencia con cada ocho teclas naturales. La
tecla negra del piano se le llama Bemol o Sostenido. Por ejemplo la tecla negra entre C y
D se llama C Bemol (C#)o D Sostenido El nombre x o y depende de la pieza particular
que se est tocado, y las reglas de esto pertenecen a las lecciones de msica.
Programando Notas Musicales
usadas al tocar msica usando otro instrumento musical. Estas reglas se aplican a los
mismos elementos que se usaron para hacer efectos de sonido: frecuencia, duracin y
pausa. El siguiente Programa Ejemplo toca algunas de las frecuencias de las notas
musicales en la bocina piezo cada una con una duracin de medio segundo.
Programa Ejemplo: DoReMiFaSolLaTiDo.bs2
Tone
Note
FREQOUT 9,500,1047
' C6
FREQOUT 9,500,1175
' D6
FREQOUT 9,500,1319
' E6
FREQOUT 9,500,1396
' F6
FREQOUT 9,500,1568
' G6
FREQOUT 9,500,1760
' A6
FREQOUT 9,500,1976
' B6
FREQOUT 9,500,2093
' C7
END
Use las frecuencias mostradas en la Figura 8-3 para agregar las cinco notas
bemol/sostenido al programa DoReMiFaSolLaTiDo.bs2. Modifique su programa para
que toque la siguiente octava superior. Sugerencia: Haga sus operaciones y use la
operacin * 2 depus de cada argumento Freq1. Por ejemplo, FREQOUT 9, 500, 1175 *
2 esto multiplicara D6 por 2 y le dar a usted D7, que es la nota D en la sptima octava.
Este es un ejemplo para usar la directiva DATA para almacenar los caracteres que
corresponden a las notas musicales.
Notes DATA "C","C","G","G","A","A","G"
Usted puede usar la instruccin READ para accesar estos caracteres. La letra C se
localiza en la direccin Notes + 0, la segunda letra C se localiza en Notes + 1.
Entonces, hay una letra G en Notas + 2, y as sucesivamente. Por ejemplo si usted
desea cargar la ltima letra G en una variable byte llamada noteLetter, use la
instruccin:
READ Notes + 6, noteLetter
Usted tambin puede almacenar listas de nmeros usando la directiva DATA. Los valores
de Frecuencia y duracin que usa el BASIC Stamp para las notas musicales necesitan
estar almacenadas en variables tamao word porque son generalmente mayores a 255.
As es como se hace con la directiva DATA.
Frequencies DATA Word 2093, Word 2093, Word 3136, Word 3136,
Word 3520, Word 3520, Word 3136
Como cada uno de estos valores ocupa dos bytes, para accesarlos con la instruccin
READ es diferente a accesar caracteres. El primer 2093 est en Frequencies + 0, pero el
segundo 2093 se localiza en Frequencies + 2. El primer 3136 se localiza en Frecuencies
+4, y el segundo 3136 se localiza en Frequencies + 6.
Los valores en la directiva DATA Frequencies corresponde con notas musicales in la
directiva Notes DATA directive.
Este es un bucle FOR...NEXT que coloca Notes DATA en una variable llamada
noteLetter, luego coloca Frequencies DATA en una variable llamada noteFreq.
FOR index = 0 to 6
Este programa ejemplo demuestra como usar la directiva DATA para almacenar listas y
como usar la instruccin READ para accesar los valores de las listas.
9 Meta y ejecute el programa TwinkleTwinkle.bs2
9 Verifique que el sonido de las notas se parecea la cancin Twinkle Twinkle
Little Star.
9 Use la Terminal Debug para verificar que trabaja como se espera.
' Que es un Microcontrolador? - TwinkleTwinkle.bs2
'Toca las primeras siete notas de la cancin Twinkle Twinkle Little Star.
'{$STAMP BS2}
'{$PBASIC 2.5}
Notes
DATA
"C","C","G","G","A","A","G"
Frequencies
DATA
Durations
DATA
index
noteLetter
noteFreq
noteDuration
VAR
VAR
VAR
VAR
Nib
Byte
Word
Word
PAUSE 1000
DEBUG
"Note
"----
Duration
--------
Frequency", CR,
---------", CR
FOR index = 0 TO 6
READ Notes + index, noteLetter
DEBUG "
", noteLetter
READ Durations + (index * 2), Word noteDuration
DEBUG "
", DEC4 noteDuration
READ Frequencies + (index * 2), Word noteFreq
DEBUG "
", DEC4 noteFreq, CR
FREQOUT 9, noteDuration, noteFreq
NEXT
END
Este programa toc las primeras siete notas de Twinkle Twinkle Little Star. Las slabas
son: Twin-kle twin-kle lit-tle star La siguiente frase de la cancin dice How I wond-er
what yor are y sus notas son F, F, E, E, D, D, C. E igual que la primera frase, se sostine
dos veces que las otras notas. Para agregar esta frase a la cancin del programa
TwinkleTwinkle.bs2, usted necesita expander apropiadamente cada directiva DATA. No
olvide cambiar el bucle FOR...NEXT para que vaya de 0 a 13 en lugar de 0 a 6.
9 Modifique el programa TwinkleTwinkle.bs2 para que toque las dos primeras
frases de la cancin en lugar de solamente la primera frase.
Una pieza se puede tocar en un tempo que hace que una nota entera dure cuatro segundo,
en otra pieza la nota entera dura dos segundos y otras pueden tener otra duracin.
Descansos son los tiempos entre notas que no se tocan tonos. La duracin de los
descansos tambien se miden en entero, mitad, cuarto, octavo, dieciseisavo y treinta y
doseavos.
Ms de Musica con microcontrolador. Despus de completar esta actividad, usted estar
listo para aprender como escribir cdigos musicales en PBASIC a partir de las hojas de
msica. Vea el tutorial Tocando msica de partitura con la bocina piezo, y su primer video
en www.parallax.com/go/WAM.
Usted puede escribir programas que almacenen dos veces ms msica en su BASIC
Stamp usando bytes en lugar de words en sus directivas DATA. Usted puede tambin
modificar su programa para hacer fcil de leer las notas musicales usando una de las
convenciones ms comunes para las notas y su duracin. Esta actuvidad empezar
presentado como almacenar informacin musical en una forma que relacione los
conceptos de notas, duracin y descansos o silencios. Tambien se presentar el Tempo, y
lo analizar en la siguiente actividad.
Esta es una de las directivas DATA que almacena notas musicales y duraciones para el
siguiente Programa Ejemplo. Cuando se toque se parecer a la cancin Martinillo. Solo
se almacenarn los caracteres de las notas en la directiva Notes DATA porque las
instrucciones LOOKUP y LOOKDOWN se usarn para acoplar letras con sus
correspondientes frecuencias.
Notes
DATA
Durations
DATA
WholeNote
CON
"C","D","E","C","C","D","E","C","E","F",
"G","E","F","G","Q"
4,
2,
4,
4,
4,
4,
4,
2
4,
4,
4,
4,
4,
4,
2000
hay prefijo Word en la directiva DATA. Comparado con almacenar valores en terminos
de milisegundos, estos nmeros se relacionan ms con la partitura.
Esta es una lista de lo que significa cada duracin.
1 nota entera
2 media nota
4 cuarto de nota
8 octavo de nota
16 dieciseisavo de nota
32 treintaydosavo de nota
Despus que se lee cada valor de la directiva Durations DATA, se divide entre el valor de
WholeNote para obtener la Duration usada en la instruccin FREQOUT. La cantidad de
tiempo que dura cada nota depende del tempo de la cancin. Un tempo rpido significa
que cada nota dura menos tiempo, mientras que un tempo lento significa que cada nota
dura ms tiempo. Como todas las duraciones de las notas son fracciones de una nota
entera, usted puede usar la duracin de la nota entera para fijar el tempo.
Qu significa Q en Notes DATA? Q se usa para salir y DO UNTIL...LOOP
verifica Q cada vez en el bucle y lo repetir hasta que lo encuentra.
Cmo toco un silencio? Usted puede insertar un silencio entre notas insertando una p. La
seccin Su Turno tiene las primeras pocas notas de la 5. Sinfona de Beethoven que
tiene un silencio.
Cmo toco notas bemol/sostenido? El programa NotesAndDurations.bs2 tiene valores en
las tablas lookup para notas bemol/sostenido. Cuando usted usa con letra minscula, usted
toca la nota bemol. Por ejemplo, si usted desea tocar B-sostenido, use b en lugar de B.
Recuerde que esta tiene la misma frecuencia que A-bemol.
DATA
"C","D","E","C","C","D","E","C","E","F",
"G","E","F","G","Q"
Durations
DATA
WholeNote
CON
2000
index
offset
VAR
VAR
Byte
Nib
noteLetter
noteFreq
noteDuration
VAR
VAR
VAR
Byte
Word
Word
4,
2,
4,
4,
4,
4,
4,
2
4,
4,
4,
4,
4,
4,
LOOKUP offset,
"A",
"D",
"G",
"b",
"e",
"a",
"B",
"E",
"P",
"C",
"F",
"Q"
"d",
"g",
], offset
Funcionamiento de NotesAndDurations.bs2
Las directivas Notes y Durations DATA se analizaron antes del programa. Estas
directivas combinadas con la constante WholeNote se usaron para almacenar todos los
datos musicales usados por el programa.
Abajo se muestran las declaraciones para las cinco variables usadas en el programa.
Incluso aunque ya no usa el bucle FOR...NEXT para accesar los datos, ah todava tiene
que estar una variable (index) que mantiene el ajuste por el cual entra DATA que est
siendo leida por Notes y Durations. La variable offset se usa con las instrucciones
LOOKUP y LOOKDOWN para seleccionar un valor particular. La variable noteLetter
almacena un carcter que accesa la instruccin READ. Las instrucciones LOOKUP u
LOOPDOWN se usan para convertir este carcter en un valor de frecuencia. Este valor se
almacena en la variable noteFreq y se usa como argumento Freq1 de la instrucci
FREQOUT. La variable noteDuration se usa en la instruccin READ para recibir un
valor de Durations DATA. Y tambin se usa para calcular el argumento Duration para la
instruccin FREQOUT.
index
offset
VAR
VAR
Byte
Nib
noteLetter
noteFreq
noteDuration
VAR
VAR
VAR
Byte
Word
Word
LOOKUP offset,
"A",
"D",
"G",
"b",
"e",
"a",
"B",
"E",
"P",
"C", "d",
"F", "g",
"Q" ], offset
Cada vez que pasa por el bucle principal, el valor de index se incrementa por uno.
Cuando el bucle principal regresa al principio, la primer accin que el programa hace es
leer la siguiente nota , usando la variable index.
index = index + 1
LOOP
La longitud de tiempo que cada nota pierde se relaciona con el tempo. Usted puede
cambiar el tempo ajustando la constante WholeNote. Si usted la incrementa a 2250, el
tempo decrecer, y la cancin se reproducir ms despacio. Si usted disminuye la
constante a 1750, el tempo aumentar y la cancin se reproducir ms rpido.
9 Guarde
el
programa
NotesAndDurations.bs2
con
el
nombre
NotesAndDurationsYourTurn.bs2
9 Modifique el tempo del programa NotesAndDurationsYourTurn.bs2 ajustando
el valor de WholeNote. Pruebe valores de 1500, 1750, 2000 y 2250.
9 Ejecute el programa despus de cada modificacin, y elija cual se escucha mejor.
Meter los datos musicales es mucho ms fcil cuando todo lo que tiene que hacer es
grabar notas y duraciones. Estas son las primeras ocho notas de la Quinta Sinfona de
Beethoven.
Notes
DATA "G","G","G","e","P","F","F","F","D","Q"
Durations DATA
WholeNote CON
8, 8,
2000
8,
2,
8,
8,
8,
8,
The termino punteadas se refiere a un punto usado en la partitura para indicar que una
nota deber tocarse 1 veces ms de su duracin normal. Por ejemplo, una nota de un
cuarto punteada deber durar la duracin de una nota de un cuarto ms un octavo de nota.
Una nota de un medio punteada dura una mitad mas un cuarto de duracin.
Usted puede agregar una tabla de datos que almacene notas punteadas s sin puntear. En
este ejemplo, un cero significa una nota sin puntear, y un uno una nota punteada.
Dots
DATA
0,
0,
0,
0,
0,
0,
0,
1,
0,
0
0,
1,
0,
0,
0,
0,
Los programas que reproducen msica tpicamente expresan el tempo de una cancin en
batidos por minuto. Esto es lo mismo que decir notas de un cuarto por minuto.
BeatsPerMin
CON
200
La Figura 8-4 es una repeticin de la Figura 8-3. Esta muestra las 6ta. Y 7ta. Octavas del
teclado de un piano. Estas son dos octavas que suenan con claridad cuando las toca la
bocinapiezo. Este es un ejemplo de la directiva DATA que usted usar en la seccin Su
Turno para tocar ms de una octava usando la directiva NotesDATA.
Octaves
DATA
6,
6,
7,
6,
6,
6
6,
6,
6,
6,
6,
6,
7,
6,
Este Programa Ejemlo toca las primeras notas de For Hes a Jolly Good Fellow.
Todas las notas pertenecen a la misma (7.) octava, pero algunas de las notas estn
punteadas. En la seccin Su Turno, usted intentar un ejemplo que usa notas se usa notas
de ms de una octava y notas punteadas.
9 Meta y corra el programa MusicWithMoreFeatures.bs2
9 Cuente las notas y vea si usted puede oir las notas punteadas (con 1 duracin)9 Tambin escuche las notas de la 7. Octava. Trate de cambiar una de estas notas
a la 6. Octava. El cambio en el sonido de la msica es hermosamente drstico.
' Que es un Microcontrolador - MusicWithMoreFeatures.bs2
' Toca el comienzo de He's a Jolly Good Fellow.
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Program Running!"
Notes
DATA
"C","E","E","E","D","E","F","E","E","D","D",
"D","C","D","E","C","Q"
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7
4, 2, 4, 4, 4, 4, 2, 2, 4, 2, 4,
4, 4, 4, 2, 2
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 0
Octaves
DATA
Durations
DATA
Dots
DATA
BeatsPerMin
CON
320
index
offset
VAR
VAR
Byte
Nib
noteLetter
noteFreq
noteDuration
noteOctave
noteDot
VAR
VAR
VAR
VAR
VAR
Byte
Word
Word
Nib
Bit
wholeNote
VAR
Word
wholeNote = 60000 / BeatsPerMin * 4
DO UNTIL noteLetter = "Q"
READ Notes + index, noteLetter
LOOKDOWN noteLetter,
LOOKUP offset,
[ "C",
"F",
"b",
"d",
"g",
"B",
"D",
"G",
"P",
"e",
"a",
"Q"
"E",
"A",
], offset
Funcionamiento de MusicWithMoreFeatures.bs2
Abajo estn los datos musicales de la cancin completa. Para cada nota en la directiva
NotesData, le corresponde una entrada en Octaves, Durations, y la directiva Dost DATA.
Por ejemplo, la primera nota es una nota C de la 7. Octava, es un cuarto de nota y no est
punteada. Este es otro ejemplo, el segundo de la ltima nota (no incluye salida) es una
nota E, de la 7. Octava. Es mitad de nota y no esta punteada. Tambin hay una constante
BeatPerMin que fija el tempo de la cancin.
Notes
DATA
Octaves
DATA
Durations
DATA
Dots
DATA
BeatsPerMin
CON
"C","E","E","E","D","E","F","E","E","D","D",
"D","C","D","E","C","Q"
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7
4, 2, 4, 4, 4, 4, 2, 2, 4, 2, 4,
4, 4, 4, 2, 2
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 0
320
En el Programa Ejemplo anterior, WholeNote era una constante. Este tiempo, es una
variable que no retiene la duracin de una nota completa en milisegundos. Despus de
calcular este valor, WholeNote se usar para determinar todas las duraciones de las otras
notas, como se hizo en el programa anterior. Las variables index, offset, noteLetter, y
noteDuration tambin se usaron en la misma manera como se usaron en el programa
anterior.
La variable noteFreq se maneja un poquito diferente ya que ahora tiene que ajustarse
dependiendo de la octava en que se toca la nota. Se han agrefado las variables noteOctave
y noteDot para manejar la octava y las caractersticas punteadas.
wholeNote
VAR
Word
index
offset
VAR
VAR
Byte
Nib
noteLetter
noteFreq
noteDuration
noteOctave
noteDot
VAR
VAR
VAR
VAR
VAR
Byte
Word
Word
Nib
Bit
[ "C",
"F",
"b",
"d",
"g",
"B",
"D",
"G",
"P",
"e",
"a",
"Q"
"E",
"A",
], offset
Ahora que las octavas estn el el mix, ha cambiado la parte de el cdigo que calcul la
frecuencia de la nota. La Tabla de Valores de la instruccin LOOKUP contiene
frecuencias de las notas desde la 8. Octava. Estos valores pueden dividirse entre 1 si
usted desea tocar notas de la 8. Octava,
Por 2 si usted desea tocar notas en la 7. Octava, por 4 si usted desea tocar notas en la 6.
Octava, y por 8 si usted desea tocar notas en la 5. Octava. La divisi se efectua en
seguida.
Todo lo que hace la instruccin LOOKUP es colocar una nota de la 8. Octava en la
variable noteFreq.
LOOKUP offset,
Esta es la forma en que la variable noteFreq se ajusta para la octava correcta. Primero, la
instruccin READ dimensiona el valor almacenado de la octava en Octaves DATA.
Este pudiera ser un valor entre 5 y 8.
Ahora, noteOctava es un valor que puede usarse como un exponente de 2, pero como
elevamos a la potencia 2 en PBASIC? Una solucin es usando el operador DCD. DCD 0
es 1, DCD1 es 2, DCD 2 es 4 y DCD 3 es 8. Al dividir noteFreq por DCDnoteOctava
significa que usted est dividiendo por 1, 2, 4, y 8, el cual divide noteFreq bajandolo al
valor correcto. El resultado final es que noteFreq se fija en la octava correcta. Usted usar
la Terminal Debug en la seccin Su Turno para poner ms atencin en su
funcionamiento.
NoteFreq = noteFreq / (DCD noteOctave)
Como puedo ser experto en usar el operador DCD? Manteniendose aprendiendo y
practicando. Cada vez que usted vea una nueva: instruccin, operador, o palabra clave que
se usa en un ejemplo consulte el Manual BASIC Stamp. Lalo y trate de usarlo en un
programa de su propio diseo.
Adquiera el hbito de de leer peridicamente el Manual BASIC Stamp y trate de reducir los
Programas Ejemplo. Esta es la mejor forma de familiarizarse con las diferentes
instrucciones y operadores y su funcionamiento. Haciendo estas actividades, usted
desarrollara el hbito de siempre agregarlos a la lista de herramientas de programacin que
usted puede usar para resolver problemas.
Las primeras dos lneas del cdigo para determinar la duracin de la nota son casi iguales
a las del cdigo del Programa Ejemplo anterior. Ahora, sin embargo, una nota pudiera
estar punteada y esto significa que la duracin tendra que multiplicarse por 1.5. Se usa
un instruccin READ para accesar valores en la EEPROM con la directiv Dots DATE. La
frase IF...THEN se usa para multiplicar por 3 y dividir por 2 siempre y cuando el valor de
la variable noteDot es 1.
READ Durations + index, noteDuration
noteDuration = WholeNote / noteDuration
READ Dots + index, noteDot
IF noteDot = 1 THEN noteDuration = noteDuration * 3 / 2
DATA
Octaves
DATA
Durations
DATA
Dots
DATA
BeatsPerMin
CON
"C","C","A","G","E","G","D","P","C","C","A",
"G","E","G","Q"
6, 7, 6, 6, 6, 6, 6, 6, 6, 7, 6,
6, 6, 6
2, 4, 4, 4, 4, 2, 2, 4, 2, 4, 4,
4, 4, 2
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 1
240
Las dos notas de la 7. Octava son esenciales para hacer que la cancin suene
correctamente. Es interesante escuchar que sucede si estos 7 valores se cambian a 6.
9 Trate de cambiar los dos valores 7 en la directiva Octaves DATA, para que sean
6.
9 Recuerde que este cambio har que Take Me out to the Ball suene feo.
9 Ejecute el programa y escuche el efecto de las octavas incorrectas de la cancin.
9 Cambie la directiva Octaves DATA a su estado original.
9 Ejecute el programa otra vez y escuche para ver si el sonido suena otra vez
correctamente.
Este formato para almacnar datos nusicales se llama RTTTL {} que es Ringing Tone
Text Transfer Language {} Lenguaje de Transferencia de Texto de Tonos Telfonicos.
La gran caracterstica de los archivos RTTTL fue que eran ampliamente compartidos a
traves de WWW. Alguno sitios tenan archivos RTTL disponibles para descargarlos
libremente. Estos eran tambin programas de software libre que se podan usar para
componer y emular archivos y despus descargarlos en su telfono celular.
Las especificaciones de RTTTL todava se publican en lnea. El anexo C resume como se
almacenan notas, duraciones, pausas, tempo y notas punteadas con archivos RTTTL.
Esta actividad presenta algunas tcnicas de programacin con PBASIC que puede usar
para reconocer diferentes elementos de texto. La habilidad para reconocer diferentes
caracteres o grupos de caracteres tomar acciones basadas en lo que contienen esos
caracteres es extraordinariamente til. De hecho, es la clave para convertir formato
RTTTL (como la Quinta de Beethoven arriba mostrada) en msica. Al final de esta
actividad, hay un Programa de Aplicacin que usted puede usar para tocar tonos con
formato RTTTL.
SELECT expression
CASE condition(s)
statement(s)
{ CASE ELSE
statement(s) }
ENDSELECT
Usted puede intentar los dos siguiente Programas Ejemplo para ver como funciona
SELECT...CASE. El pograma SelectCaseWithValues.bs2 toma valores numricos que
usted mete en la Terminal Debug y le indica el tamao mnimo de la variable que usted
necesitar para mantener ese valor. El programa SelectCaseWithCharacters.bs2 le dice a
usted en la Terminal Debug si usted meti una letra mayscula, minscula, un dgito o un
signo de puntuacin.
Recuerde usar la ventana de Transmisin en la Terminal Debug para mandar los
caracteres que usted escribe en el BASIC Stamp. La Figura 8-5 muestra la ventanas de
Transmisin y Recepcin.
Windowpanes
Transmit
Receive
Figura 8-5
Mandando
Mensajes al BASIC
Stamp
Haga click en la
ventana Transmitir
(arriba) para meter
el valor o carcter
que usted desea
transmitir a el
BASIC Stamp..
9
9
9
9
Qu sucede si usted mete un nmero mayor que 65535? Si usted mete el nmere 65536,
el BASIC Stamp almacenar el nmero 0. Si usted mete el nmero 65537, el BASIC
Stamp almacenar el nmero 1, y as sucesivamente. Cuando un nmero es demasiado
grande para la variable en la que cabe, hay un desbordamiento (overflow).
Use la Tabla 8-1 para verificar que el Programa Ejemplo hace las decisiones correctas
respecto al tamao de los nmeros que introdujo en la Terminal Debug.
Table 8-1: Variable Types and Values They Can Store
Tipo de Variables
Bit
Rango de Valores
0a1
Nib
0 a 15
Byte
0 a 255
Word
0 a 65535
VAR
Word
CASE 2 TO 15
DEBUG "Nib (Nibble)", CR
PAUSE 200
CASE 16 TO 255
DEBUG "Byte", CR
PAUSE 300
CASE 256 TO 65535
DEBUG "Word", CR
PAUSE 400
ENDSELECT
DEBUG CR, "Meta otro valor: "
LOOP
Se declar una variable tamao word para mantener los valores metidos en la Terminal
Debug.
value
VAR
Word
DEC
value
La frase SELECT escoge la variable value como uno de los casos a evaluar.
SELECT value
2 to 15
DEBUG NIB (Nibble), CR
PAUSE 200
Cuando se han hecho todos los casos, la palabra clave ENDSELECT se usa para
completar la instruccin SELECT...CASE.
ENDSELECT
Este Programa Ejemplo evalua cada caracterque usted mete en la ventana Transmisin de
la Terminal Debug. El programa puede reconocer caracteres maysculas y minsculas,
digitos y algunos signos de puntuacin. Si usted mete un carcter que el programa no
reconoce, le dir que lo intente otra ez (meta un carcter diferente).
9 Meta y ejecute el programa SelectCaseWithCharacters.bs2.
9 Asegurese que no est marcada la ventanita Echo Off.
9 Haga click en la ventana Transmit de la Terminal Degug para colocar ah el
cursor.
9 Meta los caracteres en la ventana Transmit y observe los resultados.
' Que es un Microcontrolador? - SelectCaseWithCharacters.bs2
' Programa que puede identificar algunos caracteres: mayusc/minusc, digito,
puntuacion.
'{$STAMP BS2}
'{$PBASIC 2.5}
character
PAUSE 1000
VAR
Byte
Funcionamiento de SelectCaseWithCharacters.bs2.
character
Las comillas se usan para decirle al Editor de BASIC Stamp que usted se est refiriendo a
caracteres. Podemos tratar los siguientes grupos de caracteres y signos de puntuacin de
la misma forma como un rango de nmeros, ya que el BASIC Stamp los reconoce por sus
equivalentes numricos en ASCII. {}. Vea la ayuda de BASIC Stamp Editor.
SELECT character
CASE "A" TO "Z"
DEBUG CR, "Upper case", CR
CASE "a" TO "z"
DEBUG CR, "Lower case", CR
CASE "0" TO "9"
DEBUG CR, "Digit", CR
CASE "!", "?", ".", ","
DEBUG CR, "Punctuation", CR
Esta instruccin CASE le indica al bloque de cdigo SELECT que hacer si ninguno de
los otros casos es verdadero. Usted puede usar este caso para trabajar metiendo un
carcter por ejemplo % y $.
9 Modifique
la
frase
SELECT...CASE
en
el
programa
SelectCaseWithCharacters.bs2 de tal forma que muestre Carcter Especial
cuando usted meta uno de estos caracteres: @, #, %, %, &, (), _ , o +.
Programa de Aplicacin para Tocar Tonos de Telfono RTTTL
Abajo est un archivo que contiene la informaci musical usada en el siguiente Programa
Ejemplo. Hay cinco directivas adiconales RTTTL_File_DATA que usted puede probar en
la seccin Su Turno. Este programa toca una cancin llamada Reveille {} que es el
primer toque de trompeta de la maana tocada en campos militares. Quiz usted la ha
escuchado en pelculas y shows de tv.
RTTTL_File
DATA "Reveille:d=4,o=7,b=140:8g6,8c,16e,16c,8g6,8e,",
"8c,16e,16c,8g6,8e,8c,16e,16c,8a6,8c,e,8c,8g6,",
"8c,16e,16c,8g6,8e,8c,16e,16c,8g6,8e,8c,16e,",
"16c,8g6,8e,c,p,8e,8e,8e,8e,g,8e,8c,8e,8c,8e,8c,",
"e,8c,8e,8e,8e,8e,8e,g,8e,8c,8e,8c,8g6,8g6,c."
Este Programa de Aplicacin es muy largo, y es una buena idea descargar la ltima
version de la pgina www.parallax.com/go/WAM.
Al descargar el programa y abrirlo con el Editor BASIC Stamp usted ahorrar una
cantidad significativa de tiempo. La alternativa, es naturalmente meterlo a mano y
depurar cuatro pgina de cdigo.
9 Con el Editor de BASIC Stamp abra el archivo del programa que descarg
MicroMusicWithRtttl.bs2 o a mano meta cuidadosamente el ejemplo que est
abajo.
9 Ejecute el programa, y verifique que reconoce la pieza Reveille bugle call.
9 Vaya a la seccin Su Turno e intente algunas piezas ms (con directivas
RTTTL_File DATA)
' Que es un Microcontrolador? - MicroMusicWithRtttl.bs2
' Play Nokia RTTTL format ringtones using DATA.
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Programa ejecutandose!"
' -----[ Definiciones de E/S ]----------------------------------------------
SpeakerPin
PIN
VAR
VAR
VAR
Word
Byte
Word
noteLetter
noteFreq
noteOctave
VAR
VAR
VAR
Byte
Word
Word
duration
tempo
VAR
VAR
Word
Word
default_d
default_o
default_b
VAR
VAR
VAR
Byte
Byte
Word
DATA
"Reveille:d=4,o=7,b=140:8g6,8c,16e,16c,8g6,8e,",
"8c,16e,16c,8g6,8e,8c,16e,16c,8a6,8c,e,8c,8g6,",
"8c,16e,16c,8g6,8e,8c,16e,16c,8g6,8e,8c,16e,",
"16c,8g6,8e,c,p,8e,8e,8e,8e,g,8e,8c,8e,8c,8e,8c,",
"e,8c,8e,8e,8e,8e,8e,g,8e,8c,8e,8c,8g6,8g6,c."
Done
DATA
",q,"
Notes
DATA
Octave8
DATA
"p",
"a",
"#",
"b",
"c",
"#",
"d",
"#",
"e",
"f",
"#",
"g",
"#"
Word 0,
Word 3520, Word 3729, Word 3951,
Word 4186, Word 4435, Word 4699, Word 4978,
Word 5274, Word 5588, Word 5920, Word 6272,
Word 6645
GOSUB
GOSUB
GOSUB
GOSUB
GOSUB
GOSUB
FindEquals
ProcessDuration
FindEquals
ProcessOctave
FindEquals
GetTempo
GOSUB
GOSUB
GOSUB
GOSUB
GOSUB
LOOP
ProcessDuration
ProcessNote
CheckForDot
ProcessOctave
PlayNote
END
'
'
'
'
'
'
' Va a caracteres en
' Busca Archivo RTTTL
DO
' '='. Incremeta contador
READ RTTTL_File + counter, char ' hasta que encuentra'=' , y luego
counter = counter + 1
' regresa.
LOOP UNTIL char = "="
RETURN
'
'
'
'
'
'
-----[ Subroutine - Read Tempo from RTTTL Header ]---------------------Cada caracter del teclado tiene un slo nmero llamado valor ASCII .
Los caracteres 0, 1, 2,...9 tienen valores ASCII de 48, 49, 50,...57.
Usted puede convertir los caracteres que representam un dgito a
a si valr restamdpes 48 a la variable que almacena el dgito.
Puede examinar esto comparando DEBUG DEC 49 y DEBUG 49.
GetTempo:
default_b = 0
DO
READ RTTTL_File + counter, char
IF char = ":" THEN
default_b = default_b / 10
counter = counter + 1
EXIT
ENDIF
default_b = default_b + char - 48
counter = counter + 1
default_b = default_b * 10
LOOP UNTIL char = ":"
RETURN
'
'
'
'
'
'
'
'
'
'
'
'
'
de cada caracterASCII
valor. Multiplica Iterativamente
cada dgito por 10 y si hay
otro dgito, entonces lo suma
el dgito ms reciente con
uno de la columna.
Por ejemplo, la cadena
"120" es (1 X 10 X 10)
+ (2 X 10) + 0. The '1'
primero se convierte, y luego
se multiplica por 10. El '2'
es convertido/agregado.
0 es convertido/agregado, hecho.
'
'
'
'
'
'
counter = counter + 1
CASE ELSE
noteOctave = default_o
ENDSELECT
IF default_o = 0 THEN
default_o = noteOctave
ENDIF
RETURN
'
'
'
'
'
'
'
'
'
]--------------------
ENDSELECT
IF default_d <> 0 THEN
duration = 60000/default_b/duration*3
ELSE
default_d = duration
ENDIF
RETURN
' -----[ Subroutine Cheque Para '.' Indicando Duraci+on 1.5
CheckForDot:
READ RTTTL_File + counter, char
SELECT char
CASE "."
duration = duration * 3 / 2
counter = counter + 1
ENDSELECT
'
'
'
'
'
'
]-----------
RETURN
' -----[ Subrutina - Encuentra Comma and Play Note/Duration ]----------------PlayNote:
'
'
'
'
'
Este Programa Ejemplo es de uso divertido, y muestra la clase de cdigo que usted ser
capz de escribir con alguna prctica. Sin embargo, se incluy en este texto ms por
diversin que por los conceptos de codificacin que emplea. Si usted examina el cdigo
brevemente, usted podra observar que ya ha usado todas las instrucciones y operadores
del programa excepto uno!
Esta es una lista de los elementos en este programa que por ahora le deberan ser
conocidos:
Comentarios que le ayudan en la explicacin de su cdigo
Declaraciones de Constantes y Variables.
Declaraciones DATA
Instrucciones READ
Bloques IF...ELSE...ENDIF
Bucles DO...LOOP con o sin WHILE y UNTIL
Subrutinas con GOSUB, etiquetas y RETURN
Bucles FOR...NEXT
Instrucciones LOOKUP y LOOKDOWN
Instrucciones FREQOUT y PAUSE
Instrucciones SELECT...CASE
EXIT es nuevo, pero este simplemente permite que el programa pueda salir de
un bucle antes que termine, y frecuentementese usa con las frases IF...THEN.
Su Turno Canciones Diferentes
DATA
"TwinkleTwinkle:d=4,o=7,b=120:c,c,g,g,a,a,2g,f,",
"f,e,e,d,d,2c,g,g,f,f,e,e,2d,g,g,f,f,e,e,2d,c,c,",
"g,g,a,a,2g,f,f,e,e,d,d,1c"
RTTTL_File
DATA
"FrereJacques:d=4,o=7,b=125:c,d,e,c,c,d,e,c,e,f",
",2g,e,f,2g,8g,8a,8g,8f,e,c,8g,8a,8g,8f,e,c,c,g6",
",2c,c,g6,2c"
RTTTL_File
DATA
"Beethoven5:d=8,o=7,b=125:g,g,g,2d#,p,f,f,f,2d"
RTTTL_File
DATA
"ForHe'sAJollyGoodFellow:d=4,o=7,b=320:c,2e,e,e,",
"d,e,2f.,2e,e,2d,d,d,c,d,2e.,2c,d,2e,e,e,d,e,2f,",
"g,2a,a,g,g,g,2f,d,2c"
RTTTL_File
DATA
"TakeMeOutToTheBallgame:d=4,o=7,b=225:2c6,c,a6,",
"g6,e6,2g.6,2d6,p,2c6,c,a6,g6,e6,2g.6,g6,p,p,a6",
",g#6,a6,e6,f6,g6,a6,p,f6,2d6,p,2a6,a6,a6,b6,c,",
"d,b6,a6,g6"
Descargando Archivos RTTTL. Hay archivos disponibles RTTTL para bajarse de varios
sitios de WWW. Estos archivos son contribuciones de entusiastas de ring tones, muchos de
ellos no son expertos musicales. Algunos tonos de telfono son muy buenos, otros no se
pueden reconocer. Si usted desea descargar y tocar algunos archivos RTTTL, asegurese
de quitar los espacios entre caracteres, luego inserte el archivo de texto entre las comillas.
RESUMEN
Este captulo introdujo tcnicas para hacer sonidos y tonos musicales con el BASIC
Stamp y una bocina piezo elctrica. La instruccin FREQOUT se puede usar para mandar
a una bocina piezo elctrica seales high/low para que hagan efectos de sonido y/o notas
musicales. La instruccin FREQOUT tiene argumentos que controlan los pines de E/S a
donde se manda la seal, la Duration del Tono y la Frecuencia del Tono (Freq1). Hay un
argumento opcional Freq2 que puede utilizarse para tocar dos tonos al mismo tiempo.
Los efectos de sonido pueden hacerse ajustando la frecuencia y duracin de los tonos y
las pausas entre ellos. El valor de la frecuencia tambin puede barrerse en un rango de
valores para crear una variedad de efectos.
Hacer notas musicales tambin depende de la frecuencia, duracin y pausas. El valor del
argumento Duration de la instruccin FREQOUT lo determina tempo de la cancin y
la duracin de la nota (nota entera, media nota, un cuarto de nota, etc). El valor Freq1 de
la nota lo determina la letra de la nota y la octava. Los descansos o silencios entre notas
se usan para fijar la duracin de la instruccin PAUSE.
Tocar canciones simples usando el BASIC Stamp puede hacerse con una secuencia de
instrucciones FREQOUT, pero hay formas mejores para almacenar y retirar los datos
musicales. Las directivas DATA con su etiquetas opcionales SYMBOL se usaron
para almacenar valores de bytes sin usar prefijos, y valores tamao word usando
prefijos Word. La instruccn READ se us para retirar valores almacenados por las
directivas DATA. En los ejemplos de este captulo, el argumento Location de la
instruccin DATA siempre us la etiqueta de la directiva opcional Symbol para
diferenciar los diferentes tipos de datos. Algunas de las etiquetas Symbol que se usaron
fueron Notes, Durations, Dots, y Octaves (notas, duraciones, puntos y octavas).
Los datos musicales pueden almacenarse en formatos que tienden en si mismos para
convertirse en una partitura. El estilo de los datos de la partitura puede convertirse en
frecuencias usando las instrucciones LOOKUP y LOOKDOWN. Tambin pueden
realizarse las operaciones matemticas en valores de variables para cambiar la octava de
una nota dividiendo su frecuencia por una potencia de dos. Las operaciones matemticas
tambin son tiles para la duracin de las notas conociendo el tempo o la duracin de la
nota entera.
Se introdujo SELECT...CASE como una forma de evaluar una variable en funcin de
caso por caso. SELECT...CASE es particularmente til para examinar caracteres o
nmeros cuando hay diferentes elecciones lo que podra ser la variable y diferentes
elecciones para fijar las acciones que necesitan tomarse en funcin del valor de la
variable. Un programa que convierte cadenas de caracteres que describen los tonos
musicales de los telfonos celulares viejos (se llama RTTTL) se us para introducir
programas grandes que hacen uso de todas las tcnicas de programacin presentadas en
este texto. SELECT...CASE juega un papel importante en este programa porque se usa
para examinar caracteres seleccionados en un archivo RTTTL en funcin de caso-porcaso.
Preguntas
Q1. Nuestro oido detecta cambios en la presin del aire como tonos. Un tono con
timbre alto genera cambios ms rpidos en la presin del aire, un tono con timbre
bajo genera cambios lentos en la presin del aire.
Q2. FRECOUT 15, 1000, 3000 manda una seal de 3000 Hz que sale del pin P15
durante un segundo (1000 ms). El efecto de cada nmro es: 15 es el pin E/S 15;
1000 es la duracin del tono en milisegundos, o un segundo; 3000 es la
frecuencia del tono, en hertz, entonces manda un tono de 3000 Hz.
Q3. Use el argumento opcional Freq2. Para tocar 3000 Hz y digamos 2000 Hz,
simplemente agregamos la segunda frecuencia a la instruccin despus de una
coma:
FREQOUT
15,
1000,
3000, 2000
P1. Use el circuito de bocina piezoelctrica de la Figrua 8-2; y los circuitos del botn
push de la Figura 4-26.
' Que es unMicrocontrolador? - Ch8Prj01_PushButtonToneGenerator.bs2
' P4 Presionado: 2 kHz beep for 1/5 second. 2 kHz = 2000 Hz.
'
1/5 s = 1000 / 5 ms = 200 ms
' P3 Presionado: 3 kHz beep for 1/10 second. 3 kHz = 3000 Hz.
'
1/10 s = 1000 / 10 ms = 100 ms
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Programa Ejecutandose!"
DO
IF (IN4 = 1) THEN
FREQOUT 9, 200, 2000
ELSEIF (IN3 = 1) THEN
2K EEPROM stores
PBASIC code and logged
data
5V Regulator
converts input
voltage to
regulated 5
volts
Figura 9-1
Circuitos
Integrados
del BASIC
Stamp
Las personas usan el trmino Circuito Integrado (CI) cuando se refieren a los pequeos
chips negros. Realmente el circuito integrado es un pequeo chip de silicio que est
contenido dentro de un plstico negro o una cajita de cermica. Dependiendo del chip
puede tener cientos, miles o millones de transistores. Un transistor es el bloque de
construccin bsico de los circuitos integrados, y usted tendr la oportunidad de
experimentar con el transistor en este captulo. Otro componentes familiares diseados
dentro del chip de silicio son los diodos, resistores y capacitores.
Reflexione un momento en las actividades que ha trabajado en este libro. La lista incluye
LEDs parpadeando, lectura de botones push, control de servos, lectura de mediciones de
luz con potenciometro, control de indicadores, y produciendo sonidos. Pero esto es
solamente el comienzo, esto es impresionante, considerando que usted puede combinar
estas actividades para hacer circuitos ms complicados. El ncleo del sistema que hizo
posible todas estas actividades, lo compone justamente los tres circuitos integrados que
muestra la figura 9-1, y otros pocos componentes adicionales. Es justamente lo que
mostramos lo poderoso que son los circuitos integrados cuando se disean para trabajar
en conjunto.
realizado, hay probablente cientos de formas diferentes que usted podra usar en cada uno
de estos circuitos integrados.
La Figura 9-2 muestra el smbolo esquemtico y dibujo del transistor 2N3904. Hay
diferentes tipos de transistores. Uno llamado NPN, esto se refiere al tipo de material
usado para fabricar el transistor y la forma como esos materiales forman capas en el
silicio. La mejor manera de empezar a pensar en un transistor es imaginarse una vlvula
que se usa para controlar la corriente. Diferentes transistores controlan cuanta corriente
pasa por diferentes medios. Este transistor controla la cantidad de corriente que pasa al
colector y regresa al emisor. Usa la cantidad de corriente permitida por la terminal de la
base para controlar la corriente de C a E. con una pequea cantidad de corriente que
permite la base, circula una corriente 416 veces mayor a travs del transistor de C a E.
C
C
B
E
Figura 9-2
Transistor 2N3904 {}
Smbolo esquemtico y dibujo del
transistor
B
2N3904
Un transistor 2N3904
Dos Resistores de 100 K (caf-negro-amarillo)
Un LED de cualquier color
Un potenciometro de 10 K
Tres alambres para puentes
Construyendo y verificando el Circuito Transistor
La Figura 9-3 muestra un circuito que usted puede usar para controlar manualmente la
cantidad de corriente que el transistor permite que pase por el LED. Girando la perilla del
potenciometro, el circuito suministrar diferentes cantidades de corriente a la base del
transistor. Esto originar un cambio en la cantidad de corriente que el transistor permita
que pase de colector a emisor. El LED le dar una clara indicacin de estos cambios
brillando ms o brillando menos.
9 Construya el Circuito Mostrado en la Figura 9-3
o Asegurse que el nodo (la terminal ms larga) del LED est conectado
a Vdd.
o Verifique dos veces el circuito del Transistor. Observe que la parte plana
del transistor apunta a la derecha en el diagrama de alambrado.
9 Gire la perilla del transistor y verifique que cambia el brillo en el LED conforme
cambia la posicin de la terminal central del potenciometro.
Vdd
Vdd
LED
100 k
POT
10 k
100 k
Vss
Vss
Figura 9-3
Circuito del
Transistor
Controlado
Manualmente
con el
Potenciometro
Si todo lo que usted desea es conmutar un transistor en Enc/Apag, usted puede usar el
circuito mostrado en la Figura 9-4. Cuando el BASIC Stamp manda una seal high a ste
circuito, el har que el transistor conduzca mucha corriente como cuando ajust el
potenciometro para mximo brillo. Cuando el BASIC Stamp manda una seal low a este
circuito hace que el transistor deje de conducir corriente, y el LED no emite luz.
Cul es la diferencia entre conectar esto y conectar un circuito LED a un pin E/S?
Los pines del BASIC Stamp tienen limitaciones en la cantidad de corriente que pueden
entregar. Tambin los transistores tienen limitaciones, pero estas son mucho mayores. En
La Guia del Estudiante de Control de Procesos, un transistor se usa para excitar un
pequeo ventilador de DC. Tambin se usa para proporcionar cantidades grandes de
corriente a un resistor pequeo que se usa como elemento calefactor. Cualquiera de estas
dos aplicaciones podran drenar mucha corriente que daaran rpidamente a el BASIC
Stamp, pero el transistor se encarga de que esto no suceda.
Vdd
Vdd
X3
LED
P8
100 k
100 k
Vss
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Vin
Vss
Figura 9-4
Circuito del
BASIC Stamp
que controla
el Enc/Apag
entregando
corriente al
LED con
transistor.
La Figura 9-5 muestra el mapa de pines del potenciometro digital que usar en esta
actividad. El chip tiene 8 pines, cuatro por lado que estn espaciadas para insertarlo con
facilidad en su tablilla (tienen 1/10 de pulgada de separacin). El fabricante coloca un
punto de referencia en el empaque de plstico que le indica la diferencia entre el pin 1 y
el pin 5. El punto de referencia es una pequeo medio crculo en el empaque del chip.
Usted puede usar este punto como una referencia para los nmeros de los pines del chip.
Los nmeros de los pines en el chip se cuentan arriba, en sentido inverso a las manecillas
del reloj.
Sustitucin de partes. Para Parallax a veces es necesario sustituir una parte. La parte
funcionar igual, pero su etiqueta puede ser diferente. Usted puede encontrar que el
potenciometro digital incluido en las partes de su Kit Que es un Microcontrolador no est
marcado con AD5220 pero tenga la seguridad que trabajara correctamente en esta
actividad.
Reference
Notch
Figura 9-5
AD5220 Pin Map
1 CLK
Vdd 8
2 U/D
CS 7
3 A1
B1 6
4 GND
W1 5
AD5220
Un Transistor 2N3904
Dos Resistores de 100 K (caf-negro-amarillo)
Un LED de cualquier color
Un Potenciometro Digital AD5220
Diez alambres para puentes
Construyendo el Circuito del Potenciometro Digital
La Figura 9-6 muestra el circuito esquemtico con el potenciometro digital usado en lugar
de un potenciometro manual, y la Figura 9-7 muestra el diagrama de alambrado del
circuito. El BASIC Stamp puede controla el potenciometro digital mandando seales de
control a los pines P5 y P6.
9 Construya el circuito mostrado en la Figura 9-6 y 9-7.
Vdd
Vdd
Vdd
AD5220
P6
CLK
Vdd 8
P5
U/D
CS 7
A1
B1 6
GND
4
W1 5
Figura 9-6
Circuito
Esquemtico del
Transistor
Controlado por
Potenciometro
Digital
100 k
100 k
Vss
Vss
Vdd
Vin
Vss
X3
Figura 9-7
Diagrama de
alambrado de la
Figura 9-6
AD5220
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Imagine que la perilla del potenciometro manual del ejercicio anterior tiene 128
posiciones. Tambien imagine que el potenciometro est en la mitad de su rango de
movimiento. Esto significa que usted puede girar la perilla en una direccin con 63 pasos
y en la otra direccin con 64 pasos.
Digamos que usted gira la perilla del potenciometro un paso en sentido de las manecillas
del reloj. El LED brillar muy poquito. Esto sera lo mismo que mandar una seal high al
pin U/D del AD5220 y mandar un puls o (high-low-high) al pin CLK.
HIGH 5
PULSOUT 6, 1
Ahora imagine que gira su potenciometro manual 3 pasos en sentido inverso de las
manecillas del reloj. El LED brillar ms poquito. Esto sera lo mismo que mandar una
seal low al pin U/D del AD5220 y mandar tres pulsos al pin CLK.
LOW 5
FOR counter = 1 TO 3
PULSOUT 6, 1
PAUSE 1
NEXT
Finalmente, imagine que usted gira el potenciometro totalmente en sentido inverso de las
manecillas del reloj. El LED no emitir luz. Esto es lo mismo que mandar una seal low
a pin U/D mandando 128 pulsos a la terminal CLK.
LOW 5
FOR counter = 0 TO 127
PULSOUT 6, 1
PAUSE 1
NEXT
Este programa ejemplo ajusta el potenciometro hacia arriba y hacia abajo, de un extremo
de su rango al otro extremo, haciendo que el LED brille gradualmente y luego
gradualmente no emita luz.
9 Meta y ejecute el programa DigitalPotUpDown.bs2
VAR
Byte
DO
LOW 5
FOR counter = 0 TO 127
PULSOUT 6, 1
PAUSE 10
NEXT
HIGH 5
FOR counter = 0 TO 127
PULSOUT 6, 1
PAUSE 10
NEXT
LOOP
Usted puede incrementar o disminuir la velocidad con la que el LED brilla y se apaga,
cambie el argumento Duration de la instruccin PAUSE
9 Modifique y ejecute el programa usando PAUSE 20 y observe la diferencia en
velocidad con que el LED brilla y se apaga.
9 Repita usando PAUSE 5.
Para simplificar el programa usted puede usar una instruccin llamada TOGGLE.
TOGGLE cambia el estado de un pin E/S del BASIC Stamp, si el pin E/S estaba
mandando una seal high, TOGGLE hace que mande una seal low. Si el pin E/S estaba
mandando una seal low, TOGGLE hace que mande una seal high.
9 Guarde
el
programa
DigitalPotUpDown.bs2
con
el
nombre
DigitalPotUpDownWithToggle .bs2
9 Modifique el programa para que sea como el que mostramos abajo.
9 Ejecute el programa y verifique que funciona de la misma forma como el
programa DigitalPotUpDown.bs2
9 Compare el nmero de lneas de cdigo que necesito para hacer el mismo trabajo
VAR
Byte
DO
FOR counter = 0 TO 127
PULSOUT 6,5
PAUSE 10
NEXT
TOGGLE 5
LOOP
La Figura 9-8 muestra un diagrama del interior del potenciometro AD5220. El AD5220
tiene 128 elementos resistivos cada uno de 78.125 (valor nominal). Los 128 elementos
suman 10 K .
3
A1
Ad5220
78
pos. 127
1 CLK
2 U/D
5
7 CS
78
pos. 126
W1
40
78
pos. 125
78
pos. 1
78
B1
pos. 0
6
Figura 9-8
Interior del AD5220
Entre cada uno de estos elemtos resistivos hay un interruptor llamado derivacin (tap).
En verdad cada interruptor es un grupo de transistores que se conmutan Enc/Apag para
permintir o no permitir el paso de corriente. Solamente uno de estos interruptores puede
cerrarse al mismo tiempo. Si se cierra uno de los interruptores superiores (por ejemplo la
posicin 125, 126 o 127) es como tener la perilla del potenciometro manual casi al
extremo en el sentido de las manecillas del reloj. Si se cierra la posicin 0 o 1 es como
tener la perilla del potenciometro manual casi al extremo en el sentido inverso de las
manecillas del reloj.
Imagine que se cierra la posicin 126. Si usted desea mandar la derivacin a 125, (la
posicin 126 abierta y la posicin 125 cerrada), fije U/D en low y luego aplique un pulso
a CLK. Si usted desea fijar la derivacin en la posicin 127 , fije U/D en high y aplique
dos pulsos. Si usted desea regresar la derivacin a 1, fije U/D en low y aplique 126
pulsos.
El siguiente Programa Ejemplo usa la Terminal Debug para preguntarle que derivacin
desea usted cerrar. Luego decide si el pin U/D se fija en high o low y aplica el nmero
correcto de pulsos para mover la derivacin de su posicin vieja a su posicin nueva. Con
excepcin de Data EEPROM, el siguiente Programa Ejemplo tiene casi todas las
secciones que usted normalmente espera encontrar en un programa de aplicacin.
Usted puede usar este Programa Ejemplo y la Terminal Debug para fijar la derivacin del
potenciometro digital. Cambiando el ajuste de la derivacin del potenciometro digital,
usted puede cambiar el brillo del LED conectado al transistor que controla el
potenciometro digital La Figura 9-9 muestra un ejemplo para meter el valor 120 en la
ventana de Transmisin de la Terminal Debug mientras corre el programa.Como el ajuste
anterior del tap era 65, el LED brillar al doble cuando se haga el ajuste a 120.
Windowpanes
Transmit
Receive
Figura 9-9
Mandando
mensajes al BASIC
Stamp
Haga click en la
ventana (superior) y
meta los nmeros
para el nuevo ajuste
de la derivacin
]-------------------------------------------------
PIN
PIN
5
6
CON
CON
10
2000
VAR
VAR
VAR
Byte
Byte
Byte
LOW UdPin
FOR counter = 0 TO 127
PULSOUT 6,5
PAUSE 1
NEXT
PAUSE 1000
LOOP
' -----[ Subroutines ]----------------------------------------------------Get_New_Tap_Setting:
oldTapSetting = oldTapSetting + 1
' Incrementa el pin Pulse_Clk_pin.
ELSEIF newTapSetting < oldTapSetting THEN
LOW UdPin
oldTapSetting = oldTapSetting - 1 ' Decrementa el pn Pulse_Clk_pin.
ELSE
DEBUG CR, "New and old settings", CR,
"are the same, try ", CR,
"again...", CR
PAUSE DelayReader
' Da tiempo lectura para ver
ENDIF
' Mensaje.
RETURN
Pulse_Clk_pin:
' Manda pulsos de valores nuevos y viejos. Recuerde que Set_Ud_Pin
' ajustaron el valor de ajuste viejo a ajuste nuevo en una unidad.
' Esto mantiene el bucle FOR...NEXT loop ejecutandose de una a muchas vees.
FOR counter = oldTapSetting TO newTapSetting
PULSOUT ClkPin, 1
PAUSE DelayPulses
NEXT
oldTapSetting = newTapSetting
RETURN
RESUMEN
Este captulo present los circuitos integrados y la forma como pueden usarse con el
BASIC Stamp. Se us un transistor como vlvula de corriente, y un potenciometro digital
para controlar la cantidad de corriente que pasa a travs del transistor. Al examinar los
potenciometros digitales presentamos el punto de referencia y el mapa de pins como
elementos importantes de chips electrnicos. Se analiz la funcin de cada uno de los
pines del potenciometro digital y tambin la estructura interna del dispositivo. Se
present la instruccin TOGGLE del PBASIC como medio para ahorrar memoria de
programa.
Preguntas
1. Cules son los nombres de las terminales del transistor que usted us en este
captulo?
2. Qu terminal controla en paso de corriente a travs del transistor?
3. Cmo puede usted incrementar o decrementar la corriente que pasa a travs del
transistor?
Ejercicio
UdPin
ClkPin
counter
PIN
PIN
VAR
LOW UdPin
FOR counter = 0 TO 128
PULSOUT ClkPin,5
PAUSE 1
NEXT
5
6
Byte
P1. Use el circuito del potenciometro digital que muestra la Figura 9-6 y el circuito
fototransistor de la Figura 7-4.
Esta solucin se obtiene con el programa TerminalControlledDigitalPot.bs2, e
incorpora elementos del programa PhototransistorAnalogToBinary.bs2 del
Captulo 7, Actividad # 5.
Qu es un Microcontrolador? Ch9Prj01_PhotoControlledDigitalPot.bs2
Actualiza el pot digital basado en lectura del fototransistor
{$STAMP BS2}
{$PBASIC 2.5}
e Inicializacin]-----------------------------5
' Fija valores de pine E/S
6
' Conectado a CLK y U/D.
2
' Fototransistor en pin P2
10
' Retardo pora observar brillo de LED.
2000
4000
'Valor Max del fototransistor
100
' Valor Min del fototransistor
counter
oldTapSetting
newTapSetting
lightReading
scaleDivisor
Byte
Byte
Byte
Word
Word
VAR
VAR
VAR
VAR
VAR
'
'
'
'
'
' Fije un valor that que pueda dividirse en RCTIME del fototransistor
' para escalarlo a un valor en el range de 0 a 128
scaleDivisor = (valMax - valMin) / 128
oldTapSetting = 0
newTapSetting = 0
LOW UdPin
FOR counter = 0 TO 127
PULSOUT ClkPin,5
PAUSE 1
NEXT
PAUSE 1000
Digamos que usted tiene un gabinete con una puerta en una bisagra y charola, y necesita
un muy pequeo sistema de alarma. O quiz usted desea disear un gabinete especial con
seguridad interconstruida. La Figura 10-1 muestra un bosquejo de cmo un
potenciometro y un contacto elctrico similar a un botn push puede usarse para detectar
cuando la puerta o la charola est abierta. Este bosquejo es similar al concepto diagrama,
el cual se enfoca solamente en mostrar lo que el producto o invento puede hacer.
Figura 10-1
Bosquejo de
un gabinete
con
Microsistema
de Seguridad
Es importante la descripcin funcional. Cuando usted tiene una mejor idea de lo que
supone que su dispositivo tiene que hacer al principio, esto previene problemas que
puedan suceder si usted tiene que redisear el dispositivo para adecuarle algo que usted
no haba pensado. Los diseadores y las compaias que crean aparatos para clientes
tienen que ser muy cuidadosos al examinar sus clientes para comprender lo que ellos
esperan. En especial los dispositivos diseados para clientes, sus rediseos pueden ser
muy costosos y consumir mucho tiempo.
Este es un ejemplo de una muy breve descripcin funcional que podemos usar para
nuestro sistema. Desarrolle un prototipo del circuito y programa de un microsistema de
alarma que pueda monitorear una pequea puerta que tenga una bisagra y una charola. Si
se activa una alarma deber sonar si la puerta o la charola se abren. Un LED de estado
deber iluminarse verde cuando la alarma no est preparada, y rojo cuando se active. El
prototipo controlado por computadora debe activarse y desactivarse. Se deber incorporar
un retardo de tiempo despus que el dispositivo se ha activado para permitirle al usuario
que cierre el gabinete.
Especificaciones
Frecuentemente, el diseo inicial incluye tormenta de ideas para que las aproximaciones
puedan resolver el problema de diseo, y muchas de estas ideas tienen que verificarse
para saber si son verdaderamente realizables. Otras porciones del diseo podran
involucrar partes normalizadas o comunes y practicas de diseo. Nuestra micro alamarma
cae en esta categora, al menos en el prototipo. Se deber colocar un botn push en el
gabinete para que cuando la charola se cierre presione al botn push. El LED bicolor es
un indicador familiar y tambin la bocina piezo elctrica es una bien conocida generadora
de ruido de alarma.
Entonces, ahora conocemos los circuitos que necesitamos para nuestro prototipo gabine
de micro seguridad: LED bicolor, botn push, potenciometro y bocina piezo. La siguiente
es una lista de los capitulos y actividades donde presentamos cada uno de estos circuitos:
El esquemtico de la Figura 10-2 est arreglado para darle a todos los componentes
plenitud de espacio en la tablilla, de tal forma de no todos las conexiones de los pines
estn en la misma forma como estuvieron el los captulos anteriores.
Recuerde esto cuando descargue los ejemplos de los cdigos de los captulos anteriores
para verificar cada uno de los circuitos.
Figura 10-2 Esquematico del Prototipo del Sistema de Alarma.
Ahora que todos los circuitos estn verificados y todos los programas de prueba
guardados en su PC, es hora de construir una prueba del sistema que muestre mensajes
del circuito que se est verificando y ejecute su cdigo de prueba. Este es un ejercicio til
porque los sistemas de alarma tpicos tienen auto-prueba y modos de diagnstico que
utilizan todas las caracteristicas en un rutina.
'
'
'
'
'
'
Llama Check_Sensors
Llama Prompt_to_Disarm
Si estado = Triggered
Llama a Alarm_Triggered
Hecho evaluaando caracter
Repite el Bucle Principal
NEXT
LOOP UNTIL state <> triggered
comunicarse con cualquier pin de E/S, o con el pin 16 para comunicarse con la Terminal
Debug. Ellas tambin tienen cdigos especiales que usted puede usar para seleccionar la
velocidad de los bauds que se describen en la Tablas de Velocidad de Bauds en las
instrucciones SERIN y SEROUT que estn en el Manual BASIC Stamp.
Get_User_Input:
char = 0
SERIN 16, 84, 500, Timeout_Label, [char]
GOSUB Process_Char
Timeout_Label:
RETURN
La subrutina Get_User_Input empieza fijando la variable char a 0 para limpiar los valores
anteriores que char podra haber almacenado. Luego, ejecuta la instruccin SERIN, con el
valor opcional Timeout con valor de 500 ms (medio segundo), y su etiqueta opcional
timeout con su valor asociado a Timeout_Labe1, que est dos lneas abajo. Si la
instruccin SERIN recibe un carcter dentro de los 500 ms, almacena el resultado en la
variable char y se mueve a la siguiente lnea y esta llama a la subrutina Process_Char. Si
no recibe un carcter dentro de los 500 ms brinca a Timeout_Label que hace que brinque
sobre la llamada a subrutina.
Su Turno Pasos Siguientes hacia la Demostracin del Concepto
Es tiempo de hacer que este programa funcione como Demostracin del Concepto.
Guarde una copia del programa MicroAlarmProto(Dev-009).bs2 con el nonmbre
MicroAlarmProto(Dev010).bs2.
9 Use segmentos de sus cdigos verificados de la Actividad #2 para completar los
tres Todo
9 Verifique su cdigo modificado, y cuando est trabajando correctamente, guarde
una copia del programa con el nombre MicroAlarmProto(Dev-011),bs2.
Los nmeros 1 y 6 no son nmeros misteriosos porque es muy claro que hacen que el
bucle FOR...NEXT se repita seis veces, y el comentario a su derecha indica que seis
repeticiones duran por tres segundos. No todos los supervisores pueden estar de acuerdo
con esta interpretacin, y algunos podran proclamar que el 1 y el 6 son nmeros
misteriosos. Si usted termina de codificar su trabajo y a su jefe le gusta nombrar todas las
constantes, eso es probablemente una buena idea para adjuntar a su estilo de codificacin
requerido.
9 Vaya al programa MicroAlarmProto(Dev-011).bs2 y documente los nmeros
misteriosos declarando las directivas pin y las constantes, y sustituya sus
nombres por nmeros en el programa.
9 Una excepcin en las directivan PIN es el argumento Pin de la instruccin
SERIN, que debe declararse como una constante y no como un pin. Los
argumentos Pin son para pines E/S y su rango esde P0 a P15. El argumento 16 en
el Pin hace que la instruccin SERIN escuche al pin SIN del mdulo BASIC
Stamp que est conectado en el puerto de programacin de su tablilla.
Otra rea donde la documentacin de MicroAlarmProto(Dec011).bs2 que todava est
debil es en los comentarios que explican cada rutina y subrutina. Cada subrutina deber
tener comentarios que expliquen lo que hace, las variables de las que depende para hacer
su trabajo, y cualquier variables que la subrutina use para almacenar resultados antes de
que regrese (RETURN). Este es un ejemplo de una buena documentacin agregada al
principio de la subrutina Process_Char.
' -----[ Subroutine - Process_Char ]--------------------------'
' Actualiza el estado de variable basedo en el contenido de la
' variable char. Si char contiene "A" o "a", la constante
Armed
' se almacena en state. Si char contine "D" or "d",
Actualice las descripciones entre los ttulos de la subrutina y sus etiquetas, y tambin
reptalo para la rutina principal. Cuando lo haya hecho, guarde una copia de su cdigo
con el nombre MicroAlarmProofOfConcept(v1.0).bs2
Guarde Copias e Incremente el Nmero de Version despus de Cada Cambio
Pequeo
Asegurese de continuar guardando copie de su cdigo con cada ajuste pequeo. Esto
facilita tomar tomar pequeos pasos hacia atrs para trabar su cdigo si sus cambios le
causan errores. Por ejemplo, antes de su siguiente modificacin, guarde el archivo como
MicroAlarmProofOfConcept(v 1.01) o quiz v1.01. Cuando su prxima caracteristica
quede completamente implementada escoja un paso razonable de su versin. Si es una
revisin pequea , trate con v1.1; si es una revisin grande llevela a v2.0
El sensor PIR detecta cambios de patrones de luz pasiva infrarroja en el rea circundante
y manda una seal high para indicar que ha detectado movimiento, o una seal low para
indicar que no hay movimiento. La resistencia del sensor FlexiForce vara con la fuerza
aplicada en en punto redondo que est en un extremo (por ejemplo un objeto arriba de l)
y puede medirse el tiempo en un circuito RC utilizando la instruccin RCTIME.
PIR Motion
Sensor
FlexiForce Sensor
Paso 2:
Paso 3:
Digamos que el siguiente paso en su proyecto es mostrar el status del sistema sin
conexin a la computadora. Este es un ejemplo de cmo podra encontrar y evaluar un
componente para su aplicacin.
9 (Paso 1) Vaya a www.parallax.com y escriba display en el campo Search.
Desde la pgina principal usted podra necesitar hacer click en el botn Go en
lugar de solamente presionar Enter. Ve a las pginas de producto de los varios
tipos de resultados en la bsqueda y mira si puedes encontrar uno que sea
relativamente barato y capz de mostrar un par de lneas de texto. Si te decidiste
por la LCD 2x16 Serial de Parallax como muestra la Figura 10-4 es una buena
eleccin y ests en el camino correcto.
Figura 10-4
Parallax 2x16 Serial LCD
Los sensores PIR y FlexiForce y el LDC en Serie Parallax, son tres ejemplos de mdulos
y componentes que usted puede usar para incrementar grandemente la funcionalidad de
su prototipo. Estos tres son un granito en arena la playa de lo que existe disponible.
La Figura 10-5 muestra ms mdulos y componentes y todava representan solamente
una pequeo muestra. Los ejemplos en la figura son (a) modulos de RF para
comunicacin por radio, (b) gyro para detectar velocidades de rotacin, (c) brjulas para
encontrar direccin, (d) sensor de vibracin, (e) acelerometro para detectar inclinacin y
cambios de velocidad, (f) sensor ultrasonico para detectar distancias, (g) sensor de
intensidad de luz, (h) controlador servo, (i) controladores de motores DC, (j) arreglo
Darlington para excitar bobina de motores paso a paso, y (k) motores paso a paso. Usted
puede encontrar cualquiera de estos dos dispositivos en www.parallax.com con la clave
bsqueda. Por ejemplo, para encontrar ms acerca de (f) meta sensor ultrasonico en la
pgina principal de Parallax, en el campo Search y de click en el botn Go.
Sensors
Communication
b
h
j
k
i
d
Cuando usted est buscando componentes e informacin acerca de cmo usarlos con el
BASIC Stamp, esto cae en la categoria de application information. Cuando est
buscando informacin de aplicacin, es mejor empezar con el sitio web del fabricante, y
luego expandir la bsqueda que incluyan los forums, y si usted todava no ha encontrado
una buena solucin expandala ms para que incluya la WWW. La Figura 10-6 muestra
un ejemplo de Google las palabras claves de bsqueda son infrarojo y remoto en
documentos PDF y pginas de productos en www.parallax.com. Aqu la parte importante
es que Google busca documentos PDF en lugar de slo pginas de productos. Asegurese
que no hay espacios en el sitio: www.parallax.com
Figura 10-6
Buscador Google del
sitio www.parallax.com
Usted puede moficicar la bsqueda para incluir preguntas y respuestas en los forum de
soporte de Parallax cambiando www a forums como esto:
infrared remote site: forums.parallax.com
Esto busca todas las preguntas, respuestas y artculos cortos que contengan las palabras
infrarojo y remoto en los forums parallax.com. Para encontrar una aplicacin
especfica del BASIC Stamp, cambie su bsqueda en los terminos de abajo. Asegurese
que las palabras BASIC Stamp estn con comillas porque esto filtrara resultados de
colecciones por correo.
Este es un resumen de la secuencia de busqueda en Google para BASIC Stamp infrared
remote
9 Sitio remoto infrarojo: www.parallax.com
o Busquedas para los trminos infrarojo y remoto en PDF y pgina de
productro en www.parallax.com
9 Sitio remoto infrarojo: forum parallax.com
o Busquedas para los trminos infrarojo y remoto en discusiones en
forums parallax.com
9 Remoto Infrarojo BASIC Stamp
o Busquedas en la web para las palabras infrarojo y remoto en la
misma pgina o PDF con la frase BASIC Stamp
Digamos que el siguiente paso para su proyecto Micro Alarma es un teclado, pero la
documentacin y ejemplo en una sola bsqueda en pgina de productos en parallax.com
lo llevo a ejemplos de circuitos y cdigos esparcidos. Entonces hagamos las busquedas
con ms orden, digamos que una busqueda en Google en el sitio de Parallax para todas
las referencias a teclados. Recuerde qe Google incluye documentos PDF.
9 Vaya a www.google.com
9 Escriba teclado site: www.parallax.com en el campo de Busqueda y luego
presione Enter.
Los resultados pueden requerir algo de paciencia y persistencia para pasar, y muchas
pginas de resultados. Hay generalmente suficiente de un parrafo de cada resultado de
bsqueda para tener algn contexto de cada liga. Esto le dar alguna idea de cuales
brincar y cuales mirar con atencin. Despus de unas pgina, usted podra encontrar y
seguir una liga de Partes del Kit de IR Remoto como lo muestra la Figura 10-7. Esto
podra no ser solucin a lo que usted esperaba, pero despus de examinar el precio, la
documentacin, y el cdigo ejemplo, podra tener mucho potencial para reforzar su
sistema de seguridad con teclado.
Figura 10-7 Partes del Kit de IR Remoto
En algunos casos, los programas para proyectos grandes pueden crecer mucho y exceder
la memoria de programa del BASIS Stamp. Este diseo difcil puede algunas veces
resolverse reescribiendo el cdigo que haga el mismo trabajo con menos instrucciones.
Otra opcin es elegir un modelo de BASIC Stamp con memoria de programa ms grande.
En otros casos, el proyecto podra involucrar almacenar ms valores de variables que el
BASIC Stamp puede guardar. Tambin hay modelos de BASIC Stamp 2 con
caracterstica de borrado para los valores de variables RAM. Otros proyectos podran
necesitar hacer ms tareas en menor tiempo para las que BASIC Stamp fue diseado,
algunos modelos de BASIC Stamp estn diseados con velocidades rpidas de
procesamiento.
La Figura 10-8 muestra todos los diferentes modelos del BASIC Stamp. Para detalles de
cada uno vaya a
Comparacin de Modulos BASIC Stamp en la liga
www.parallax.com/basicstamp.
Figura 10-8 Linea completa de Modelos BASIC Stamp
From left: BS1, BS2, BS2e, BS2sx, BS2p24, BS2p40, BS2pe, BS2px
BS1:
BS2:
BS2e:
BS2sx:
BS2p24:
BS2p40:
BS2pe:
BS2px:
Figura 10-9
Kit Propeller Education
(izquierda)
Plataforma PE
(derecha)
Robotica
Electrnica
Sensores
Automatizacin
Proyectos Hobi
Ciencias de la Tierra y Mediciones del Clima
Esta actividad genera recursos que usted puede usar para avanzar en cada una de estas
categorias.
Los recursos, kits y componentes que se analizaron en esta actividad eran comunen
cuando este captulo se escribio (Otoo 2009). Las versiones nuevas y mejores, kits y
componentes estn disponibles para reemplazar alguna de las aqu presentadas.
Asegurese de verificar www.parallax.com con la informacin ms reciente.
La Figura 10-10 muestra libros y kits que arman la mejor secuela de este libro. Robotics
with the Boe-Bot es una agradable y gran experiencia para que usted pueda aplicar
algunas de las tcnicas de este libro a las aplicacione de robtica con el robot deslizante
Boe Bot.
El libro Sensores Inteligentes y Sus Aplicaciones fue escrito para ser la parte 2 de Qu
es un Microcontrolador?. Se le cambi el nombre porque todos los sensores inteligentes
y la pantalla de cristal lquido mostrados en el centro de la Figura 10-10 tienen
coprocesadores que se comunican con el BASIC Stamp. Los coprocesadores los hacen
sensores inteligentes. El libro Comprendiendo las Seales, es grandioso porque le permite
a usted, ver las interacciones entre el BASIC Stamp y los circuitos utilizando un
Osciloscopio Parallax que usted conecta en el puerto USB de su computadora.
Smart Sensors
and Applications
Parts and Text
Understanding
Signals Parts
and Text
La Figura 10-11 muestra un diagrama de flujo que sintetiza todos los Kits Stamp in Class
y Libros de Texto disponibles en el momento que ste se escribi. Son accesibles a travs
del Programa Stamps in Class. Un vistaso y la liga a los Diagramas de Flujo est en
www.parallax.com/Education, y usted puede dar click en cada imagen para visitar la
pgina del producto del libro y su kit acompaante. Qu es un Microcontrolador? est
hasta arriba a la izquierda en la Figura. Desde ah, el diagrama de flujo indica que usted
puede brincar a Robotica con el Boe-Bot (Robotics with the Boe-Bot) o cualquier
texto/kit de la serie Sensores o Seales.
Descargas completas de Libros de Texto en PDF Usted puede descargar el PDF a todo
color de cada Libro Stamps in Class en www.parallax.com. Haga click en cualquier imagen
de la carta para navegar en la pgina Texto + Kit y usted encontrara el PDF en la pgina
seccin de Descarga.
Figura 10-11
Diagrama de
Flujo de Stamps
in Class. {}
Arriba y Adelante que son los libros de Texto Stamps in Class, En Stamps in Class hay
Mini Proyectos en la liga www.parallax.com/Education. Algunos proyectos utilizan
justamente el stock de partes del los kits pero demuestran nuevas formas para usarlos
junto con nuevos conceptos. Muchos de estos proyectos son como los captulos de los
libros de Texto Stamp in Class, tienen Actividades, Diagramas Esquemticos, Diagramas
de Alambrado listas completas de cdigos que pueden descargarse. Algunos incluso
tienen videos con tutoriales por ejemplo Construya su Propio Mini Temporizador que
puede construirse precisamente con las partes que usted ha estado usando en este libro.
Cualesquiera que sea la informacin que busca, o inspiracin creativa, usted prodr
encontrarla aqu.
Figura 10-12 Ejemplo del Mini Proyecto con Stamps in Class
RESUMEN
Este libro present una variedad de circuitos y tcnicas, todas ellas son bloques de
construccin en productos comunes as como en inventos. Este libro tambin present
tcnicas para juntar los diversos bloques de construccin con el microcontrolador de
BASIC Stamp. Este captulo demostr como incorporar las tcnicas y bloques de
construccin en un prototipo, y tambin recomend algunos de los siguientes pasos para
aprender ms en su rea de interes.
La aproximacin para hacer que el BASIC Stamp interactue con un circuito dado puede
aplicarse a una variedad de circuitos y mdulos que cumplan e incluso sobrepasen sus
tareas. Dos ejemplos aplicados al prototipo de la micro alarma fueron: (1) un sensor de
movimiento con una interface similar a el botn push y (2) un sensor de presin con una
interface similara a la del potenciometro.
Mientras desarrolla el cdigo para su aplicacin, asegrese de guardar su trabajo
frecuentemente bajo nombres de revisin aumentadas. Tambin asegrese de darle
nombres significativos a los pines de E/S y nmeros a las directivas PIN Y CON.
Finalmente, agregue muchos comentarios a su cdigo que expliquen los que hacen y
como lo hacen. Las subrutinas deben incluir comentarios que expliquen que hace la
subrutina junto con sus variables y los con valores que usa para hacer su trabajo, as como
las variables que almacenan los resultados cuando termina la subrutina.
Este captulo tambin present una variedad de tcnicas de investigacin para
implementar caractersticas en su prototipo. Incluso, si al principio no tena idea de cmo
hace que trabaje una carateristica particular, usted puede usar tcnicas de bsquedas para
encontrar el componente til, el circuito y ejemplos de cdigo.
Los libros de texto Stamp in Class y sus kits tienen muchos circuitos y tcnicas tiles de
diseo, y este es un gran lugar para aprender ms en los campos de robtica, sensores,
electrnica, automatizacin, ciencias de la tierra, y ms. Todos los libros de texto que
acompaan a los Kits Stamps in Class se pueden descargar libremente.
Ahora que usted ha llegado al final del libro, reflexione un momento en cuatro ideas: (1)
las tcnicas que usted ha aprendido, (2) su siguiente invento, proyecto o prototipo, (3) lo
que usted ha aprendido aqu que puede aplicarlo en l y (4) que es lo siguiente que quiere
aprender.
9 Ahora, es tiempo de empezar con su siguiente proyecto o prototipo.
9 Asegurese de mantenerse estudiando y aprendiendo nuevas tcnicas conforme
avanza.
9 SEA OPTIMISTA y BUENA SUERTE!
Descripcin
Cantidad
150-01020
10
150-01030
150-01040
150-02020
150-02210
150-04710
152-01031
Potentiometer - 10 k
200-01031
Capacitor, 0.01 F
200-01040
Capacitor, 0.1 F
201-01080
Capacitor, 1000 F
201-03080
Capacitor 3300 F
350-00001
350-00005
350-00006
350-00007
350-00027
350-00029
400-00002
451-00303
500-00001
Transistor 2N3904
604-00010
Potenciometro digital de 10 k
28123
800-00016
900-00001
Bocina Piezo r
900-00005
Kit Discovery BASIC Stam (Serie # 27207 o USB # 27807) que incluye
o Tablilla Board of Education (Serie #28150 o USB # 28850)
o Modulo Microcontrolador BASIC Stamp 2 (# BS2-IC)
o Cable de Programacin (Serial # 800-00003 o USB A MiniB # 80500006)
o Qu es un Microcontrolador? Partes y Texto (#28152)
o Manual BASIC Stamp (# 27218)
Un mensaje a los educadores: Descuentos por comprar en cantidad de todos los kits
arriba mencionados: para detalles vea cada pgina de productos del kit en
www.parallax.com. Adems las Tablilla HomeWork est disponible por paquetes de 10
como una solucin econmica para uso en el saln de clases, y cuesta significativamente
menos que la Board of Education ms el mdulo BASIC Stamp 2. Por favor contacte al
Equipo de Ventas de Parallax en (800) 512-1024 para saber los precios por grandes
cantidades.
Vdd
X3
Vdd
R1 R2 R3 R4
Ri
LED
R1 = 220
R2 = 470
R3 = 1 k
R4 = 2 k
Vss
Vin
Vss
P15
P14
P13
P12
P11
P10
P9
P8
P7
P6
P5
P4
P3
P2
P1
P0
X2
Figura B-1
Monitor de la Corriente
del LED
Si usted est usando una bateria de 9 V, tambin puede comparar la brillantez de una
fuente Vin, de voltaje diferente. Vin se conecta directamente a la terminal + de la bateria
de 9 V y Vss se conecta directamente a la terminal negativa de la bateria. En nuestro
sistema, Vdd son 5 V regulados. Esto es cerca de la mitad del voltaje de la bateria de 9 V.
9 Si no est usted usando una bateria de 9 V detengase aqu y brinque a la seccin
de abajo Calculando la Corriente. Si no es as continue.
9 Comience con el circuito mostrado por la Figura B-1 pero use un resistor de 1
kilo ohm.
9 Haga una nota del brillo del LED.
9 Desconecte la alimentacin.
9 Modifique el circuito desconectando la terminal del resistor de Vdd y conctelo a
Vin.
9 Cundo volvi a conectar la alimentacin, como brill el LED? Cunto ms
brillante?
Haga el experimento de Vin con un resistor de 220 0 470
LED mucha ms corriente que la especificada.
porque le proporcionar al
Calculando la Corriente
El Manual BASIC Stamp tiene algunas reglas de cuanta corriente puede proporcionar un
pin de E/S a los circuitos. Si no sigue usted estas reglas, puede terminar daando el
BASIC Stamp. Las reglas indican cuanta corriente le est permitida que proporcione a un
pin de E/S y cuanta corriente pueden proporcionar un grupo de pines de E/S.
Reglas de Corriente de los pines del BASIC Stamp
Un pin de E/S puede proporcionar hasta 20 mA. En otras palabras, si usted manda una
seal HIGH a un pin E/S, ete no deber suministrar ms corriente de 20 mA.
Si usted conecta el LED para que el BASIC Stamp ahora haga que el LED se ilumine
cuando manda una seal LOW el pin puede absorver hasta 20 mA.
Los pines desde P0 hasta P7 solamente pueden proporcionar 40 mA. De igual manera los
pines desde P8 hasta P15 solo pueden proporcionar 40 mA. 40 mA es la corriente mxima
que puede proporcionar el mdulo BASIC Stamp 2 con una fuente regulada de 5 V,
entonces la corriente total que pueden drenar todos los pines de E/S nunca debern
exceder 40 mA. Si usted tiene muchos circuitos de LEDs, usted necesitar resistores
mayores para que los circuitos no drenen mucha corriente.
Para mayor informacin, consulte la Tabla Descripcin de Pines del BASIC Stamp en el
Manual BASIC Stamp.
Si usted sabe calcular la cantidad de corriente que usa su circuito, puede decidir si el
brillo de su LED es el correcto. Cada componente tiene reglas de lo que hace con el
voltaje, la resistencia y la corriente. Para el diodo emisor de luz, la regla es un valor que
se llama polarizacin en sentido directo del diodo. Para el resistor, la regla se llama Ley
de Ohm. Tambin hay reglas para saber cuanta corriente y voltaje se suman en un
circuito. Estas se llaman Leyes de Kirchhoff de Voltaje y Corriente.
Vdd Vss = 5 V El voltaje (la presin elctrica) de Vdd a Vss es 5 V. Esto se llama Voltaje
regulado, y trabaja casi igual que una bateria que proporciona exactamente 5 V. (las
baterias no son tipicamente de 5 V, aunque cuatro baterias recargables de nickel cadmio de
1.2 V cada una, en serie nos dan 4.8 V) Las Tablillas Board of Education y BASIC Stamp
HomeWork tienen reguladores de 5 V que convierten la alimentacin de la bateria de 6 a 9
V a un voltaje regulado de 5 V para los conectores Vdd arriba de la Tablilla. El BASIC
Stamp tambien tiene un regulador interconstruido que convierte las entradad de 6 a 9 V en
5 V para sus componentes.
Ven Vss = 9 V- Si usted est usando una bateria de 9 V, el voltaje de Vin a Vss es 9 V.
Sea cuidadoso. Si usted est usando un regulador de voltaje que conecta en la pared,
incluso si dice 9 V, este podra ser tan grande como 18 V.
Tierra y/o referencia. Se refiere a la terminal negativa de un circuito, hablando de las
tablillas BASIC Stamp y Board of Education , Vss se considera la referencia a tierra. Vale
cero volts, y si usted est usando una bateria de 9 V, esta es la terminal negativa de la
bateria. La terminal positiva de la bateria es 9 V. Vdd es 5 V (arriba la referenci Vss es 0 V.)
y este es un voltaje especial hecho por un chip regulador de voltaje que suministra al BASIC
Stamp la energa.
Ley de Ohm V = I x R El voltaje medido en las terminales del resistor (V) es igual a la
corriente que pasa a travs del resistor (I) multiplicado por la resistencia del resistor.
Voltaje en Sentido Directo del Diodo Es el voltaje en las terminales del nodo y el ctodo
cuando la corriente pasa por l desde el nodo al ctodo. Para el LED verde del circuito de
la Figura 2-6, usted puede considerar que el voltaje del diodo es de aproximadamente 2.1
V, para hacer sus clculos. Si el LED es amarillo, considere 2.0 v y para el LED rojo
considere 1.7 V. Resistencias menores en serie y/o mayor voltaje aplicado al circuito dan
como resultaddo mayor flujo de corriente. Resistencias mayores en serie y/o menor voltaje
aplicado dan como resultado menor flujo de corriente.
Simplificacin de la Ley de Kirchhoff de Voltaje. Voltaje usado igual a voltaje
suministrado. Si usted alimenta un circuito con 5 v, el nmero de volts en todas las partes
usadas suma 5 V.
Simplificacin de la Ley de Kirchhoff de Corriente. La corriente de entrada es igual a la
corriente de salida. La corriente que entra a un circuito LED desde Vdd es igual a la
cantidad de corriene que sale a travs de Vss. }Tambin, si usted conecta tres LEDs al
BASIC Stamp cada circuito LED drena 5 mA, esto significa que el BASIC Stamp tiene que
suministrar a los tres circuitos un total de 15 mA
Para calcular la corriente que drena un circuito LED rojo, lo hacemos en dos pasos:
1. 1.Calculamos el voltaje en los extremos del Resistor.
2. Usamos la ley de Ohm para calcular la corriente a travs del Resistor.
La Figura B-2 muestra como calcular la corriente en el resistor. El voltaje suministrado a
su izquierda es 5 V. El votaje usado por cada componente est a la derecha del circuito.
El voltaje que no conocemos al principio es Vr, el voltaje en los extremos del resistor.
Pero conocemos que el voltaje en los extremos del LED es 1.7 V. (el voltaje en sentido
directo del diodo emisor de luz). Tambin sabemos que el voltaje en los componentes
suman 5 V de acuerdo con la Ley de Kirchhoff de Voltaje. La diferencia entre 5 V y 1.7
V es 3.3 V, entonces este debe ser el voltaje en los extremos del resistor.
VR + 1.7 V = 5 V
VR = 5 V 1.7 V
VR = 3.3V
Figura B-2
El voltaje en el
circuito,
Resistor, y
LED
Kilo En el sistema mtrico decimal kilo significa 1000. En el sistema mtrico decimal 1000
se dice kilo, y se abrevia con la letra minscula k. En lugar de escribir 1000 , podemos
escribir 1 K. Y se pronuncia un K. De igual manera 2000 se escribe 2 K .
En el sistema mtrico decimal, mili es 1/1000 is se abrevia con la letra minuscula m. Si el
BASIC Stamp proporciona a un circuito LED 3.3 milesimas de Amper, esto es 3.3
miliamperes o 3.3 mA.
Qu es un mA? Se pronuncia milamper, es la notacin de una milsima de amper. La m
en mA es la notacin mtrica para mili, que es 1/1000 . La A en mA se usa para amperes.
Ponga las dos juntas y tiene miliampers, y es muy til para describir la cantidad de corriente
drenada por el BASIC Stamp y los circuitos que a l se conectan.
Ahora que hemos calculado el voltaje en los extremos del resistor, la Figura B-3 muestra
un ejemplo de usar ese valor para calcular la corriente que pasa por el resistor.
Empezamos con la ley de Ohm; V = R x I. Usted conoce la respuesta de V (3.3 V) y R
(470 ). Ahora despejamos I (la corriente).
V = IR
3.3V = I 470
3.3 V
I=
470
I 0.00702 V
I = 0.00702 A
7.02
I=
A
1000
I = 7.02 mA
Figura B-3
Calculo de la
corriente a travs
del Resistor
Digamos que usted desea que un pin E/S encienda dos LEDs al mismo tiempo. Esto
significa que internamente el BASIC Stamp deber proporcionar a los circuitos lo que
muestra la Figura B-4. Podr el circuito exceder la corriente lmite en los pins E/S de 20
mA? Calculemoslo. Recuerde que la versin simplificada de la Ley de Kirchhoff de
Corriente dice que la corriente total drenada por la fuente es igual a la corriente
suministrada a todo los circuitos. Esto significa que I en la Figura B-4 es igual al total de
las dos corrientes que son drenadas. Simplemente sume las dos corrientes drenadas, y la
respuesta ser de 14.04 mA, que se puede redondear como 14.0 mA. Como la corriente
drenada est debajo de el lmite de 20 mA de los pines de E/S, se pueden conectar con
seguridad al pin E/S y conmutar con el BASIC Stamp.
I = I 1 + I 2 + ... I i
I = 7.02 mA + 7.02 mA
I = 14.04 mA 14.0 mA
Figura B-4
Corriente
Total
proporcionada
a los dos
Circuitos LED
9 Repita el ejercicio de la Figura B-2 pero use Vin Vss = 9 V en lugar de Vdd
Vss = 5 V.
Considerando que el voltaje en sentido directo no cambia, la respuesta es Vr = 7.3 V. El
voltaje medido en el resitor probablemente sea menor porque el voltaje en sentido directo
del LED es mayor, porque pasa ms corriente por el circuito.
9 Repita el ejercicio de la Figura B-3 pero use un resistor de 1 K .
Respuesta: I = 3.3 mA
9 Use Vr = 7.3 V para hacer el ejercicio en la Figura B-3 con un resistor de 1 K ..
Respuesta: I = 7.3 mA
9 Repita el ejercicio que muestra la Figura B-4 con un resistor de 470 y el otro
de 1 K ..
Respuesta: I = 7.02 mA + 3.3 mA = 10.32 mA.
El texto antes de los dos puntos, es lo que el telefono celular muestra como nombre de la
cancin. En este caso el tono se llama:
TakeMeOutToTheBallGame:
Entre los primeros y segundos dos puntos, se introdujeron los ajustes por default usando
d, o, y b. Esto es lo que significan:
d duration
o- octava
b batidos por minuto o tempo.
Las notas de la melodia se meten despues de los segundos dos puntos, y se separan con
comas. Si se usa la letra de la nota, esa nota se tocar con la duracin default in la octava
por default Por ejemplo, la segunda nota de TakeMeOutToTheBallGame es:
,c,
Como no hay otra informacin, se tocar con la duracin default de un cuarto de nota
(d=4), en la sptima octava (o=7)
Una nota puede tener hasta cinco caracteres entre las comas, esto es lo que especifica
cada carcter:
Por ejemplo:
,2g#.6,
significa toca la media nota G bemol por 1 duracin de la media nota y tcala en la
sexta octava.
Estos son unos pocos ejemplos de TakeMeOutToTheBallGame:
,2g.6, media nota, G, punteada, sexta octava
,a6,
duracion de la nota de un cuarto por default. Una nota tocada en la
sexta octava
,g#6, duracin un cuarto, nota g , bemol (escrita como #), sexta octava
El carcter:
,p,
indica pausa, y se usa para los silencios. Sin informacin extra, la p se toca por defaul en
duraciones de un cuarto. Usted podra tambien tocar media nota en forma de silencio
usando:
,2p,
ndice Alfabetico
-$-
** (Operador de multiplicacin
alta), 273
*/ (Multipicacin Media), 84
*/ (Operador de Multiplicacin
Media), 273
-:-
:, 45
-?-
? (symbol = x formato), 45
-1-
Anodo, 30
LED, 30
Apostrofe, 42
Area de Prototipo, 31
Argumentos, 39
Automatizacin, 334
-B-
Base
del Fototransistor, 199
Transistor, 293
Base-2 nmeros, 67
BASIC Stamp, 330
BASIC Stamp 2, 11
Bateria, 34
Batido, 255
Benjamin Franklin, 35
Bicolor LED, 50
Binario, 61
Bit, 45
Bloque de Cdigos, 78
Booleana, 61
Botn
High Activo, 69
BS1, 330
BS2, 330
BS2e, 330
BS2p24, 330
BS2p40, 330
BS2pe, 330
BS2px, 232, 330
BS2sx, 330
Bucle anidado, 253
Ctodo
Catodo Comn & indicador de
segmentos, 172
Comentarios al cdigo, 42
Communication products, 327
Concepto diagrama, 313
Conductor, 339
conectores, 31
Conmutar, 61
Constantes, 162
Contando, 80
Control caracteres. Vea DEBUG
Control Caracteres
Control Caracteres
DEBUG
CR, 25
Controlar, 61
Conversin hexadecimal a
decimal, 207
Corriente, 28, 35, 339
Milamper, 344
CRSRUP, 129
-D-
DATA, 259
DCD, 272
DEBUG, 39
DEBUG Control Caracteres, 129
CRSRUP, 129
DEBUG Formato
DEBUG formatos
? (symbol = x formato), 45
Debug Terminal
Transmit and Receive Windowpane, 121
DEBUGIN, 120
DEC, 120, 209
Decimal formato DEC, 209
Demostracin del Concepto, 321
Derivacin del Potenciometro, 302
Desbordamiento, 276
Descripcin funcional, 313
Diagrama de Tiempo, 104
diodo, 30
diodo emisor de luz. Vea LED
Diodos Emisores de Luz. Vea LED
DIRH, 180
Disparador Schmitt, 232
Display LCD, 325
Dispositivo Paralelo, 179
Divisor de voltaje, 157
DO...LOOP, 39, 82, 124
DTMFOUT, 255
-E-
Eco, 121
Editor BASIC Stamp, 15
EEPROM, 205
Electron, 34, 339
Emisor
del Fototransistor, 199
Transistor, 293
END, 63
Entero, 273
Error de Rollover, 122
Escalamiento, 160
Especificaciones, 314
Espectro de colores, 198
Esquemtico, 35
Etiqueta, 219
EXIT, 285, 320
-F-
Farads, 166
FlexiForce Sensor, 323
FOR...NEXT, 43
Fotoresistor, 198
Fototransistor, 199
Fraccin, 84
Frecuencia, 248
Frecuencia Dual Muti Tono, 255
FREQOUT, 250, 254
-G-
Google, 328
GOSUB, 218
GOTO, 219
Grado, 101
Graphing software, 215
-H-
hertz, 250
Hertz, 248
Hexadecimal formato $, 209
IF...ELSEIF...ELSE, 75
IF...THEN, 78
IF..THEN...ELSE, 71
IN, 67
Indicador de 7 segmentos, 171, 172
Indicador LED de 7 segmentos,
173
Inicializacin de Variables, 82
Insertar, 31
Interferencia, 255
-J-
KCL, 343
kHz, 248
Kilo, 344
KVL, 343
-L-
mA, 344
Manda y Ejecuta, 291
Mandar, 61
Mapa de memoria, 205
Mapa de Memoria, 206
Mapa de pines, 172, 296
Mediciones de la Tierra, 334
Medidor de luz, 215
Memoria
Sobre escribiendo el programa, 209
microcontrolador, 11
Microcontrolador Propeller, 331
Microfarads, 145
Microsegundo, 105
Mili, 344
Milisegundo, 39
Milisengundo, 105
Modificaro WORD, 208
Motor Control product, 327
Msica
Punteadas, 267
Silencios, 262
Tempo, 263
-N-
Nanometro, 198
nc, 173
Neutra, 34
Neutrn, 339
Nib, 45
No-conecta, 173
Notas bemol, 257
Notas sostenidos, 257
Ncleo, 339
Numbers
Binary, 180
Octava, 257
Ohm, 339
Omega , 28
ON GOSUB, 219
ON GOTO, 219
ondas de sonid. Vea Ondas sonoras
Operaciones matemticas, 271
OR, 78
OUTH, 180
-P-
PBASIC Lenguage
WRITE, 209
PBASIC Lenguaje
AND, 78
Argumentos, 39
Bit, 45
Byte, 45
CRSRUP, 129
DATA, 259
DCD, 272
DEBUG, 39
DEBUGIN, 120
DEC, 209
DEC. See
DIRH, 180
DO...LOOP, 39, 82, 124
END, 63
EXIT, 285, 320
FOR...NEXT, 43, 124
FREQOUT, 250, 254
GOSUB, 218
GOTO, 219
HOME, 76
IF...ELSEIF...ELSE, 75
IF...THEN, 78
IF..THEN...ELSE, 71
IN, 67
LOOKDOWN, 188, 189
LOOKUP, 185
LOW, 39
Nib, 45
ON GOSUB, 219
ON GOTO, 219
OR, 78
OUTH, 180
PAUSE, 39
PIN, 164
PULSOUT, 105
RANDOM, 85
RCTIME, 151, 200
READ, 208
RETURN, 218
SERIN, 320
SEROUT, 320
STEP, 124
TOGGLE, 300
UNTIL, 82, 124
WHILE, 124
Word, 208
WRITE, 208
PBASIC Lrnguaje
Nib, 45
PBASIC Operador
** (Multiplicacin alta), 273
*/ (Multiplicacin Media), 273
PBASIC Operadores
*/ (Multipicacin Media), 84
DCD, 272
Orden de ejecucin, 271
Parentesis, 271
PBSIC Lenguaje
HIGH, 39
PIN, 164
Pines E/]S, 32
Pines E/S
Direccin default, 183
Polling, 80, 82
Potenciometro, 141
Potenciometro Resistor Variable
(de una vuelta), 141
Potentiometer
AD5220 (digital), 296
Program Listing
SimpleLookup.bs2, 185
Program Listings
ActionTones.bs2, 252
Ch02Prj01_Countdown.bs2, 59
ReactionTimer.bs2, 81
Ch03Prj01_TwoPlayerReactionTimer.bs2,
90
ReadLightMeasurementsFromEeprom.bs
2, 212
Ch04Prj01Soln1__KillSwitch.bs2, 137
ReadPotWithRcTime.bs2, 154
Ch07Prj01_Blinds_Control.bs2, 245
ReadPushbuttonState.bs2, 68
Ch07Prj02_Blinds_Control_Extra.bs2,
246
SegmentTestWithHighLow.bs2, 179
Ch5Prj01_ControlServoWithPot.bs2, 168
Ch6Prj01_FishAndChips.bs2, 194
SelectCaseWithCharacters.bs2, 278
ServoCenter.bs2, 106
SimpleLookdown.bs2, 189
Ch8Prj01_PushButtonToneGenerator.bs2
, 289
SimpleSubroutines.bs2, 219
Ch9Ex01_SetTapToZero.bs2, 306
SlowServoSignalsForLed.bs2, 114
Ch9Prj01_PhotoControlledDigitalPot.bs2,
308
StoreLightMeasurementsInEeprom.bs2,
210
ControlServoWithPot.bs2, 161
TerminalControlledDigitalPot.bs2, 303
DialDisplay.bs2, 190
TestBiColorLed.bs2, 54
DigitalPotUpDownWithToggle.bs2, 301
TestBinaryPhototransistor.bs2, 235
DisplayDigits.bs2, 181
TestPhototransistor.bs2, 203
DisplayDigitsWithLookup.bs2, 186
TestPiezoWithFreqout.bs2, 250
DoReMiFaSolLaTiDo.bs2, 258
TestSecondLed.bs2, 48
LightMeter.bs2, 222
ThreeServoPositions.bs2, 116
MicroAlarmProto(Dev-009).bs2, 318
TwinkleTwinkle.bs2, 260
MicroMusicWithRtttl.bs2, 280
MusicWithMoreFeatures.bs2, 268
NestedLoops.bs2, 253
NotesAndDurations.bs2, 263
PairsOfTones.bs2, 255
PhototransistorAnalogToBinary.bs2, 229
PolledRcTimer.bs2, 149
PushbuttonControlledLed.bs2, 71
PushbuttonControlOfTwoLeds.bs2, 75
Protn, 339
Prototipo, 311
Proyecto de la Alarma, 315
Pseudo random, 86
Puerto COM, 41
PULSOUT, 105
Punteadas en msica, 267
Punto de referencia, 296
-R-
RANDOM, 85
Resistor variable
potenciometro (digital), 296
RETURN, 218
Robtica con el Boe-Bot, 334
Rutina Principal, 224
-S-
SELECTCASE, 275
Semilla, 86
Sensar, 61
Sensor de Movimiento PIR, 323
Sensores Aplicados, 334
Sensores Inteligentes y
Aplicaciones, 334
Sensores Inteligentes y
Aplicacines, 326
Sensors products, 327
SERIN, 320
SEROUT, 320
Servo
Diagrama de Tiempo, 104
Frase de precaucin, 96
TOGGLE, 300
Tokens, 205, 209, 291
Tolerancia, 29, 302
Transistor, 199, 293
NPN, 293
Transmitir, 61
TTL, 61
Tutoriales en video, 335
-U-
OUTH, 180
Word, 45
Vdd, 343
Vea DEBUG Formatoss}.
Vea Pines E/S, 32
Ven, 343
Ventana de Transmisin, 121
Video
Construya su Propio Mini Temporizador,
335
Volt, 339
Voltaje, 35, 339
Voltaje decay circuit, 147
Voltaje Directo, 343
Vss, 343
-W-
WHILE, 124
Word, 45
WRITE, 208, 209
-
F (microfarad), 145
Las partes y cantidades estn sujetas a cambios sin aviso. Las partes pueden ser diferentes
a las que se muestran en esta imagen. Si tiene preguntas respecto a su kit, por favor
mande un email a stampsinclass.com