Rust-Embebido «Arduino» Entradas analógicas parte 3

Después de los dos POS anteriores de nuestra programación con Rust-Embebido:

Continuamos con la tercera entrega en la que explicaremos como utilizar las entradas analógicas de nuestro Arduino con Rust, lo primero es conocer los pines ADC de nuestro arduino, que ocupan 5 puertos C en este caso y que como pasaba con las E/S digitales también tiene interrupciones y dos de ellos se utilizan para otras funciones por eso ponemos también una tabla.

El código de ejemplo se encuentra como siempre en github, es un montaje muy sencillo aunque ponemos el esquema y consta de un potenciometro conectado a la entrada analógica 0 y por la consola veremos el valor leído.

Lo normal no es conectar el potenciometro o el sensor que corresponda directamente sino utilizar un divisor de tensión como se explica en el libro «De 0 a 100 con Arduino y ESP32» que nos permitira controlar el voltaje máximo y mínimo que se inyecta en la entrada analógica, en nuestro caso esta claro que va de 0 a +5V.

Un resumen rápido para calcular divisores de tensión, aunque en este ejemplo no lo utilizamos, que lo sacamos del libro seria un montaje como el de la figura y las formulas que aplicaríamos para calcular la intensidad y el voltaje de salida deseado.

R2 sera nuestro sensor (el potenciometro en nuestro caso) ya que es el voltaje de salida y que se conecta al pin del Arduino sera la parte que varié, R1 es la resistencia que pondremos fija y donde conectamos un voltaje de entrada fijo. NOTA nuestro sensor también se podría en el voltaje de entrada en lugar de la masa (R1) y que R2 sea nuestra resistencia fija.

Continuando con nuestro POST diremos que en este caso solo tenemos una función de lectura, como veremos a continuación en la explicación del código, que nos dara valores entre 0 y 1023 que representaran el voltaje entre 0V y +5V.

// Obtenemos los pines disponibles en nuestro arduino, igual que los obteníamos en las E/S digitales
let dp = arduino_hal::Peripherals::take().unwrap();
let pins = arduino_hal::pins!(dp);

// Definición de los pines de entradas análogicas
let mut adc = arduino_hal::Adc::new(dp.ADC, Default::default());   // Obtenemos analogicos
let entrada = pins.a0.into_analog_input(&mut adc);      // Definimos entrada como el pin A0 de entrada análogica.

let valor = entrada.analog_read(&mut adc);    // Leemos el valor de la entrada definida anteriormente.

Y con esto terminamos este POST, ya nos quedan menos para esta pequeña serie de introducción a la programación de Arduino con el lenguaje Rust.

Siguientes temas:

  • Uso de los pines PWM
  • Uso de interrupciones externas.
  • Timer usando servomotores
  • Timer para uso del sonar HC-SR04

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Javier.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinger.es que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad