¿Cómo controlar un pin analógico? ¿Cómo controlar un componente con AnalogWrite y AnalogRead?

La escritura y lectura de un pin analógico te ayudará a controlar los componentes y leer los valores de tu sensor.

Esto es lo que veremos en este curso:

Controlar tu componente (analogWrite)
Leer la tensión de un sensor (analogRead)
Convertir el valor (map)

Estos son los pines analógicos que puedes controlar con analogWrite y analogRead:

El pin analógico se utiliza para controlar el pin con PWM (modulación por ancho de pulso).

A diferencia de los pines digitales, los pines analógicos no necesitan pinMode para indicar si son una entrada o una salida.

¿Cuál es la diferencia entre analógico y digital?

Una señal digital es una tensión que solo puede tomar dos valores: ALTO o BAJO. ALTO corresponde a 5 V y BAJO a 0 V. La señal digital es muy útil para detectar el estado de un pulsador o para encender un LED.

Sin embargo, si desea encender un LED a la mitad de su potencia, deberá usar la señal analógica.

Esta señal puede tomar un valor infinito entre 0 V y 5 V. Esta señal le será útil si desea obtener una tensión precisa: 0,45 V en lugar de 0 V o 5 V, por ejemplo.

analogWrite ()

La escritura analógica se utiliza para controlar componentes, como LED o servomotores. De hecho, gracias al PWM, la escritura analógica puede controlar componentes con precisión para indicar la posición de un servomotor o la potencia de un LED.

analogWrite(pin, value);

Los valores con PWM van de 0 a 255. 0 para 0 V y 255 para 5 V. Puede elegir un valor entre estos dos. A continuación, se muestra un ejemplo de la función AnalogWrite en el pin A3:

analogWrite(A3, 122);

analogRead ()

Si desea leer valores de un sensor, debe usar la función analogRead(). A continuación, se muestra un ejemplo:

analogRead(pin)

Pin: de A0 a A5 para una placa Arduino.

La función devuelve el valor del pin analógico, que va de 0 a 1023. Veremos cómo convertirlo.

Conversión de valor

Mapa es una función matemática que transforma un valor de un rango antiguo a uno nuevo.

map(value_to_convert, old_range_low, old_range_high, new_range_low, new_range_high);
  • analogWrite(): Convierte el valor en % o en grados de 0 a 180°

    En esta sección, veremos diferentes ejemplos de conversión de valores. De hecho, el servomotor debe controlarse de 0° a 180° y el LED, de 0% a 100%.

    Para controlar estos valores en un rango de 0 a 255, usaremos la función map.

    Por ejemplo, si queremos la posición de 90° para nuestro servomotor en el pin 7, escribimos:

int value_servomotor=90;
value_servomotor=map(value_servomotor,0,180,0,255);
analogWrite(7,value_servomotor);
  • analogRead(): Convierte un valor de 0 a 1023 a una tensión de 0 a 5 V.

    Aquí hay otro ejemplo para convertir un valor de 0 a 1023 a un valor de 0 a 5 V:

int valeur =analogRead(pin);
valeur=map(valeur,0,1023,0,5);