.. note::
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el fascinante mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.
**¿Por qué unirte?**
- **Soporte Experto**: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Avances Exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos exclusivos.
- **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones Festivas y Sorteos**: Participa en sorteos y promociones especiales de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo.
.. _2.1.4_potentiometer_nodejs:
2.1.4 Potenciómetro
===========================
.. note::
.. image:: ../img/mcp3008_and_adc0834.jpg
:width: 25%
:align: left
Dependiendo de la versión de tu kit, identifica si tienes **ADC0834** o **MCP3008** y procede con la sección correspondiente.
Introducción
----------------
La función de ADC permite convertir señales analógicas en señales
digitales. En este experimento, usamos el ADC0834 para realizar esta
conversión con un potenciómetro. El potenciómetro cambia la cantidad
física, en este caso el voltaje, que luego es convertido mediante la función ADC.
Componentes
-------------
.. image:: ../img/list_2.1.4_potentiometer.png
Diagrama del Circuito
----------------------
.. image:: ../img/image311.png
.. image:: ../img/image312.png
Procedimientos Experimentales
---------------------------------
**Paso 1:** Construye el circuito.
.. image:: ../img/image180.png
.. note::
Coloca el chip siguiendo la posición correspondiente indicada en
la imagen. Observa que las muescas del chip deben estar a la izquierda
cuando se coloque.
**Paso 2:** Dirígete a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/nodejs/
**Paso 3:** Ejecuta el código.
.. raw:: html
.. code-block::
sudo node potentionmeter.js
Después de ejecutar el código, gira la perilla del potenciómetro; la
intensidad del LED cambiará en consecuencia.
**Código**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const ADC0834 = require('./adc0834.js').ADC0834;
const adc = new ADC0834(17, 18, 27);
const led = new Gpio(22, {mode: Gpio.OUTPUT});
setInterval(() => {
adc.read(0).then((value) => {
console.log(`Current analogVal: ${value}\n`);
led.pwmWrite(value);
}, (error)=>{
console.log("Error: " + error);
});
}, 100);
**Explicación del Código**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
Importa el módulo ``pigpio``.
.. code-block:: js
const ADC0834 = require('./adc0834.js').ADC0834;
Importamos un constructor ``ADC0834`` para usar el módulo adc0834.
.. code-block:: js
const adc = new ADC0834(17, 18, 27);
Instancia un objeto ADC0834; los tres parámetros corresponden a sus tres pines.
Este es un objeto promise. Puedes obtener más información sobre el concepto en el siguiente enlace:
* `Promise `_
.. code-block:: js
setInterval(() => {
adc.read(0).then((value) => {
console.log(`Current analogVal: ${value}\n`);
led.pwmWrite(value);
}, (error)=>{
console.log("Error: " + error);
});
}, 100);
Cada 100 ms, se lee el valor del canal 0 del ADC0834 (el canal 0 está conectado al potenciómetro), y el valor se almacena en ``value``.
Imprime ``value`` y úsalo para controlar el brillo del LED. Ahora puedes observar cómo el brillo del LED varía en función del valor del potenciómetro.
Imagen del Fenómeno
------------------------
.. image:: ../img/image181.jpeg