.. note::
¡Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook! Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas.
**¿Por qué unirse?**
- **Soporte experto**: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprender y compartir**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Avances exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.
- **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones y sorteos festivos**: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo!
.. _2.1.7_js:
2.1.7 Potenciómetro
=======================
.. note::
.. image:: ../img/mcp3008_and_adc0834.jpg
:width: 25%
:align: left
Dependiendo de la versión de su kit, identifique si tiene **ADC0834** o **MCP3008** y continúe con la sección correspondiente.
Introducción
---------------
La función ADC se puede usar para convertir señales analógicas en señales digitales,
y en este experimento, se utiliza el ADC0834 para obtener la función que involucra ADC.
Aquí, implementamos este proceso usando un potenciómetro. El potenciómetro cambia la cantidad
física -- voltaje, que es convertido por la función ADC.
Componentes necesarios
---------------------------
En este proyecto, necesitamos los siguientes componentes.
.. image:: ../img/list_2.1.4_potentiometer.png
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nombre
- ELEMENTOS EN ESTE KIT
- ENLACE
* - Kit Raphael
- 337
- |link_Raphael_kit|
También puedes comprarlos por separado en los enlaces a continuación.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCCIÓN DE COMPONENTES
- ENLACE DE COMPRA
* - :ref:`cpn_gpio_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_resistor`
- |link_resistor_buy|
* - :ref:`cpn_led`
- |link_led_buy|
* - :ref:`cpn_potentiometer`
- |link_potentiometer_buy|
* - :ref:`cpn_adc0834`
- \-
Diagrama esquemático
-----------------------
.. 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 mostrada en la imagen.
Nota que las ranuras del chip deben estar a la izquierda cuando se coloque.
**Paso 2:** Ve a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
**Paso 3:** Ejecuta el código.
.. raw:: html
.. code-block::
sudo node potentionmeter.js
Después de ejecutar el código, gira el mando del potenciómetro y 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 son sus tres pines.
Este es un objeto promesa, puede que necesites entender el concepto desde 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);
El valor del canal 0 de ADC0834 (el canal 0 está conectado al potenciómetro) se lee cada 100ms, y el valor se almacenará en ``value``.
Imprime ``value`` y úsalo para controlar el brillo del LED, ahora puedes ver que el brillo del LED cambia con el valor del potenciómetro.
Imagen del Fenómeno
-------------------
.. image:: ../img/image181.jpeg