Lectura análoga

La lectura análoga se realiza por los pines Analog In (entrada análoga) y nos sirve para leer valores más allá del HIGH y el LOW (true y false) que permitían los pines digitales.

Rango de lectura

Según el modelo de nuestra placa, tendremos un rango definido de lectura. En el caso del Arduino® UNO tendremos un rango de 10 bits, por lo que tenemos 1024 posibles valores de lectura, desde el 0 al 1023

Recordar que un bit sólo puede tomar valores de 0 ó 1.

Lectura de un resistor

Lectura análoga de un resistor con Arduino

const int pin = A0; // Pin analógico
const int r1 = 200; // Resistencia conocida
const float voltaje = 5.0; // Voltaje de trabajo

float voltajeR2; // Valor a calcular
float r2; // Valor a final de la R2
long  lectura; // Valor de lectura del pin

void setup() {
  Serial.begin(9600);
}

void loop() {
  lectura = analogRead(pin); // Guardamos el valor de la lectura en una variable
  voltajeR2 = (voltaje/1023.0) * lectura; // Colculamos el voltaje en la resistencia desconocida
  
  // Lo imprimimos en el Monitor Serie
  Serial.print("El voltaje en R2 es de ");
  Serial.print(voltajeR2);
  Serial.println(" voltios");
  
  // Calculamos la resistencia desconocida con las fórmulas V1/R1=V2/R2 y V1=(+5V)-V2
  r2 = r1 * voltajeR2/(voltaje-voltajeR2);
  Serial.print("La resistencia es de ");
  Serial.print(r2);
  Serial.println(" ohms");
  delay(5000);
}

Lectura de un potenciómetro

lectura poteciometro

Si rotamos al potenciómetro a ambos extremos veremos como varía el valor mostrado en el monitor serie entre un rango cercano a 0 y 1023.

const int pin = A0; // Pin analógico

void setup() {
  Serial.begin(9600); // Inicializamos el monitor serie
}

void loop() {
  Serial.println(analogRead(pin)); // Mostramos el valor de lectura en el monitor serie
}

Podemos ver que en la posición mínima del potenciómetro nos marcará un valor no tan cercano a 0, esto es por la resistencia fija que tiene el circuito.

Lectura de un fotoresistor

Lectura análoga de un fotoresistor con Arduino

const int pin = A0; // Pin analógico

void setup() {
  Serial.begin(9600); // Inicializamos el monitor serie
}

void loop() {
  Serial.println(analogRead(pin)); // Mostramos el valor de lectura en el monitor serie
}

Si se hace el ejercicio de tapar y destapar el fotoresistor, los valores del monitor serie cambiarán.

Prender un led cuando haya poca luz

Ahora le conectaremos un led al pin digital 13 para que prenda cuando el fotoresistor detecte poca luz.

Lectura análoga de un fotoresistor con Arduino y un led

const int pinFotoresistor = A0; // Pin analógico
const int pinLed = 13; // Pin digital
int lectura;

void setup() {
  Serial.begin(9600); // Inicializamos el monitor serie
  pinMode(pinLed, OUTPUT); // Configuramos el pin del led como salida
}

void loop() {
  int lectura = analogRead(pinFotoresistor); // Gurdamos el valor de lectura análoga
  
  if (lectura < 100) { 
    // Si hay muy poca luz
    digitalWrite(pinLed, HIGH); // Prendemos el led
  } else {
    // Si no
    digitalWrite(pinLed, LOW); // Apagamos el led
  }
}

Notar que ocupamos un valor de comparación de 100, tenemos que modificar este valor según los valores que nos muestra nuestro proyecto.

Lectura de un sensor de temperatura LM35

Lectura análoga de un sensor de temperatura LM35

const int pinLM35 = A0; // Constante del pin de entrada del sensor

float lectura; // Variable del valor obtenido del sensor
float gradosCelsius; // Aquí guardaremos la temperatura en grados Celsius
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  lectura = analogRead(pinLM35); 
   
  // Calculamos la temperatura con la fórmula
  gradosCelsius = (5.0 * lectura * 100.0)/1023.0; 
 
  Serial.print(gradosCelsius);
  Serial.println(" grados Celsius");
  
  delay(1000); // Esperamos un tiempo para repetir el loop
}