Publicado el Deja un comentario

41. Salidas analógicas

Tenemos 6 salidas analógicas en Arduino UNO

Numeradas con la señal PWM o virgulilla ~, tenemos algunos pines digitales que tienen la funcionalidad añadida de comportarse como salidas analógicas (realmente pseudoanalógicas) porque incorporan internamente un conversor digital-analógico, estos pines en Arduino UNO son:

3, 5, 6, 9, 10 y 11

En estos pines podremos utilizar la función analogWrite() para indicar que queremos sacar por uno de esos pines una señal con valores entre 0 y 5 V, lo que significa que con una resolución de salida de 8 bits podemos sacar 2 elevado a 8 (255) valores diferentes escalonados entre 0 y 5 V.

Entonces podemos utilizar una variable entera (int) para almacenar este valor, y adelantando un poco de lenguaje Wiring, podemos también utilizar un valor de tipo binario (ceros y unos precedidos de la letra B) que podría tomar estos valores: B00000000, B00000001, B00000010, B00000011, B00000100,… B11111111 que se corresponderían a los valores enteros: 0, 1, 2, 3, 4,…,255.

Una curiosidad, antes de utilizar la función analogWrite() no es necesario declarar los pines PWM que vamos a utilizar con la función pinMode().

Ejercicio de escritura analógica

Analiza la imagen del circuito de la diapositiva e impleméntalo, necesitarás poco material:

  • 1 potenciómetro
  • 1 led
  • 1 resistencia 220-330 ohm
  • 3 cables M-M

Ahora crea el sketch, llámalo “Salidas-analogicas.ino” y responde a estas preguntas:

  • ¿Por qué dividimos por 4 en la línea 13 del código?
  • ¿Es correcto usar el pin 13?
  • ¿Puedes hacer una segunda versión de este sketch que utilice la función map()? (llámalo “Salidas-analogicas2.ino“)
Publicado el Deja un comentario

39. ¿Cómo funciona la función “map”?

Función map()

La función map() de Arduino permite transformar un valor entero de un rango de entrada al valor correspondiente a otro rango de salida.

Los 5 parámetros de entrada son valores enteros:

  • valor de entrada
  • inicio rango de entrada
  • final rango de entrada
  • inicio rango de salida
  • final rango de salida

Y la función devuelve el valor entero de salida una vez realizado el “mapeo”.

Ejemplo de uso de la función map()

valor_led = map(valor_ldr, 0,320, 0,255);

El “valor-ldr” corresponde al valor leído por un sensor de luz, cuyo rango puede variar de 0 a 320, valores que ponemos en el segundo y tercer lugar; los valores de salida deben oscilar entre 0 y 255 (valores cuarto y quinto) porque servirán para iluminar un led, este valor se almacena en la variable “valor_led” como valor de salida de la función map().

Esta función la emplearemos más adelante.