Cómo usar un diodo LED, un pulsador y un zumbador con la Raspberry Pi y Java

Escrito por el .
gnu-linux java planeta-codigo programacion
Enlace permanente Comentarios

El kit de electrónica para la Raspberry Pi incluye varios dispositivos controlables con lo pines GPIO. En el caso de este ejemplo usaré un diodo LED, un zumbador y un pulsador para crear un ejemplo en el que el diodo LED se enciendan y el zumbador emita un sonido cuando el pulsador se active.

Raspberry Pi

Java

En artículos anteriores ya he comentado como hacer parpadear un diodo LED, como usar un display LCD de 16 columnas y 2 filas y como obtener la temperatura y humedad de un sensor DHT11, todo estos ejemplo usando varios elementos de kit de iniciación a la electrónica para la Raspberry Pi 3. En este artículo en el que mostraré cómo usar un LED, un pulsador y un zumbador es mucho más sencillo que los casos del display LCD de 16 filas y 2 columnas y del sensor DHT11. Vistos los ejemplos de artículos anteriores lo más difícil de este es hacer el conexionado con los cables. Para controlar los pines usaré la librería diozero que proporciona clases de alto nivel para cada uno de estos elementos para que desde código Java sea bastante sencillo controlarlos.

El ejemplo consistirá en que cuando se presione el pulsador se encienda el diodo LED y el zumbador se active emitiendo un zumbido audible. Cada uno de estos elementos requiere usar un pin GPIO de los 17 que hay disponibles en la Raspberry Pi 1 que es el modelo que tengo yo o de los 26 pines que poseen versiones posteriores de la Raspberry Pi como la B+, 2 y 3.

Este sería el esquema de conexionado de los elementos. El diodo LED tiene una polaridad de modo que la patita larga que es la parte positiva se conectará al pin GPIO 1 según la nomenclatura de wiringPi o el 18 según la de Broadcom con una resistencia de 200 ohmios entre el pin GIPO y la patita de diodo para que la intensidad que atraviesa el diodo sea menor y no se desgaste. El zumbador también tiene una polaridad que en el caso del kit que he usado viene serigrafiado y con una etiqueta, la parte positiva se conectará a otro pin GPIO y usaré el pin GPIO 2. Para que el pulsador haga contacto bien en la placa de conexiones para hacer pruebas sin soldadura hay que presionar sin forzar pero hasta que quede bien encadado y sin fijo, usaré el pin GPIO 3.

Para el pulsador usaré el método PULL UP (el otro es PULL DOWN) donde conectaré una patita del pulsador a tierra y la adyacente al pin GPIO, en algunas páginas se explica haciendo uso de resistencias, sin embargo, el uso de resistencias en la Raspberry Pi no es necesario ya que los pines ya las tienen incorporadas internamente.

cableado en la breadboard Esquema del cableado

Esquema del cableado

La librería diozeo para identificar los pines usa la nomenclatura de Broadcom, otras son las nomenclaturas del header o de wiringPi. Hay que tener en cuenta la nomenclatura que se use ya que el número del pin variará en cada una de ellas, también hay que tener en cuenta la versión de la Raspberry Pi ya que hay pequeñas variaciones según la versión. Por ejemplo, según la tabla de referencia siguiente, para la Raspberry Pi 1 y según la nomenclatura de Broadcom el pin GPIO 18 corresponde al número 12 de header, el GPIO 21 al número 13 y el GPIO 22 al número 15. Según la nomenclatura de wiringPi el GPIO 1 corresponde al número 1, el GPIO 2 al número 2 y el GPIO 3 al número 3.

Header de pines Raspberry Pi 1 B Header de pines Raspberry Pi 3 B

Header de _pines_ Raspberry Pi 1 B y Raspberry Pi 3 B, nomenclatura wiringPi

Header de pines Raspberry Pi 1 B Header de pines Raspberry Pi 3 B

Headers de _pines_ Raspberry Pi 1 B y Raspberry Pi 3 B, nomenclatura Broadcom

Usando la librería diozero el código Java para realizar el ejemplo no necesita excesiva explicación. Es posible hacer uso de las funciones lambdas que incorporó el lenguaje Java en la versión de Java 8 y con la sentencia try-with-resources del lenguaje los elementos se finalizará correctamente en caso de producirse alguna excepción, por ejemplo apagando el diodo en caso de que estuviese encendido o apagando el zumbador en su caso.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package io.github.picodotdev.blogbitix.javaraspberrypi;

import com.diozero.Button;
import com.diozero.Buzzer;
import com.diozero.LED;
import com.diozero.api.GpioPullUpDown;

public class LedButtonBuzzer {

    public static void main(String[] args) throws Exception {
        try (LED led = new LED(18); Buzzer buzzer = new Buzzer(21, true); Button button = new Button(22, GpioPullUpDown.PULL_UP)) {
            led.on();
            Thread.sleep(3000);
            led.off();

            button.whenPressed(() -> {
                led.on();
                buzzer.on();
            });
            button.whenReleased(() -> {
                led.off();
                buzzer.off();
            });
            Thread.sleep(30000);
        }
    }
}
LedButtonBuzzer.java

Este es un pequeño vídeo en el que muestro su funcionamiento.

Terminal

El código fuente completo del ejemplo puedes descargarlo del repositorio de ejemplos de Blog Bitix alojado en GitHub y probarlo en tu equipo ejecutando siguiente comando:
./gradlew executeLedButtonBuzzer


Comparte el artículo: