Práctica 9 – LED RGB

INTRODUCCIÓN

 

En esta práctica se regula la intensidad luminosa de cada color (Rojo-Verde-Azul) de un LED RGB de cátodo común, variando el ciclo de trabajo mediante un PWM (modulador de ancho de pulso).

 

Selecciona la plataforma y entorno de programación.

 

 

PIC
AVR
PIC
PIC C Compiler
PIC C Compiler
Bootloader X-TRAINER
Bootloader X-TRAINER

Descripción

En esta práctica se realiza un control PWM para regular la intensidad luminosa de cada color de un LED RGB de cátodo común, por medio de un puerto PWM, usando los módulos X-TRAINER P8 o X-TRAINER P8 DIP40 o X-TRAINER P8 DIP28 con el PIC18F45K50 o PIC18F25K50.

 

Materiales:

1 x Módulo X-TRAINER P8 o X-TRAINER P8 DIP40 o X-TRAINER P8 DIP28Comprar

1 x LED RGB. Comprar

1 x Resistencia 330 Ohms. Comprar

1 x Protoboard de 830 puntos. Comprar

1 x Juego de cables Dupont. Comprar

1 x Cable micro USB.

 

Software:

Windows 7 o posterior.

PIC C Compiler v5.069 o posterior. Descarga

XIDE v1.0 Descarga

 

Procedimiento

1. En el apartado de "Diagrama esquemático", que se encuentra a continuación, selecciona tu módulo, realiza las conexiones que se muestran en la imagen y conéctalo a la computadora.

2. Al final de esta práctica, en el apartado de "Descargas", puedes encontrar los archivos del código fuente, o bien copiarlo del apartado de "Código" que se encuentra más abajo.

3. Si descargaste el archivo del paso 2, omite este paso. Si copiaste el código, abre el compilador, pega el código en un nuevo proyecto. En el siguiente link encontrarás un manual para compilar en PIC C Compiler.

4.Abre el Software XIDE v1.0 y programa el código que descargaste o compilaste en el módulo. En el siguiente link encontrarás el manual de usuario para el Software XIDE v1.0. 

5.Al terminar de programar, el módulo se reiniciará y el programa de esta práctica se ejecutará.

 

Diagrama esquemático

 

X-TRAINER P8 LITE
X-TRAINER P8
X-TRAINER P8 DIP 40
X-TRAINER P8 DIP 28
X-TRAINER P8 LITE

X-TRAINER P8

X-TRAINER P8 DIP 40

X-TRAINER P8 DIP 28

 

Código

Código


/* 

 AUTOR: MICROSIDE TECHNOLOGY S.A. DE C.V.

 FECHA: JUNIO 2019

*/

/**************************************************************************

Esta práctica consiste en realizar un control PWM

para el control de un LED RGB

**************************************************************************/

#include <18F45K50.h>                                                      //Incluye la librería para el PIC ( para X-TRAINERp8DIP28: #include <18F25K50.h> )

#use delay(internal=48MHz)                                               //Configura frecuencia del oscilador interno

#build(reset=0x02000,interrupt=0x02008)                          //Asigna los vectores de reset e interrupción para la versión con bootloader

#org 0x0000,0x1FFF {}                                                       //Reserva espacio en memoria para el bootloader

#define LEDR PIN_B0                                                        //Pin donde está conectado el LED de X-TRAINER

#define LEDV PIN_B1                                                         //Pin donde está conectado el LED de X-TRAINER

#define LEDA PIN_B2                                                          //Pin donde está conectado el LED de X-TRAINER

unsigned int16 Duty=0;                                                          //Variable para guardar el valor para PWM

void SisInit(void)

{

   setup_timer_2 (T2_DIV_BY_16, 254, 1);                           //Configura Timer2, periodo ajustado a 342uS

   setup_ccp1 (CCP_PWM|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L);    //Configura el módulo CCP para uso del PWM

}

void Set_PWM (void)

{

   int i;                                                                                       //Declaramos variable

   for (i = 255; i > 0; i−−)                                                              // Ciclo para disminuir el valor de la variable

   {

    set_pwm1_duty (i);                                                              // Guarda la salida PWM en la variable

    delay_ms (5);                                                                       // Retardo de 5ms

    }

    for (i = 0; i < 255; i++)                                                          // Ciclo para aumentar el valor de la variable

    {

     set_pwm1_duty (i);                                                              // Guarda la salida PWM en la variable

     delay_ms (5);                                                                      // Retardo de 5ms

   }

}

void main()

{

   SisInit();

    while (1)                                                                                // Ciclo infinito

     {

       output_high (LEDR) ;

       output_low (LEDV) ;

       output_low (LEDA) ;

       Set_PWM ();                                                                   // Convocamos la función

       output_low (LEDR) ;

       output_high (LEDV) ;

       output_low (LEDA) ;

       Set_PWM ();                                                                    // Convocamos la función

       output_low (LEDR) ;

       output_low (LEDV) ;

       output_high (LEDA) ;

       Set_PWM ();                                                                     // Convocamos la función

     }

}

 

Descargas

Software XIDE v1.0

Descarga el software XIDE v1.0 

Práctica 9 – PIC – Bootloader – CCS

Descargar código en PIC C Compiler de la práctica 9.

AVR
Atmel Studio 7
Atmel Studio 7
Programador XCU
Programador XCU

Descripción

En esta práctica se realiza un control PWM para regular la intensidad luminosa de cada color de un LED RGB de cátodo común, por medio de un puerto PWM, usando los módulos X-UNO o X-NANO .

 

Materiales:

1 x Módulo X-UNOX-NANO. Comprar

1 x Módulo programador XCU. Comprar

1 x Módulo X-AVR. Comprar

1 x Juego de cables Dupont. Comprar

1 x Protoboard de 830 puntos. Comprar

1 x Resistencia de 330 Ohms. Comprar

1 x LED RGB. Comprar

1 x Cable micro USB.

 

Software:

Windows 7 o posterior.

Atmel Studio 7. Descarga

 

Procedimiento

1. En el apartado de "Diagrama esquemático", que se encuentra a continuación, selecciona tu módulo, realiza las conexiones que se muestran en la imagen y conéctalo a la computadora.

2. Al final de esta práctica, en el apartado de "Descargas", puedes encontrar los archivos del código fuente, o bien copiarlo del apartado de "Código" que se encuentra más abajo.

3. Si descargaste el archivo del paso 2, omite este paso. Si copiaste el código, ejecuta Atmel Studio 7, pega el código en un nuevo proyecto y realiza la compilación.

4. Programa el código que descargaste o compilaste en el módulo. En el siguiente link encontrarás un manual para compilar tu proyecto en Atmel Studio 7. En el siguiente link encontrarás un manual de Atmel Studio para programador XCU.

5. Al terminar de programar, el programa de esta práctica se ejecutará.

 

Diagrama esquemático

 

X-UNO
X-NANO
X-UNO

X-NANO

 

Código 

Código

/**

AUTOR: MICROSIDE TECHNOLOGY S.A. DE C.V.

FECHA: JUNIO 2019

*/

/**************************************************************************

Esta práctica consiste en realizar un control PWM para el control de un LED RGB

**************************************************************************/

#define F_CPU 16000000

#include <avr/io.h>

#include <util/delay.h>

#define LEDR_ON PORTB |= (1<<PORTB0)                                                                              //Enciende LED

#define LEDR_OFF PORTB &= ~(1<<PORTB0)                                                                           //Apaga LED

#define LEDV_ON PORTB |= (1<<PORTB1)                                                                              //Enciende LED

#define LEDV_OFF PORTB &= ~(1<<PORTB1)                                                                          //Apaga LED

#define LEDA_ON PORTB |= (1<<PORTB2)                                                                              //Enciende LED

#define LEDA_OFF PORTB &= ~(1<<PORTB2)                                                                          //Apaga LED

void Set_PWM(void)

{

     int i;                                                                                                                                         //Declaramos la variable

     for(i=255;i>0;i–)                                                                                                                     // Disminuye el valor de la variable

     {

             OCR0A=i;                                                                                                                       // Guarda la salida PWM en la variable

             _delay_ms(2);                                                                                                                // Retardo de 5ms

      }

     for(i=0;i<255;i++)                                                                                                                  // Aumenta el valor de la variable

     {

               OCR0A=i;                                                                                                                       // Guarda la salida PWM en la variable

 

              _delay_ms(2);                                                                                                                // Retardo de 5ms

       }

}

int main(void)

{

               DDRD|=(1<<6);                                                                                                             //PIN OC0A como salida obligatorio para PWM

               TCCR0A=0b10000011;                                                                                                 //PWM por el OC0A, no invertido,

               TCCR0B=0b00000001;

               OCR0A=0;

               DDRB |= (1<<DDB0);                                                                                                   // PIN como salida

               DDRB |= (1<<DDB1);                                                                                                    // PIN como salida

               DDRB |= (1<<DDB2);                                                                                                   // PIN como salida

               while(1)

               {

                             LEDA_OFF;

                             LEDV_OFF;

                             LEDR_ON;

                    Set_PWM();                                                                                                                // Se convoca a la función

                             LEDR_OFF;

                             LEDA_OFF;

                             LEDV_ON;

                     Set_PWM();                                                                                                               // Se convoca a la función

                             LEDR_OFF;

                             LEDV_OFF;

                             LEDA_ON;

                    Set_PWM();                                                                                                                // Se convoca a la función

               }

}

 

Descargas

Software XIDE v1.0

Descarga el software XIDE v1.0 

Práctica 9-AVR-XCU

Descargar código en Atmel Studio 7 de la práctica 9.

 

Fecha

julio 17, 2019

Categoría

Prácticas CCS-AS7