Skip to content

Entrada analógica

This content is not available in your language yet.

Una entrada analógica mide un voltaje y te lo entrega como un número. En placas Arduino clásicas el convertidor es de 10 bits, así que el rango es de 0 a 1023 (board.RESOLUTION.ADC):

  • 0 significa 0 V.
  • 1023 significa el voltaje máximo de referencia (típicamente 5 V).
  • Un valor intermedio es proporcional: 512 ≈ la mitad del voltaje.
  • indice: el índice del pin analógico, no el número de pin digital. A0 es 0, A1 es 1, etc. Es el error más común: para leer A0 se pasa 0.
  • callback: recibe el valor leído (01023). Se dispara periódicamente (en cada muestreo), a diferencia de digitalRead, que solo avisa cuando el pin cambia. Es decir, con analógico recibes lecturas continuas.
board.analogRead(0, (valor) => { // 0 = A0
varG.lectura = valor; // 0–1023
});

Si necesitas voltios en vez del número crudo:

const VREF = 5; // voltaje de referencia de la placa
board.analogRead(0, (valor) => {
varG.voltaje = (valor / 1023) * VREF; // regla de tres
});

Para convertir 0–1023 a, por ejemplo, 0–100 %:

board.analogRead(0, (valor) => {
varG.porcentaje = Math.round((valor / 1023) * 100);
});

(Con frvn componentes, five.Sensor trae un método scaleTo que hace este mapeo por ti.)

Controlar el reporte: reportAnalogPin(indice, activar)

Sección titulada «Controlar el reporte: reportAnalogPin(indice, activar)»

Cada pin analógico que lees genera tráfico continuo con la placa. Puedes apagar el que no uses:

  • board.reportAnalogPin(0, 0)deja de reportar A0.
  • board.reportAnalogPin(0, 1)reanuda el reporte de A0.

(analogRead ya enciende el reporte por dentro; reportAnalogPin es para apagarlo o volverlo a encender manualmente.)

Cada cuánto se dispara tu callback lo fija el intervalo de muestreo (por defecto, una lectura cada 19 ms). Si recibes demasiados o muy pocos datos, ajústalo ahí.

  • Usar el número de pin digital en vez del índice analógico (para A0, pasa 0).
  • Esperar que avise solo al cambiar: el analógico reporta de forma periódica.
  • Demasiado tráfico: apaga con reportAnalogPin(indice, 0) los pines que no uses.