Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lección 3
Lección 3
Como podemos observar, junto al interruptor hay dos pequeos botones con una flecha
apuntando para arriba y otra para abajo. Si pulsamos sobre la primera simulamos el cierre
del interruptor y si pulsamos sobre la segunda simulamos su apertura.
El estado inicial del interruptor (abierto o cerrado) se puede establecer editando sus
propiedades utilizando en el men contextual la opcin "Editar las propiedades". Para
abrir el men contextual en Proteus debemos pulsar con el botn derecho del ratn sobre
el dispositivo en cuestin. En la ventana de dilogo que se abre, debemos seleccionar la
casilla "Editar todas las propiedades como texto" y entonces podremos ver la variable
STATE. Si le asignamos el valor 1 el dispositivo se inicia cerrado y si le asignamos el valor
0 lo har abierto.
Para conocer el estado de nuestro interruptor con una de las entradas digitales de nuestro
Arduino tenemos que dar los siguientes pasos. Primero definir que vamos a utilizar ese
pin como una entrada. Segundo conectarlo elctricamente a nuestro pin. Y, tercero y
ltimo, leer el estado del pin desde nuestro programa. Vamos a dar los tres pasos.
Ya vimos que para definir si un pin va a funcionar como entrada o salida, utilizbamos la
instruccin pinMode() dentro de la funcin setup(). En nuestro caso deseamos conectar
nuestro interruptor al pin 5, as que nuestro cdigo deber ser:
Sin embargo esta forma de conectar una entrada es una mala prctica que debemos
erradicar desde el principio de nuestros diseos. Aunque a primera vista puede parecer
que todo es correcto, existe un problema serio en utilizar las entradas de esta forma.
Cuando el interruptor est cerrado el pin 5 est en un estado conocido, +5V, y la entrada
estar activa. Pero, qu pasa cuando el interruptor est abierto? La respuesta rpida
podra ser que la entrada est a 0V y, por lo tanto, desactivada. Pero esta respuesta no es
correcta. En realidad cuando el interruptor est abierto la entrada se encuentra en un
estado indeterminado puesto que no est conectada a ningn potencial conocido. Para
entendernos, que un cable no est conectado al positivo de la fuente no significa que est
conectado al negativo. Los denominados "ruidos" o interferencias en el circuito pueden
generar potenciales indeterminados en nuestro pin de entrada. Para evitar esta
indefinicin el circuito que debemos utilizar es el siguiente que fija claramente el estado
del pin a +5V o a 0V.
Para conocer desde nuestro programa si el pin est activo o desactivado, utilizamos la
funcin digitalRead(). La sintaxis de esta funcin es la siguiente:
digitalRead( <nmero de pin> )
La funcin devolver un valor 1 cuando el pin est activo y un valor 0 cuando el pin est
desactivado.
Ahora ya estamos en condiciones de utilizar en el cdigo del programa nuestra primera
entrada digital para conocer el estado del interruptor y decidir si debemos encender el led
o apagarlo. Aunque sera ms preciso decir casi estamos en condiciones. Porque la frase
incluye la palabra "decidir" que hasta ahora no habamos utilizado. Tomar decisiones es
una de las tareas ms importantes de los ordenadores y precisamente su potencia viene
de esta capacidad de decisin. Para tomar decisiones, utilizamos las instrucciones de
control.
La instruccin de control ms bsica son los bloques de cdigo if...else. El objeto de un
bloque de cdigo if...else es evaluar una determinada condicin y en funcin de que sea
verdadera o falsa ejecutar sentencias diferentes. La sintaxis de un bloque if...else es la
siguiente.
if( <condicin> )
{
instrucciones que se ejecutan si la condicin se cumple (vale 1)
}
else
{
instrucciones que se ejecutan si la condicin no se cumple (vale 0)
}
Un ejemplo nos ayudar a entenderlo mejor. Nuestro objetivo es encender el led situado
en el pin 0 cuando el interruptor situado en el pin 5 est activo y apagarlo cuando est
desactivado. El cdigo de nuestro programa sera el siguiente.
Hasta ahora nos hemos limitado a que nuestro Arduino sea capaz de encender o apagar
leds. Es decir que somos capaces de hacer seales luminosas con nuestro Arduino. Pero
tambin podemos generar seales acsticas si en lugar de conectar un led a un pin de
nuestro Arduino, le conectamos un altavoz piezolctrico. El altavoz piezoelctrico es un
tipo de altavoz basado en la propiedades de los cristales piezoelctricos (polister o
cermica), que se deforman cuando se les aplica una tensin entre sus caras y que
actuando como transductor electroacstico es utilizado para la reproduccin de sonido.
Tambin se le suele conocer con el nombre de "chicharra".
Por defecto, el dispositivo SPEAKER viene configurado para funcionar a 1V. Para
adaptarlo a nuestra tensin de 5V debemos editar sus propiedades y cambiar este valor
en la variable "Nominal Input".
la octava superior. El oido humano capta slamente frecuencias que estn por encima de
los 20Hz y por debajo de los 20.000 (muy aproximadamente). As pues, y con mucha
suerte, slo podemos oir unas 10 octavas como mucho, con doce notas cada una. La nota
"La" sirve como referencia para todas las dems. A menudo se denomina "nota de afinar".
Se produce un "La" de afinar cuando el aire vibra 440 veces por segundo, es decir a 440
hertzios. Por convencin, a la octava que contiene esta nota "La" se le suele considerar la
cuarta.Hay otra nota "La", de una "octava" superior (la quinta octava) cuando el aire vibra
a 880 hertzios. Del mismo modo, hay un "La" que se produce cuando el aire vibra a
220Hz (tercera octava).
Por lo tanto, para conseguir una determinada nota, slo tenermos que hacer vibrar
nuestro altavoz a una determinada frecuencia. La tabla que identifica cada nota con su
frecuencia y toda la teora relativa a este tema la podemos encontrar muy bien explicada
en
el
siguiente
enlace: http://latecladeescape.com/t/Frecuencia+de+las+notas+musicales.
Una vez que sabemos que queremos emitir un La4 y un La5 tenemos que hacer vibrar
nuestro altavoz a unas frecuencia de 440Hz y 220Hz respectivamente, ya podemos hacer
los clculos necesarios para escribir nuestro cdigo. Para obtener una frecuencia de
440Hz necesitamos activar y desactivar nuestro altavoz con una separacin de tiempo
entre ambas rdenes (es decir, con un periodo) de 2.272 segundos:
frecuencia = 1 / periodo.
440 = 1 / x ---> x = 1 /440 = 0,002272 segundos = 2.272segundos.
Como la mitad de ese tiempo tiene que estar el altavoz encendido y la otra mitad
apagado, la separacin entre ambas rdenes debe ser:
2.272 / 2 = 1.136
Ese es el valor que hemos escrito cuando nuestro pulsador est desactivado. Para
obtener un La5 (una octava superior) utilizamos el valor 2.272 porque:
220 = 1 / x ---> x = 1 / 220 = 0,004545segundos. La mitad de ese valor 4.545 / 2 =
2.272.
Acabamos de ensearle los rudimentos de la msica a nuestro Arduino, pero todava nos
queda un largo trecho hasta que consigamos que Arduino funcione como un instrumento
musical y podamos interpretar una meloda con l. Pero es que hay que dejar algo para
las prximas lecciones.