Diagrama del Circuito
Usaremos un botón normalmente abierto como entrada para la Raspberry Pi,
y la conexión se muestra en el siguiente diagrama. Cuando se presiona el
botón, el GPIO18 cambiará a nivel bajo (0V). Podemos detectar el estado
del GPIO18 mediante programación: si el GPIO18 está en nivel bajo, significa
que el botón está presionado. Así, el código correspondiente puede ejecutarse
al presionar el botón, y el LED se encenderá.
Nota
El pin más largo del LED es el ánodo, y el más corto es el cátodo.
Procedimientos Experimentales
Paso 1: Construye el circuito.
Paso 2: Dirígete a la carpeta del código.
cd ~/davinci-kit-for-raspberry-pi/nodejs/
Paso 3: Ejecuta el código.
Ahora, presiona el botón, y el LED se encenderá; suelta el botón, y el LED se apagará.
Código
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17, {mode: Gpio.OUTPUT});
const button = new Gpio(18, {
mode: Gpio.INPUT,
pullUpDown: Gpio.PUD_DOWN,
edge: Gpio.EITHER_EDGE
});
button.on('interrupt', (level) => {
led.digitalWrite(level);
});
Explicación del Código
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17, {mode: Gpio.OUTPUT});
Importa el módulo pigpio, crea un objeto led para controlar el puerto
IO Gpio17, y configúralo en modo de salida.
const button = new Gpio(18, {
mode: Gpio.INPUT,
pullUpDown: Gpio.PUD_DOWN,
edge: Gpio.EITHER_EDGE
});
Crea un objeto button para controlar el puerto IO Gpio18, configúralo en modo de entrada,
con una resistencia pull-down (bajo cuando el botón no está presionado, alto cuando el botón está presionado).
Configura la función de interrupción en modo EITHER_EDGE, es decir, tanto los flancos ascendentes como descendentes activarán la función de interrupción.
button.on('interrupt', (level) => {
led.digitalWrite(level);
});
Escribe una función de interrupción: cuando el botón se presiona, es un flanco descendente que activa la función de interrupción;
en este momento, el nivel bajo del puerto IO del botón se escribe en el puerto IO del LED, y el LED se enciende.
Cuando se suelta el botón, es un flanco ascendente que activa la función de interrupción;
en este momento, el nivel alto del puerto IO del botón se escribe en el puerto IO del LED, y el LED se apaga.