Publicado el Deja un comentario

29. Intermitente 2

Nueva función analogWrite (pin, val)

Hoy veremos una de las funciones más utilizadas en cualquier proyecto Arduino, analogWrite(), con ella puedes enviar un valor analógico a uno de los 6 pines PWM con un valor variable entre 0 y 256.

Se dice en términos informáticos que cuando un valor oscila entre 0 (2 elevado a 0) y 256 (2 elevado a 8) tiene una resolución de 8 bits, en nuestro caso, podemos decir que la función analogWrite tiene una resolución de 8 bits.

Entonces sólo necesitaremos darle dos valores enteros de entrada:

  1. pin: cualquiera de los pines PWM 3, 5, 6, 9, 10, u 11
  2. valor: cualquier valor entero entre 0 (valor mínimo) y 255 (valor máxio)

Un uso muy común para esta función sería la de encender un led conectado a un pin PWM, en este caso no nos limitaremos a encenderlo o apagarlo, sino que ahora podremos darle un valor intermedio para que luzca con mayor o menor intensidad según nos interese, así si le enviamos un valor de…

  • 0: no se encenderá
  • 128: se encenderá a la mitad de intensidad, al 50%
  • 255: se encenderá al máximo, al 100%
  • 64: se encenderá al 25%
  • 26: se encenderá al 10%

FPS y PWM

Tienes que entender cómo es posible que Arduino envía un valor analógico por un pin digital, aparentemente es un sinsentido, pero el truco está en la tecnología PWM, que permite enviar un tren de pulsos, de forma que si, por ejemplo, queremos que luzca al 50% un led le enviaremos valores de 0 V, 5 V, 0 V, 5 V, 0 V, 5 V o informáticamente hablando 0, 1, 0, 1, 0 1.. así el 50 % del tiempo está encendido y la otra mitad apagado, pero como se hace con una frecuencia altísima (cientos de veces por segundo) el ojo humano no lo nota y parece que el led se enciende al 50% de su valor máximo.

La frecuencia que Arduino usa en los pines PWM 3, 9, 10 y 11 es de 490 Hz. Y si necesitas un poco más de resolución debes saber que los pines 5 y 6 alcanzan los 980 Hz.

Secuencia antigua a 16 fps

De forma parecida, encontramos un símil entre la tecnología PWM y el cine; recuerda que una proyección cinematográfica engaña al ojo mostrando 24 fotogramas por segundo (fps), y si enviamos un fotograma blanco, otro negro repetidamente terminaremos viendo la pantalla gris. Actualmente se proyecta a 48 fps, mucho más nítido.

Nada tiene que ver con Arduino, pero aprovecho la ocasión para mostrar un interesante vídeo comparativo para que aprecies la diferencia entre ambas resoluciones, 24 y 48 fps:

También podemos usar estas 6 salidas PWM para conectar otros actuadores, como:

  • un motor de corriente continua y hacer que gire a diferentes velocidades
  • un zumbador y que suene a diferentes frecuencias

El resto de pines digitales no pueden ser utilizados en esta función.

Ejercicio

Tienes en la diapositiva un código que podrías guardar como “Intermitente2.ino” donde para probarlo deberías conectar un led con un a resistencia en serie y conectarlos al pin 10.

¿Qué hace este código?

Piénsalo un poco antes de seguir leyendo, mira las líneas de código y observa que hay dos bucles, uno creciente y otro decreciente.

El primer bucle se ejecuta 255 veces y va aumentando de 0 a 255 la intensidad del led, y el segundo hace lo contrario.

El resultado es un led que se enciende y apaga infinitamente aumentando y disminuyendo su brillo, sería como la luz de un faro visto de lejos.

Dejo una pregunta en el aire, ¿cuál es la frecuencia aproximada de este dispositivo intermitente?

Publicado el Deja un comentario

28. Intermitente

Vamos a crear nuestro primer proyecto con protoboard

Necesitaremos sólo dos elementos electrónicos, un led y  una resistencia de 220 Ω o 330 Ω.

Este, como todos los proyecto que realicemos en todo el curso, necesitará de dos o tres fases:

  1. Montaje hardware sobre la protoboard y Arduino
  2. Creación, compilación y subida del programa Wiring a la placa arduino
  3. [Corrección de errores si es necesario]

El código de este ejemplo se refiere al sketch “Blink” empleado en la diapositiva 19 que llamamos “Parpadeo.ino“.

Si lo has hecho bien, habrás conseguido construir un intermitente, a diferencia del proyecto Parpadeo, en esta ocasión el led no está directamente conectado a la protoboard, sino que lo podemos alejar de ella todo lo que queramos con los dos cables M-M que hemos empleado.

Ejercicio

Modifica el código anterior para añadir un segundo led en el pin 12, de forma que se alternen el encendido y apagado de ambos leds, como hacen algunos algunos semáforos de dos luces ámbar en los cruces. Llama a este programa “Intermitente.ino“.

Ahora podrías construir un semáforo como el de la imagen.