El Arduino Uno admite operaciones de entrada y salida analógica, lo que le permite interactuar con sensores y actuadores que requieren valores precisos. Las operaciones analógicas son esenciales para controlar dispositivos como LED, motores y leer entradas de sensores como potenciómetros o sensores de luz. Este tutorial lo guiará a través de la configuración, lectura y escritura analógica, y utilizando operaciones lógicas como if
declaraciones con datos analógicos.
Lo que necesitarás
- Arduino Uno con cable USB
- Potenciómetro (o cualquier resistencia variable) para la entrada analógica
- LED y una resistencia de 220 ohmios para salida analógica
- Cables de placa y jersey
- Una computadora con el Arduino IDE instalado
Paso 1: Comprensión de los pasadores analógicos en Arduino
El Arduino Uno tiene seis pines de entrada analógica (A0-A5) que pueden leer un voltaje entre 0 y 5V y convertirlo en un valor digital entre 0 y 1023. Para la salida analógica, Arduino usa PWM (modulación de ancho de pulso) en ciertos pines digitales marcado con ~
(por ejemplo, 3, 5, 6, 9, 10, 11).
Funciones utilizadas
-
Entrada analógica:
analogRead(pin)
- Lee un voltaje (0-5V) y devuelve un valor entre 0 y 1023.
-
Salida analógica:
analogWrite(pin, value)
- Emite una señal PWM donde
value
varía de 0 (0% de ciclo de trabajo) a 255 (ciclo de trabajo 100%).
- Emite una señal PWM donde
Paso 2: Entrada analógica de cableado (potenciómetro)
Conecte un potenciómetro a un pasador analógico Arduino:
Pasador de potenciómetro | Conexión arduino |
---|---|
1 (Pin final) | 5V |
2 (medio/salida) | A0 |
3 (Pin final) | Gnd |
Paso 3: Salida analógica de cableado (LED)
Conecte un LED con una resistencia de 220 ohmios a un pasador PWM Arduino (por ejemplo, pin 9):
Alfiler | Conexión arduino |
---|---|
Pierna larga (+) | Pin digital 9 |
Pierna corta (-) | Gnd |
Paso 4: Lectura de entrada analógica
Usar el analogRead()
función para leer datos del potenciómetro:
Código de ejemplo: lectura de entrada analógica
#define potPin A0 // Potentiometer connected to A0
void setup() {
Serial.begin(9600);
Serial.println("Analog Input Test");
}
void loop() {
int sensorValue = analogRead(potPin); // Read analog value
Serial.print("Sensor Value: ");
Serial.println(sensorValue);
delay(500); // Wait for half a second
}
Ejecute el código y observe los valores de potenciómetro (0-1023) en el monitor en serie.
Paso 5: Escribir salida analógica
Usar el analogWrite()
función para controlar el brillo de un LED:
Código de ejemplo: salida analógica a LED
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT); // Set LED pin as output
}
void loop() {
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(ledPin, brightness); // Increase brightness
delay(10);
}
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(ledPin, brightness); // Decrease brightness
delay(10);
}
}
Paso 6: Combinar entrada analógica y salida
Puede usar valores de entrada analógica para controlar la salida, como ajustar el brillo del LED en función de la posición del potenciómetro.
Código de ejemplo: el potenciómetro controla el brillo del LED
#define potPin A0 // Potentiometer connected to A0
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(potPin); // Read potentiometer value
int brightness = map(sensorValue, 0, 1023, 0, 255); // Map to PWM range
analogWrite(ledPin, brightness); // Set LED brightness
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
Serial.print(" -> Brightness: ");
Serial.println(brightness);
delay(100);
}
Paso 7: Usando if
Declaraciones con datos analógicos
Puede crear condiciones utilizando la entrada analógica para realizar acciones específicas:
Código de ejemplo: control condicional
#define potPin A0 // Potentiometer connected to A0
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(potPin);
if (sensorValue > 512) {
analogWrite(ledPin, 255); // Full brightness if sensor value > 512
Serial.println("Bright!");
} else {
analogWrite(ledPin, 0); // Turn off LED otherwise
Serial.println("Off");
}
delay(500);
}
Aplicaciones de lectura/escritura analógica
- Lectura de sensores ambientales (por ejemplo, luz, temperatura, humedad)
- Ajustar las velocidades del motor
- Controlar el brillo del LED
- Procesamiento de señal de audio
- Creación de interfaces de usuario basadas en analógicas
Solución de problemas
- Lecturas incorrectas del sensor: Asegure el cableado adecuado y verifique las conexiones de potenciómetro.
- LED no se ilumina: Confirme la orientación LED y use una resistencia para limitar la corriente.
- Salida no suave: Agregue un pequeño retraso o promedio los valores de entrada para la estabilidad.
Conclusión
Ha aprendido cómo realizar operaciones analógicas de lectura y escritura utilizando Arduino Uno, valores del sensor de mapas a salidas y usar if
declaraciones para la lógica condicional. Estas habilidades son cruciales para crear proyectos receptivos e interactivos. ¡Experimente aún más integrando otros sensores y actuadores analógicos para expandir sus capacidades!