Tabla de contenido
En el mundo de los microcontroladores, la capacidad de leer valores analógicos es fundamental para interactuar con una variedad de sensores y dispositivos que envían señales continuas. Esta habilidad permite que los microcontroladores capturen datos del entorno, como la intensidad de luz, la temperatura o la posición de un potenciómetro, y los transformen en valores digitales que pueden ser procesados en aplicaciones de control y monitoreo.
Los microcontroladores, como el Arduino, tienen la capacidad de leer señales analógicas gracias a su conversor analógico a digital (ADC). Este convertidor toma un voltaje de entrada y lo transforma en un valor numérico discreto que el microcontrolador puede procesar.
El ADC de un microcontrolador convierte un voltaje de entrada analógico en un valor digital. En el caso de un Arduino UNO, el ADC tiene una resolución de 10 bits, lo que significa que puede representar el voltaje de entrada en 1024 niveles distintos (de 0 a 1023). La fórmula para calcular el voltaje de entrada basado en el valor leído es:
$$ V_{entrada} = \frac{Valor_{ADC}}{1023} \times V_{ref}
$$
Donde VrefV_{ref}Vref es la referencia de voltaje, típicamente 5V o 3.3V.
/*************************************************************************
* Lectura de un potenciómetro *
* Dispositivo: Arduino UNO *
* Lenguaje: Arduino *
* Rev: 1.0 *
* Fecha: 05/11/24 *
************************************************************************/
// Definición del pin de entrada analógica
const int potPin = A0; // Pin donde está conectado el potenciómetro
void setup() {
// Inicialización de la comunicación serial
Serial.begin(9600);
// Configuración del pin como entrada (opcional, ya que analogRead lo hace automáticamente)
pinMode(potPin, INPUT);
}
void loop() {
// Lectura del valor analógico del potenciómetro
int potValue = analogRead(potPin);
// Impresión del valor en el monitor serial
Serial.print("Valor del potenciómetro: ");
Serial.println(potValue);
// Pequeña pausa para evitar saturar el monitor serial
delay(500); // 500 ms de espera
}