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.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DE COMPONENTES |
ENLACE DE COMPRA |
|---|---|
Esquema de diagrama
Procedimientos experimentales
Paso 1: Construye el circuito.
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.