ARDUINO: ENTRADAS-SALIDAS

Probaremos las entradas/salidas digitales, las salidas PWM y las entradas analógicas. Como práctica, regularemos el encendido de un diodo LED (salida PWM), dependiendo de la tensión de entrada que obtengamos en una entrada analógica. También construiremos un generador de 4 melodías, utilizando una salida digital de Arduino.

Los archivos de ejemplo que aparecen en el video, puedes descargarlos desde el siguiente enlace: ARDU_IN.rar

Arduino UNO dispone de 20 puntos de conexión: 14 Entradas/Salidas digitales, 6 de ellas podrían utilizarse como salidas PWM, y 6 entradas analógicas.

Las salidas PWM son de 8 bits, y están localizadas en los pines: 3, 5, 6, 9, 10 y 11.

Las funciones PWM hacen uso de los Timer para generar la señal de salida. Cada Timer puede controlar entre 2 y 3 de las salidas PWM. Para ello dispone de un registro de comparación por cada salida. Cuando se alcanza el tiempo correspondiente al valor del registro de comparación, la salida invierte su valor.

Cada salida conectada a un mismo temporizador comparte la misma frecuencia, aunque pueden tener distintos anchos de impulso (Duty cycle), dependiendo del valor de cada registro de comparación.

La frecuencia estándar para las salidas PWM en Arduino Uno, Mini y Nano es de 490 Hz para todos los pines, excepto para el 5 y 6 cuya frecuencia es de 980 Hz.

Al existir una asociación directa entre las salidas PWM y los Timer, es importante saber que no es posible utilizar un Timer en el programa si ya se está utilizando para controlar una salida PWM. Esta es la relación que existe entre los Timer y los controles PWM de Arduino Uno, Mini y Nano:

El Timer0 controla las salidas PWM 5 y 6
El Timer1 controla las salidas PWM 9 y 10
El Timer2 controla las salidas PWM 3 y 11

Por otra parte, la librería servo utiliza el Timer 1, de manera que tampoco podremos utilizar los pines 9 y 10 si estamos utilizando un servo.

Arduino: Entradas-Salidas

Cuando se utiliza una entrada analógica, es importante conocer el nivel de tensión máximo que vamos a muestrear. Nunca se deberían superar los  5V en las entradas, pero si podríamos utilizar umbrales máximos de menor tensión y mejorar la resolución de las medidas. Arduino dispone de la entrada AREF (pin 21 del ATmega328P) destinada para definir el nivel de tensión máximo de su conversor Analógico-Digital (ADC).

Si tienes alguna duda o sugerencia, deja un comentario.