Variación de la intensidad de un LED con salidas digitales PWM
En este mini-tutorial veremos cómo iluminar un LED de forma variable en función de la lectura que obtengamos de un potenciómetro. Partiremos del Tutorial 3 – Entradas Analógicas, para ver más bien un ejemplo sobre cómo emplear un pin digital con PWM de Arduino.
Introducción al tutorial
Poco más que añadir, así es que os dejamos, como de costumbre, el vídeo con el resultado final que vamos a obtener.
Lista de componentes
- 1x Arduino Mega (podemos emplear cualquier Arduino que funcione a 5v).
- 1x Resistencia 220 Ω.
- 1x LED Blanco 5 mm.
- 1x Potenciómetro lineal de 10 kΩ.
- 1x Protoboard.
- 1x Juego de cables.
Montaje del diseño
Como habréis imaginado a estas alturas, no es nada del otro mundo. Partiendo del montaje del Tutorial 3 (un pin del potenciómetro a una fuente de tensión positiva, otro pin a uno de los pines analógicos de arduino, y el último pin lo conectaremos a masa), conectaremos el led en serie con la resistencia a un pin digital con PWM:
Seguiremos utilizando el pin analógico A0 como entrada analógica, y los pines de 5v y gnd del propio arduino como fuente y referencia de tensión para la parte de recepción de datos. Para conectar el led con la resistencia en serie utilizaremos el pin digital 10.
Escribiendo el programa
Veamos el código y analicemos después las novedades.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
/* *********************************************************** **** rDuinoStar.com - Comunidad Arduino en Español **** *********************************************************** Tutorial 4.- Salidas Digitales PWM Lectura de entrada analógica y variación en la intensidad de iluminación de un LED utilizando salidas digitales con modulación en ancho del pulso. Uso público citando el autor o procedencia, bajo licencia: Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0) Éste y más ejemplos en rDuinoStar.com, tu comunidad Arduino en Español */ // Pin digital PWM que utilizaremos para alimentar el LED int pinLed = 10; // Pin analógico que utilizaremos como entrada de datos int entradaDatos = A0; // Variable que recogerá las lecturas de A0 int valorDatos = 0; void setup() { // Configuramos el pin del LED como salida, aunque no es necesario pinMode(pinLed, OUTPUT); } void loop() { // Leemos el valor en la entrada analógica A0 y se lo asignamos a // valorDatos valorDatos = analogRead(entradaDatos); // Determinamos el nivel de salida analogWrite(pinLed, valorDatos / 4); } |
A pesar de no ser necesario indicar con pinMode(pinLed, OUTPUT); , lo hemos incluido para mayor claridad.
Como ya comentamos en el tutorial anterior, la función analogRead(entradaDatos) va a proporcionarnos un valor situado entre 0 y 1023.
La línea necesaria para iluminar el led la encontramos destacada, analogWrite(pinLed, valorDatos / 4); . Su trabajo es «escribir» en la salida indicada como primer argumento ( pinLed ) el valor que pasemos como segundo argumento ( valorDatos / 4 ). El valor que «escribimos» será el leído dividido por cuatro porque en las salidas digitales PWM el rango de valores de salida va desde 0 hasta 255. En nuestro caso, 0 se correspondería con un ancho de pulso del 0% del periodo (0v), y 255 se correspondería con un ancho de pulso del 100% del periodo (5v).
Esperamos que os haya servido de ayuda y ya sabéis, para cualquier duda/comentario, podéis hacerlo más abajo.
Perdon por mi torpeza.
Hay que registrarse, como hacerlo ?.
Podria obtener tutoriales y documentacion en pdf ?.
Muy interesantes vuestros tutoriales.