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.
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
.
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);
}
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.
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.
Ahora le conectaremos un led al pin digital 13 para que prenda cuando el fotoresistor detecte poca luz.
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.
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
}