Nota

¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirte?

  • Soporte Experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Preestrenos Exclusivos: Accede anticipadamente a anuncios de nuevos 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 [Aquí] y únete hoy mismo!

1.1.2 LED RGB

Introducción

En este proyecto, controlaremos un LED RGB para que parpadee en varios colores.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/list_rgb_led.png

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

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

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

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED RGB

COMPRAR

Diagrama Esquemático

Después de conectar los pines de R, G y B a una resistencia limitadora de corriente, conéctalos a los GPIO17, GPIO18 y GPIO27 respectivamente. El pin más largo (GND) del LED se conecta al GND de la Raspberry Pi. Cuando los tres pines reciben diferentes valores PWM, el LED RGB mostrará diferentes colores.

Nombre

T-Board

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO18

Pin 12

1

18

GPIO27

Pin 13

2

27

../_images/rgb_led_schematic.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/image61.png

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

cd ~/raphael-kit/c/1.1.2/

Paso 3: Compila el código.

gcc 1.1.2_rgbLed.c -lwiringPi

Nota

Cuando se ejecuta la instrucción gcc, si no se llama a -o, el archivo ejecutable se llama a.out.

Paso 4: Ejecuta el archivo ejecutable.

sudo ./a.out

Después de ejecutar el código, verás que el LED RGB muestra rojo, verde, azul, amarillo, rosa y cian.

Nota

Si no funciona después de ejecutarlo, o aparece un mensaje de error: "wiringPi.h: No such file or directory", por favor consulta Instalar y verificar WiringPi.

Código

#include <wiringPi.h>
#include <softPwm.h>
#include <stdio.h>
#define uchar unsigned char
#define LedPinRed    0
#define LedPinGreen  1
#define LedPinBlue   2

void ledInit(void){
    softPwmCreate(LedPinRed,  0, 100);
    softPwmCreate(LedPinGreen,0, 100);
    softPwmCreate(LedPinBlue, 0, 100);
}

void ledColorSet(uchar r_val, uchar g_val, uchar b_val){
    softPwmWrite(LedPinRed,   r_val);
    softPwmWrite(LedPinGreen, g_val);
    softPwmWrite(LedPinBlue,  b_val);
}

int main(void){

    if(wiringPiSetup() == -1){ //when initialize wiring failed, printf messageto screen
        printf("setup wiringPi failed !");
        return 1;
    }

    ledInit();
    while(1){
        printf("Red\n");
        ledColorSet(0xff,0x00,0x00);   //red
        delay(500);
        printf("Green\n");
        ledColorSet(0x00,0xff,0x00);   //green
        delay(500);
        printf("Blue\n");
        ledColorSet(0x00,0x00,0xff);   //blue
        delay(500);
        printf("Yellow\n");
        ledColorSet(0xff,0xff,0x00);   //yellow
        delay(500);
        printf("Purple\n");
        ledColorSet(0xff,0x00,0xff);   //purple
        delay(500);
        printf("Cyan\n");
        ledColorSet(0xc0,0xff,0x3e);   //cyan
        delay(500);
    }
    return 0;
}

Explicación del Código

#include <softPwm.h>

Biblioteca utilizada para realizar la función pwm por software.

void ledInit(void){
    softPwmCreate(LedPinRed,  0, 100);
    softPwmCreate(LedPinGreen,0, 100);
    softPwmCreate(LedPinBlue, 0, 100);
}

La función es usar software para crear un pin PWM, estableciendo su período entre 0x100us-100x100us.

El prototipo de la función softPwmCreate(LedPinRed, 0, 100) es el siguiente:

int softPwmCreate(int pin,int initialValue,int pwmRange);
  • Parámetro pin: Cualquier pin GPIO de la Raspberry Pi puede configurarse como un pin PWM.

  • Parámetro initialValue: El ancho de pulso inicial es initialValue multiplicado por 100us.

  • Parámetro pwmRange: el período de PWM es pwmRange multiplicado por 100us.

void ledColorSet(uchar r_val, uchar g_val, uchar b_val){
    softPwmWrite(LedPinRed,   r_val);
    softPwmWrite(LedPinGreen, g_val);
    softPwmWrite(LedPinBlue,  b_val);
}

Esta función sirve para establecer los colores del LED. Utilizando RGB, el parámetro formal r_val representa la luminancia del rojo, g_val del verde, b_val del azul.

El prototipo de la función softPwmWrite(LedPinBlue, b_val) es el siguiente:

void softPwmWrite (int pin, int value) ;
  • Parámetro pin: Cualquier pin GPIO de la Raspberry Pi puede configurarse como un pin PWM.

  • Parámetro value: El ancho de pulso de PWM es value multiplicado por 100us. Nota que value solo puede ser menor que pwmRange definido previamente, si es mayor que pwmRange, el valor se le asignará un valor fijo, pwmRange.

ledColorSet(0xff,0x00,0x00);

Llama a la función definida anteriormente. Escribe 0xff en LedPinRed y 0x00 en LedPinGreen y LedPinBlue. Solo el LED rojo se encenderá después de ejecutar este código. Si deseas encender LEDs de otros colores, solo modifica los parámetros.

Imagen del Fenómeno

../_images/image62.jpeg