Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. Profundiza en 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 vistas previas.

  • 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 [Aquí] y únete hoy mismo!

2.1.6 Módulo de Codificador Rotativo

Introducción

En este proyecto, aprenderás sobre el Codificador Rotativo. Un codificador rotativo es un interruptor electrónico con un conjunto de pulsos regulares en una secuencia de tiempo estricta. Cuando se usa con IC, puede lograr incrementos, decrementos, cambio de página y otras operaciones como el desplazamiento del ratón, selección de menús, entre otros.

Componentes necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/Part_two_25.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DE COMPONENTES

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Módulo de Codificador Rotativo

COMPRAR

Esquema de diagrama

../_images/image349.png

Procedimientos experimentales

Paso 1: Construye el circuito.

../_images/2.1.6_fritzing.png

En este ejemplo, podemos conectar el pin del Codificador Rotativo directamente al Raspberry Pi usando una placa de pruebas y un cable de 40 pines. Conecta el GND del Codificador Rotativo a GND, 「+」a 5V, SW al GPIO digital 27, DT al GPIO digital 18 y CLK al GPIO digital 17.

Paso 2: Ve a la carpeta del código.

cd ~/raphael-kit/nodejs/

Paso 3: Ejecuta el código.

sudo node rotary_encoder_module.js

Verás el conteo en la terminal. Cuando giras el codificador rotativo en el sentido de las agujas del reloj, el conteo aumenta; cuando lo giras en sentido contrario a las agujas del reloj, el conteo disminuye. Si presionas el interruptor del codificador rotativo, las lecturas volverán a cero.

Código

const Gpio = require('pigpio').Gpio;

const clkPin = new Gpio(17, {
  mode: Gpio.INPUT,
  pullUpDown: Gpio.PUD_DOWN,
  edge: Gpio.RISING_EDGE
});
const dtPin = new Gpio(18, {
  mode: Gpio.INPUT,
  pullUpDown: Gpio.PUD_DOWN,
});
const swPin = new Gpio(27, {
  mode: Gpio.INPUT,
  pullUpDown: Gpio.PUD_UP,
  edge: Gpio.FALLING_EDGE
});

var globalCounter = 0;

clkPin.on('interrupt',()=>{
  if(dtPin.digitalRead()==1){
      globalCounter--;
  }
  else{
      globalCounter++;
  }
  console.log(`globalCounter = ${globalCounter}`);
});

swPin.on('interrupt', () => {
  globalCounter = 0;
  console.log(`globalCounter = ${globalCounter}`);
});

Explicación del código

var globalCounter = 0;

clkPin.on('interrupt',()=>{
  if(dtPin.digitalRead()==1){
      globalCounter--;
  }
  else{
      globalCounter++;
  }
  console.log(`globalCounter = ${globalCounter}`);
});

Cuando dtPin pasa de bajo a alto, si clkPin está alto, el conteo disminuye, de lo contrario el conteo aumenta.

swPin.on('interrupt', () => {
  globalCounter = 0;
  console.log(`globalCounter = ${globalCounter}`);
});

swPin dará salida a bajo cuando se presiona el eje. Deja que globalCounter llegue a cero en este punto.

Imagen del fenómeno

../_images/2.1.6rotary_ecoder.JPG