ARD04 – PWM

Lo de las salidas digitales está muy bien, y es muy claro de entender: las “cosas” (un LED o lo que sea) están activadas o no lo están. Así de simple. Sin embargo, en ocasiones es necesario obtener salidas analógicas. Por ejemplo, suponte que queremos un LED que esté encendido, pero no del todo, tan brillante. Solo queremos que se encienda con la mitad de su intensidad (o una tercera parte, una cuarta parte, un 80 %….) Esto puede venirnos bien como indicador de otra cosa. Las salidas de Arduino son todas digitales: o están activadas o no lo están. Arduino recurre, para conseguir emular salidas analógicas, a una técnica llamada PWM (Pulse Width Modulation, Modulación de Anchura de Pulso). Observa los pines de salida de tu placa Arduino. Verás que hay varios (en concreto el 3, el 5, el 6, el 9, el 10 y el 11) que tienen el símbolo ~ grabado. Estas salidas se pueden programar, mediante PWM, para comportarse como si fueran analógicas. La técnica de PWM consiste en lo siguiente. Si tu tienes un valor digital 0 (LOW) fijo, la salida de señal en el tiempo es a 0 permanente, como ves en la figura 4.1.

ARD05 – Entradas analógicas

De la misma forma que se pueden obtener salidas analógicas, Arduino también puede detectar entradas analógicas. Una señal analógica de entrada es la proporcionada por un sensor o componente que puede presentar diversos valores de resistencia. Ya no es un pulsador (o interruptor o similar) que sólo admite dos estados (activado o desactivado). Ahora se trata de un elemento que puede ofrecer múltiples valores. El ejemplo más simple es un potenciómetro, o resistencia variable, que se controla a mano. También hay otras resistencias cuyo valor depende de la luz recibida (las llamadas LDR, que pueden actuar como sensores de luz), o de la temperatura (los termistores), etc.

ARD06 – Datos en serie

Ya sabemos que Arduino recibe el sketch que hemos codificado y lo ejecuta, reconociendo entradas o dando salidas de señal a diferentes dispositivos (hasta ahora, hemos usado un LED, pero ya veremos que podemos conectar otros elementos como altavoces, motores, etc). Además, Arduino puede enviar datos en serie a través del puerto USB al ordenador. El IDE de Arduino puede recibir estos datos y mostrárnoslos en una ventana como valores numéricos. Para gestionar este tipo de comunicación empleamos un objeto llamado Serial, que se encarga de la transmisión y presentación de datos. En este artítulo vamos a emplear el mismo circuito que en el anterior, por lo que no hay cambios en la parte hardware.

ARD07 – Calibración manual

El uso de elementos como los potenciómetros o los pulsadores para producir una señal de entrada está muy bien, porque tenemos un control manual directo sobre la entrada pero, en muchísimos casos, se queda corto. En la naturaleza existen parámetros como la temperatura, la luz, la humedad, etc que varían las condiciones de un entorno, y tenemos que poder medirlos con un circuito electrónico. Por ejemplo, podemos querer hacer con nuestro Arduino un equipo que mida la temperatura ambiente, y la refleje en una escala de LED’s. Eso es, justamente, lo que vamos a hacer ahora. Este capítulo nos ayudará a conocer la naturaleza y comportamiento de un sensor térmico, y a programarlo adecuadamente en Arduino. También introduciremos algunos conceptos del lenguaje de programación Arduino y un concepto especialmente interesante cuando se usan sensores: la calibración, para obtener un reflejo real del valor del parámetro medido por el sensor.

ARD08 – Calibración automática

La calibración manual está muy bien, si queremos partir de unos valores base concretos para empezar nuestras mediciones. Pero ¿que ocurre si las condiciones del entorno que queremos medir (luz, temperatura, etc) son tan variables de un momento a otro que no podemos tener un valor base durante toda la ejecución del sketch? Piénsalo. Suponte un sensor de luz, como pueda ser una resistencia LDR (cuyo valor resistivo varía según la luz que incide sobre ella) funcionando en un entorno donde la iluminación varía constantemente, encendiendo y apagando lámparas, o por reflejos de sol a través de la ventana, etc). Lo que necesitas en este caso, para que Arduino pueda medir la iluminación relativa que incide sobre la LDR de una forma fiable a lo largo de un tiempo de funcionamiento, es una calibración automática, de modo que el valor base no venga establecido por programación, sino que se redefina según los valores máximo y mínimo de iluminación (o el parámetro que estemos midiendo), en cada momento. Veamos en este capítulo como funciona la calibración automática de sensores.

ARD09 – Servomotores

Con Arduino es posible manejar, prácticamente, cualquier dispositivo. En este capítulo vamos a trabajar con servomotores. Son un tipo de motores eléctricos que llevan tres cables para conectar: los dos típicos de masa y alimentación y un tercero para control de giro. Es a través de este tercer cable que controlaremos la posición del servomotor. Aunque en el mercado hay gran cantidad de modelos para distintos usos, el objetivo general de un servomotor no es mover grandes cargas, sino actuar sobre otros mecanismos, como cerrojos, válvulas hidráulicas, etc. Su giro está limitado a 180 grados, es decir, no dan vueltas continuamente, como un motor convencional, sino que dan media vuelta (o una fracción de esa media vuelta), y luego vuelven a su posición. Con ese giro es suficiente para mover una leva que actúe sobre otro mecanismo, como hemos mencionado. Por ejemplo, algunos vehículos llevan el acelerador conectado eléctricamente a un servomotor y la leva de este actúa sobre la válvula que regula el paso de combustible.

ARD10 – Motores

En este capítulo vamos a hacer un montaje conceptualmente muy simple: cuenta con un motor eléctrico. Al pulsar un botón, el motor recibe corriente y gira. Dicho así suena a poca cosa, pero nos va a venir muy bien para entender un concepto importante: los pines de salida de Arduino pueden proporcionar una señal de muy poca intensidad de corriente. Existen dispositivos que necesitan funcionar con tensiones o intensidades que la placa Arduino no puede manejar. Si conectásemos un pequeño motorcito eléctrico directamente a la placa, no llegaría a funcionar y, muy probablemente, la placa se dañaría irremisiblemente.

ARD11 – Sonido

Nuestra plaquita Arduino también puede generar frecuencias audibles, que podemos reproducir mediante un transductor, que recibe una señal de cierta frecuencia y la convierte en sonido. Lo ideal es usar un altavoz de mediana calidad pero, para experimentar, de momento emplearemos un simple zumbador. Se venden en cualquier tienda de electrónica y son muy baratos. No nos proporcionará una reproducción musical de alta calidad, pero nos permitirá aprender a generar sonidos. Ya lo sustituiríamos, si fuera necesario, por un altavoz mejor. En la figura 11.1 vemos un zumbador como el que usaremos en este montaje.

ARD12 – Pantalla LCD

En este artículo vamos a aprender a usar una pantalla de cristal líquido (LCD) para que nuestra placa Arduino nos pueda enviar mensajes escritos. En realidad, para enviarnos mensajes escritos, podríamos usar la consola serie que ya conocemos, pero, ¿qué ocurre si, una vez que el sketch esté cargado en la placa Arduino, queremos que pueda funcionar independientemente de un ordenador? Ahí entra en juego el incorporar un sistema de visualización de datos autónomo, que pueda funcionar, simplemente, conectado a Arduino. La pantalla que vamos a usar aquí es el modelo LCD 1602A, que es de uso muy común, cuenta con dos líneas de visualización de datos, de 16 caracteres cada una.

ARD13 – Teclados matriciales

En este artículo vamos a aprender a manejar un teclado matricial. Se trata de una matriz de pulsadores, dispuestos “en cuadro”, de forma que hay tantos hilos de conexión como filas más columnas. Por ejemplo, supongamos el teclado típico de un cajero automático. Tiene 16 pulsadores distribuidos en cuatro filas y cuatro columnas. Por lo tanto, podemos identificar cada pulsador con una coordenada de fila y columna. Con un total de ocho hilos podemos identificar cada pulsador de forma inequívoca.