Regulador de intensidad LED

Este contenido es un complemento práctico para los contenidos teóricos de los temas 4. Fundamentos de Computación Física, 5. Internet de las Cosas y 6. Robótica, de la asignatura Computación y Robótica de 2º y 3º de ESO.

🛠️ Materiales:

En este proyecto vamos a descubrir un super poder que tiene nuestra tarjeta Arduino, y es el de poder hacer escrituras analógicas.

Hasta ahora sólo habíamos utilizado la escritura digital. ¿Recuerdas cuando usábamos el PIN 12 y lo poníamos en HIGH o LOW? Estábamos haciendo escrituras digitales, poniendo un pin a 1 (HIGH = pasa corriente) o a 0 (LOW = no pasa corriente). Es decir, sólo podíamos tener 2 valores distintos: 0 y 1.

Resulta que con la escritura analógica, tenemos la posibilidad de trabajar con 256 valores distintos: del 0 al 255.

Para demostrar esta característica de nuestra placa, utilizaremos un LED azul cuya luz iremos cambiando de intensidad. Por tanto, los materiales que necesitaremos son:

  • Placa Arduino, con cable USB.
  • Protoboard.
  • Un LED azul.
  • Una resistencia de 220 Ω.
  • Cables dupont.

Ya sabemos cómo hacer que un LED se encienda, así que el montaje de nuestro circuito será muy parecido a lo que ya conocíamos, pero en este caso, en vez de conectarlo al PIN 12, lo conectaremos al PIN 9:

Cuando conectamos la placa al cable USB, la corriente entra en la placa, sale por el PIN 9, llega a la resistencia por el cable rojo, luego a la patilla + del LED, luego a la patilla – del LED y finalmente por el cable negro llega a GND/tierra, completándose el recorrido.

Pero, ¿por qué lo conectamos al PIN 9? Bueno, nuestro objetivo es trabajar con salidas analógicas. Si te fijas en la parte superior de la placa hay una inscripción que pone DIGITAL (PWM ~) y una serie de salidas marcadas con el símbolo ~. Ésas son las únicas salidas que tienen la capacidad de trabajar en modo analógico: PINES 3, 5, 6, 9, 10 y 11.

Pues bien, elegimos cualquiera de ellas, por ejemplo el PIN 9, pero funciona igual con cualquiera de los pines analógicos indicados.

Eso es todo el montaje que necesitamos. Ahora, como siempre, escribiremos el programa que controlará nuestro sistema. 

Partimos de este esqueleto de código vacío:

Escribir el código de este proyecto es muy sencillo, por eso, empezaremos a introducir nuevos conceptos de programación que mejorarán sustancialmente nuestros programas.

De la misma manera que utilizamos variables en Scratch o Makecode (en cursos anteriores), también son muy recomendables usarlas en Arduino. La primera variable que vamos a usar es para indicarle al programa que vamos a utilizar el PIN 9. Como 9 es un número entero (sin decimales), crearemos una variable entera, en inglés INTEGER, en programación C++ int:

Fíjate bien dónde colocamos la creación de la variable, al principio del todo, antes incluso de la función setup que configura inicialmente la placa. Primero le indicamos el tipo de variable (int), luego el nombre de la variable (ledAzul) y luego le asignamos un valor (9). En el lenguaje de programación C++, todas las instrucciones deben terminar en ; así que no te olvides de ponerlo o el programa fallará.

A continuación, lo que haremos será indicarle a la placa, en la zona de configuración inicial que vamos a usar el PIN 9 en modo salida:

Ahí, ya estamos utilizando nuestra variable. En vez de poner un 9 (o un 12 como hicimos en el primer proyecto), pondremos el nombre de nuestra variable, que es la que contiene el 9.

Lo siguiente que tenemos que hacer es encender el LED. En el primer programa que construimos utilizamos la instrucción digitalWrite(12,HIGH); pero en nuestro caso queremos hacer una escritura analógica, usaremos analogWrite. Además, en vez de poner directamente el número del PIN ponemos la variable que almacena nuestro número de PIN ledAzul y por último, como es una escritura analógica, no ponemos HIGH o LOW sino un valor entre 0 y 255. Pero no lo vamos a poner directamente, sino que crearemos otra variable que lo almacenará brilloMaximo y elegiremos el valor más alto que podemos usar 255.

Hemos retirado los comentarios para mejorar la legibilidad del programa, añadido una nueva variable con su valor, y también hemos añadido la instrucción que enciende el LED a su máxima potencia utilizando una escritura analógica. Si le das a Iniciar simulación, verás como el LED se enciende.

Ahora es cuando vamos a demostrar cómo funciona la escritura analógica. Vamos a ir quitándole intensidad al LED hasta que se apague. Esto lo haremos creando nuevas variables para distintos niveles de intensidad hasta tener 4 niveles:

  • brilloMaximo = 255;
  • brilloMedioAlto = 171;
  • brilloMedioBajo = 86;
  • brilloMinimo = 0;

Y también, vamos a poner una espera, con otra variable de medio segundo (500ms) para poder apreciar el efecto. Con esto conseguiremos que el LED se encienda completamente, vaya perdiendo intensidad, hasta que se apague, vuelva a encenderse, vuelva a ir perdiendo intensidad, hasta que se apague, y así indefinidamente mientras la placa esté recibiendo corriente.

Por último, es momento de llevar el proyecto a los componentes reales del aula.

Como siempre, ya sabes:

  1. Descarga en tu ordenador el archivo .ino
  2. Conecta la placa al ordenador.
  3. Abre Arduino IDE.
  4. Carga el programa y revisa que el código sea correcto.
  5. Desde Arduino IDE, guarda el programa en la placa.
  6. Desconecta la placa.
  7. Monta tu circuito sobre la mesa.
  8. Avisa al profesor para que lo revise.
  9. Solo si te da el visto bueno, puedes conectar la placa y comprobar que todo funciona correctamente.

Esto es lo que debes obtener:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *