analogRead()

De Arduino
Saltar a: navegación, buscar

Descripción

Lee el valor de pines analógicos marcados en Arduino como A0~A5, con una resolución de 10 bits. Esta instrucción sólo funciona en los pines (A0~A5).

Nota: Los pines analógicos de entrada, al igual de que digitales de entrada no necesitan ser definidos con pinMode().


Sintaxis

analogRead(pin);

Parámetros

pin
un pin analogico. A0~A5 en Arduino UNO, A0~A7 en Arduino MINI y NANO, A0~A15 en Arduino MEGA.

Retorno

El rango de valores devuelto puede estar entre 0~1023. Numero tipo int.

Advertencias

  • No debes dejar al aire estos pines porque generan ruido electrico.
  • La hoja de datos de ATmega también advierte contra el cambio de pines analógicos en proximidad a la realización de lecturas en otros pines analógicos ya que esto puede causar ruido eléctrico e introducir inestabilidad en el sistema analógico.
  • Puede ser deseable, después de manipular los pines analógicos (en modo digital), agregar un breve retraso antes de usar analogRead() para leer otros pines analógicos.
  • La placa Arduino UNO contiene 6 canales (8 canales para MINI y NANO, 16 para MEGA), analógicos con convertidor analógico a digital (ADC) de 10 bit. Esto significa que mapeará tensiones de entrada entre 0~5V en valores enteros entre 0~1023. Esto produce una resolución entre las lecturas de 4.9 mV por unidad.
  • El comando analogRead() no funcionará correctamente si un pin analogico se ha configurado previamente como salida con pinMode(14, OUTPUT), por lo que si este es el caso, configúrelo nuevamente como pinMode(14, INPUT) antes de usar analogRead(). De forma similar, si estando como salida se puso digitalWrite(14, HIGH), la resistencia pull-up se establecerá, cuando se vuelva a configurar como entrada con pinMode(14, INPUT).
  • Tenga en cuanta que activar la resistencia pull-up afecta las lecturas de analogRead().
pinMode(A0 INPUT_PULLUP);

Comentarios

  • Si el pin de entrada analógica no está conectado (al aire o flotante), el valor devuelto por analogRead() fluctuará en base a una serie de factores (por ejemplo, los valores de las otras entradas analógicas, lo cerca que tu mano este a la placa, poner un multimetro en paralelo, etc.). Este fenómeno suele ser aprovechado para el valor de inicialización del generador pseudo-aleatorio de números (randomSeed()).
  • El rango de entrada y la resolución se pueden cambiar con analogReference().
  • Se tarda unos 100 microsegundos para leer y codificar una entrada analógica, por lo que la velocidad de lectura máxima es de alrededor de 10,000 veces por segundo.

Ejemplo 1

analogRead(A0);
analogRead(5);

const byte pin = 3;
int valor = analogRead(pin);

Ejemplo 2

void setup(){
   Serial.begin(9600);
}
void loop(){
   Serial.println(analogRead(A2));
}

Vea también

Referencias