Escolar Documentos
Profissional Documentos
Cultura Documentos
Ikasgaia/Tema:
Bachillerato 2
Microcontroladores
Ikasgaia/Asignatura:
Dokumentua/Documento:
DAO
Ficha 03 Contando
Ficha 03 - Contando
Introduccin
En esta ficha se va a seguir trabajando con pulsadores y LEDs. Para empezar, aplicaremos el siguiente esquema de un
pulsador y un LED:
La funcionalidad es similar: ambas envan el dato al ordenador, y es posible visualizarlo en la interfaz del programa Arduino
mediante el botn "Monitor Serial". La nica diferencia entre una y otra es la siguiente:
Serial.println aade un salto de lnea despus de escribir el dato (pasa a la lnea siguiente).
Serial.print no aade un salto de lnea despus de escribir el dato (no pasa a la lnea siguiente).
El dato podr ser una variable, un nmero, una constante, o un texto (en caso de ser un texto, se escribir entrecomillado,
con comillas dobles "").
Orrialde/pgina: 1/5
Kurtso/Curso:
Ikasgaia/Tema:
Bachillerato 2
Microcontroladores
Ikasgaia/Asignatura:
Dokumentua/Documento:
DAO
Ficha 03 Contando
Vamos a probarlo con un programa muy sencillo, que slo har dos cosas:
Ejercicio: copia el cdigo, programa con l la placa y ejectalo. Abre el monitor serial, y comprueba qu ocurre cuando
pulsas y sueltas el pulsador. Prueba a cambiar el "println" de la ltima lnea por un "print". Qu ocurre?
Contando pulsaciones
Vamos a crear un nuevo programa que cuente cuntas veces hemos pulsado (es decir, soltado) el pulsador, y muestre el
nmero a travs del monitor serial del ordenador. Para ello, necesitaremos un programa que haga lo siguiente:
Orrialde/pgina: 2/5
Kurtso/Curso:
Ikasgaia/Tema:
Bachillerato 2
Microcontroladores
Ikasgaia/Asignatura:
Dokumentua/Documento:
DAO
Ficha 03 Contando
Para ello vamos a necesitar que nuestro programa de una vuelta a otra de la funcin "loop" recuerde:
Orrialde/pgina: 3/5
Kurtso/Curso:
Ikasgaia/Tema:
Bachillerato 2
Microcontroladores
Ikasgaia/Asignatura:
Dokumentua/Documento:
DAO
Ficha 03 Contando
Por un lado, Arduino tendr que saber si est contando hacia delante o hacia atrs. Para que lo sepa, podramos
tener una variable booleana (por ejemplo, "incrementar"), que sea "true" si estamos contando hacia delante, y false
si estamos contando hacia atrs. Piensa si su valor inicial tiene que ser "true" o "false".
Por otro lado, la funcin "loop" tendr que ser algo ms complicada. En el ejemplo anterior, lo nico que se haca
era, en caso de haberse producido una pulsacin, incrementar el contador y enviar el dato al ordenador. El nuevo
esquema de la funcin tendr que ser el siguiente:
o Si se ha producido una pulsacin:
1. Si se est incrementando:
Incrementar el contador
Si el contador ha llegado a diez
o Ya no se est incrementando (de cara a la siguiente pulsacin habr que contar
hacia atrs)
2. Si no
Decrementar el contador
Si el contador ha llegado a cero
o Hay que volver a incrementar (de cara a la siguiente pulsacin habr que contar
hacia delante)
3. Enviar el dato al ordenador
Ejercicio: aade al ejercicio anterior la variable necesaria, y cambia la funcin "loop" para que haga lo que indica el
esquema anterior.
Mejora: seras capaz incluir el cdigo de los puntos 1 y 2 en una funcin, y en caso de producirse una pulsacin, utilizarla?
LED de 11 intensidades
Vamos a terminar con un ltimo ejercicio usando el LED del esquema, con un sencillo cambio:
En la funcin "setup" indica que vas a usar el pin del LED como salida.
En la funcin "loop" justo despus de enviar el contador al ordenador, usa la funcin "analogWrite" para hacer que
el LED se encienda con una intensidad proporcional al valor del contador: 0, apagado; 10, totalmente encendido.
Ten en cuenta que:
o Para que el LED est apagado, el valor que se enve a analogWrite tiene que ser 0.
o Para que est totalmente encendido, el valor que se enva a analogWrite tiene que ser 255.
o Los valores intermedios producirn intensidades intermedias, por ejemplo, un valor de 4 en el contador
equivaldra a un valor 102 en el LED.
Para lograr esta funcionalidad, slo tienes que multiplicar el contador por el valor adecuado, usando la funcin
"analogWrite" de un modo similar a:
analogWrite(pinLED, contador * );
Sustituyendo los puntos suspensivos por el valor que permita la conversin indicada arriba
Ejercicio: realiza el programa que se propone.
Orrialde/pgina: 4/5
Kurtso/Curso:
Ikasgaia/Tema:
Bachillerato 2
Microcontroladores
Ikasgaia/Asignatura:
Dokumentua/Documento:
DAO
Ficha 03 Contando
Orrialde/pgina: 5/5