Este documento describe varios ejemplos básicos de programación con el software ENERGIA 0101E0009, incluyendo parpadeo y desvanecimiento de un LED RGB. También explica cómo leer valores analógicos de un pin y mostrarlos por el monitor serie. Finalmente, presenta una práctica final que integra varios de estos ejemplos para manipular el color de un LED RGB mediante dos botones pulsadores.
1. Primera Pr´actica Manipulaci´on LED
RGB con push button
Zaraos V´azquez Jorge Alejandro , Toala Hern´andez Jahaziel,
Rodr´ıguez Morales Guillermo de Jesus
Instituto Tecnol´ogico de Tuxtla Gutierrez, Chiapas
aleh.kz@hotmail.com
angelblack 035@hotmail.com
nemesis rmgj@hotmail.com
Resumen – En esta pr´actica utilizaremos un soft-
ware distinto al CCS un programa basado en lenguaje
de arduino el ENERGIA 0101E0009, realizamos
diferentes ejemplos para poder entender bien como
funciona, utilizando estos ejemplos poniendo en pr´acti-
ca la mayor´ıa de ellos en un solo programa donde
la manipulaci´on del LED RGB con los dos push button.
I. INTRODUCCI´ON
Siglas de red, green, y blue, (rojo, verde y azul). RGB es un
modelo de color utilizado normalmente para presentar color en
los sistemas de video, c´amaras, y monitores de ordenadores.
Representa todos los colores como combinaciones de rojo,
verde y azul. RGB en el sistema de color m´as utilizado por
la mayor´ıa de los formatos actuales. Stellaris cuenta con este
LED que ser´a el que manipularemos para activar los 3 colores
est´andares, la manera en que ser´a manejado el LED son con
los 2 push button.
El presente reporte explica como comenzar a usar el pro-
grama ENERGIA 0101E0009 con ejemplos de manipulaci´on
de LED como desvanecimiento en la intensidad de luz en el
LED, parpadeo, control push button, y envi´o de caracteres
ASCII del pin ala hyperterminal o al serial monitor que
incluye ENERGIA, una vez realizadas estas pr´acticas se
realizo una pr´actica final incluyendo partes de casi todas.
II. FUNDAMENTOS TE´ORICOS
A. ENERGIA 0101E009
Energia es una plataforma electronica de prototipado
rapido para LaunchPad no solo los basados en ARM de
stellaris, sino tambi´en a los de m´as edad MSP430. B´asica-
mente se trata de una versi´on muy modificada de Arduino
IDE (que a su vez se basa en Processing).
Supported MCUs:
LaunchPad with MSP430G2231
MSP430G2452 or MSP430G2553
FraunchPad with MSP430FR5739
StellarPad with LM4F120H5QR
Fig. 1 Software ENERGIA 0101E0009
El entorno de c´odigo abierto hace f´acil escribir c´odigo
y cargarlo. Se ejecuta en Windows, Mac OS X y Linux.
El medio ambiente est´a escrito en Java y basado en
Processing, avr-gcc y otros programas de c´odigo abierto.
El entorno de desarrollo ENERGIA contiene un editor
de texto para escribir c´odigo, un ´area de mensajes, una
consola de texto, una barra de herramientas con botones
para las funciones m´as comunes, y una serie de men´us.
Se conecta con el hardware (Launchpad) para cargar
programas y comunicarse con ellos.
El software escrito usando (Launchpad) son llamados
sketches, estos sketches est´an escritos en el editor de texto.
Los sketches se guardan con la extensi´on de archivo. Ino.
Cuenta con funciones para cortar, pegar, buscar y reem-
plazar texto.
2. El ´area de mensajes ofrece informaci´on al guardar y
exportar adem´as de los errores. La consola muestra el
texto de salida por el entorno ENERGIA incluyendo
mensajes de error completos y dem´as informaci´on, la
esquina inferior derecha de la ventana muestra la actual
junta directiva y el puerto serial.
Los botones de la barra de herramientas le permiten
comprobar y cargar programas, crear, abrir y guardar
sketches y abra el monitor serie, Serial Monitor muestra
datos en serie que se env´ıan desde el Launchpad. Para
enviar datos al Launchpad, se introduce el texto y se hace
clic en el bot´on .enviar.o presionar enter se selecciona la
velocidad de transmisi´on en el men´u desplegable que co-
incide con la velocidad que pasa a Serial.begin en el sketch.
Energia apoya la StellarPad con LM4F120H5QR.
El diagrama siguiente muestra la distribuci´on de pines
completo para el LM4F StellarPad en Energia.
Fig. 2 Diagrama de pines
B. Stellaris LM4F120
El stellairs LM4F120 LaunchPad Evaluation Board es
una plataforma de evaluacion de bajo costo para ARM
Cortex -M4F basados en microcontroladores de Texas
Instrument, el dise˜no de el LaunchPad stellaris destaca
LM4F120H5QR microcontrolador con un dispositivo de
interfaz USB 2,0 y un m´odulo de hibernaci´on.
El EK-LM4F120XL tambi´en cuenta con botones pro-
gramables de usuario y un LED RGB para aplicaciones
personalizadas, las cabeceras de la apilables Stellaris
R LM4F120 LaunchPad BoosterPack XL hace que
sea f´acil y sencillo para ampliar la funcionalidad de la
Stellaris R LaunchPad, al conectarse a otros perif´ericos
con Stellaris R BoosterPacks y BoosterPacks MSP430 TM
.
El Stellaris R LM4F120 LaunchPad funciona a bordo
de emulaci´on, lo que significa que se puede programar y
depurar sus proyectos sin la necesidad de herramientas
adicionales.Compatibilidad del BoosterPackDos de doble-
genero, 20-pines de cabeceras apilables ofrecen grandes op-
ciones de conexi´on de la caja.
Estos 40 pines permiten a˜nadir soporte de pantallas,
interfaces inal´ambricas, sensores y otras capacidades a los
proyectos muy f´acilmente y tambi´en ofrecen compatibili-
dad b´asica con los actuales MSP430 y C2000 LaunchPad’s.
El microcontrolador Stellaris ofrece una LM4F120H5QR
80 MHz, 32-bit ARM Cortex-M4 CPU con pun-
to flotante, 256Kbytes de 100.000 FLASH ciclo de
escritura-borrado y muchos perif´ericos tales como ADC
1MSPS, 8 UARTs, 4 SPIs, 4 I2Cs, USB y hasta 27
timers, algunos configurable hasta 64 bits. Dos in-
terruptores de uso general de usuarios, un bot´on de
reinicio, LED de encendido y LED programable RGB.
Fig. 3 Stellaris LM4120 LaunchPad
C. LED RGB
RGB es un modelo de color basado en la s´ıntesis aditiva,
con el que es posible representar un color mediante la
mezcla por adici´on de los tres colores de luz primarios.
El modelo de color RGB no define por s´ı mismo lo que
significa exactamente rojo, verde o azul, por lo que los
mismos valores RGB pueden mostrar colores notablemente
diferentes en diferentes dispositivos que usen este modelo
de color.
Los colores primarios del modelo RGB son aditivos,
es decir, para producir el resultado se suman las con-
tribuciones individuales de cada primario. Los colores
b´asicos son el RED (ROJO), GREEN (VERDE) Y BLUE
(AZUL) y de la mezcla de estos y su aplicaci´on con
mayor o menor intensidad obtenemos el resto de colores;
encontr´andonos en los extremos con el blanco y el negro;
es decir un color cuyo valor RGB es 0,0,0 es el color negro,
y el color cuyo valor es 255, 255, 255 es el color blanco,
en este punto cabe se˜nalar que los valores RGB son
expresados en una combinaci´on de 3 cifras cuyos valores
3. m´ınimo y m´aximo son 0 y 255 respectivamente. mezclando
los diferentes valores de un modo u otro obtendremos
los diferentes colores: 255,0,0 (rojo), 0,255,0 (verde),
0,0,255 (azul), 255,128,0 (naranja)... y as´ı todas las com-
binaciones posibles que se puedan realizar con los 3 valores.
Representando el modelo en un cubo unitario, cada
componente de la tripleta toma valores en el rango de 0 a
1. As´ı un color C1 se expresa:
C1 = R + G + B
Fig. 4 Representaci´on en cubo unitario
Asumiendo que utilizamos n´umeros enteros en el rango
0..255 (un byte), es decir 256 valores posibles para cada
color primario, entonces con tres bytes podemos represen-
tar 256 x 256 x 256 combinaciones diferentes de los colores
primarios, es decir una gama de m´as de 16 millones de
colores (frecuentemente referida como ¸color verdadero”).
Fig. 5 Paleta de colores
III. DESARROLLO DE LA PR´ACTICA
Para hacer el desarrollo de una manera entendible es
realizado un diagrama de procesos donde se muestra de
forma estructurada como realizamos la pr´actica. Se puede
observar en la siguiente figura.
Fig. 6 Diagrama de procesos
A. Primeros programas con ENERGIA
Fig. 7 Programa de parpadeo de LED
Primero que nada lo primero a utilizar ser´an void
setup y loop que son las funciones principales que nece-
sariamente tienen que ir en cada c´odigo realizado con
ENERGIA. Setup que ser´a el que se inicia al momento de
cargar el programa al LaunchPad y loop que es el bucle
que realizara las operaciones o tareas del programa.
En este primer ejemplo declaramos pinMode donde pin
ser´a el numero de pin a establecer se declara BLUE LED
por que asi lo reconoce el software ENERGIA como puedo
observar en la figura 3 el diagrama de pines del Stellaris,
Mode es el estado de este pin declarado esta vez como
OUTPUT (salida) como es declarado como salida lo
que realizara es permitir conducir un nivel de voltaje de
acuerdo a una configuraci´on PWM.
En la siguiente funci´on la configuraci´on de OUTPUT
puede ser cambiada usando digitalWrite, usamos digital-
Write que impulsa un voltaje al pin establecido, cuando es
HIGH el pasador establece el suministro de energ´ıa de 3.3v
que es el voltaje del LaunchPad como se explicaba antes
en fundamentos te´oricos que para representar el color en
este caso azul seria 0,0,255 al establecer el pin BLUE LED
4. ENERGIA sabe c´omo est´a distribuido lo ´unico es la
intensidad de luz, es decir, el voltaje al establecer HIGH
env´ıa los 3.3v = 255, cuando digitalWrite es LOW el
pasador se establece a tierra as´ı de esta manera apagando
el LED, delay es el retraso en milisegundos que le daremos
1000=1 segundo. Con esto se terminar´ıa el primer ejemplo.
Fig. 8 Desvanecimiento del color del LED
En la parte superior vamos a declarar las variables
brillo que ser´a la intensidad PWM y descolorar la variable
que restara intensidad al brillo, los pines que usaremos
ser´a el 39 o GREEN LED definimos su estado OUTPUT
(salida), ya en la funci´on loop cambiamos la configuraci´on
de salida con analogWrite que es usado para controlar la
luminosidad del LED, definiendo que 255 es el m´aximo
brillo porque son las 256 combinaciones diferentes de un
byte incluyendo cero, 3.3v(3300mV) necesario para el
mayor brillo, entonces ENERGIA aplicara una regla de 3
para saber qu´e cantidad necesaria de voltaje debe enviar
para la luminosidad:
(V de Launchpad/combinaciones=cantidad para un V)
(mV/combinaciones = cantidad para un mV)
(3.3/256=77.57575757575758)
(3300/256=0.0775757575757576)
M´axima luminosidad = 256 / 0.0775757575757576 =
3300mV (3.3v)
Luminosidad media = 125 / 0.0775757575757576 =
1611mV (1.6v)
La configuraci´on con analogWrite primero establecemos
el pin y luego la luminosidad que es la variable brillo, como
nuestra variables esta en 0 el LED comenzara apagado,
a esta variables se iguala a la misma variable mas la
variable que tiene un valor de 5 y asi comenzara a brillar
con una intensidad muy d´ebil despu´es de esto bajara a la
siguiente instrucci´on que es un if pero como no cumple la
condici´on se cicla porque est´a dentro de la funci´on loop
hasta que se cumpla la condici´on que la variable llegue
a 255 entrara en la condici´on y cambiara el valor de la
variable 5 a menos 5 para decender el valor de 255 a 0
y comenzar de nuevo, establecemos un retraso con delay
que ser´a el tiempo en que ir´a cambiando la luminosidad.
Fig. 9 Entrada anal´ogica de un PIN
Fig. 10 Tabla de pines ADC Stellaris
Este peque˜no c´odigo nos sirve para leer el valor anal´ogi-
co del LaunchPad lo primero que declararemos en nuestro
setup ser´a serial.begin que establecer la velocidad de datos
en bits por segundo (baudios) para la transmisi´on de datos.
Creamos una variable de tipo int donde guardaremos
el valor anal´ogico le´ıdo con analogRead, con analogRead
leemos el valor de la tensi´on en el pin anal´ogico elegido
en este caso A0, pin 29 o PE 3 (ver imagen 10 tabla de
pines ADC) convierte esta tensi´on de voltios a un numero
entero en este caso hasta 4096 por el convertidor:
ADC12(2x2x2x2x2x2x2x2x2x2x2x2 = 4096)
Esto proporciona una resoluci´on en la lectura de:
3.3v (3300mV)/4096 unidades, es decir,
0.0008056640625v (0.8056640625mV) por unidad
De esta si esta forma es como se da a cabo la conversi´on,
con serial.println es el que se encarga de imprimir el resul-
tado estos resultados se pueden ver por una hyperterminal
o el monitor serie que incluye ENERGIA.
5. B. Primeras pruebas
El ejemplo m´as sencillo de un parpadeo
de LED usando el software ENERGIA
0101E0009 con programaci´on sencilla y b´asica.
Fig. 11 Parpadeo de LED RGB con el color azul.
Desvanecimiento del LED verde empieza en cero
apagado y por el retardo establecido va en ascenso
hasta llegar al m´aximo brillo para descender la intensidad.
Fig. 12 Desvanecimiento LED RGB colo verde.
El valor que leera analogRead ser´a convertido en
un valor de car´acter entre 0 al 4095 con la for-
mula anteriormente mencionada, mostrando de esta
forma en el monitor serial dado cuestiones de fun-
cionamiento es mejor la hyperterminal por su re-
spuesta e impresi´on de datos son complicaciones.
Fig. 13 Resultados de leer entrada anal´ogica en hyperterminal.
C. Elecci´on de practica
Dado los ejemplos anteriores y haberlos compren-
dido la finalidad en si es la manipulaci´on del LED
RGB pero agreg´andole mas funcionalidades, as´ı que
se decidi´o por que la manipulaci´on fuera por medio
de los push button teniendo diferentes funcionali-
dades cada uno y poder apagarlos desde el mismo
push button, de esta forma poner en pr´actica los
conocimientos adquiridos en los programas anteriores.
D. Programaci´on de la pr´actica
Fig. 14 Codigo de la practica.
6. La finalidad del presente reporte algo relacionado con
el led rgb con sus diferentes tonalidades usando los pines
ya que posee un pin por cada color estandar (rojo, verde,
azul) cada pin posee una intensidad de luz pwm.
Declaramos pinMode donde pin ser´a el numero de pin a
establecer se declaran PF 1, PF 2, PF 3 que son los pines
de los colores rojo, azul y verde, el estado de estos pines
ser´a OUTPUT conduciendo asi el voltaje como lo explica
anteriormente, aqu´ı viene lo nuevo declaramos los pines
PF 4, PF 0 que son los dos push button, y el modo de
entrada requerida el estado ser´a INPUT PULLUP esto
significa que el bot´on de l´ogica ah sido invertido HIGH
cuando est´a abierta y LOW cuando se pulsa.
En la primera funci´on establecemos los pines de nuevo
a quienes se les conducir´a el voltaje con un retraso de
1000 milisegundos, que est´a dentro de un ciclo while(1)
que se repetir´a y repetir´a, a esta funci´on le llamaremos
parpadeo lento despu´es de la manipulaci´on de el LED se
ponen 2 condiciones que si se llegara a efectuar cualquiera
de las dos la funci´on es llamada, por medio del push
button se efectuaran esas condiciones la primera si se
presiona PF 0 me mandara ala siguiente funci´on y en
dado caso de presionar el mismo push button mandara a
la ´ultima funci´on que tiene como objetivo apagar el LED
ya que activa el pin RESET, la condici´on se realizara
dependiendo del push button que se presione.
La siguiente funci´on es parpadeo r´apido donde haremos
lo mismo, ciclamos con while(1) establecemos los pines
de nuevo y el estado para suministrar el voltaje con un
retraso de 250 milisegundos despu´es de esto habr´an dos
condiciones que se efectuara cualquiera de las dos solo si
se presiona el push button, la primera si se presiona PF 4
llamara a la funci´on anterior y en dado caso de presionar
el mismo push button mandara a la ´ultima funci´on que
tiene como objetivo apagar el LED ya que activa el pin
RESET.
La ´ultima funci´on parpadeo apagado que es donde se
activa el bot´on RESET seleccionando el pin, una vez que
se haya apagado el LED RGB puede volver a llamar a
las funciones anteriores presionando PF 4 o PF 0. Por
´ultimo en el bucle tendremos las opciones de las funciones
parpadeo lento y r´apido de esa forma es como comen-
zara la manipulaci´on presionando cualquiera de los dos.
IV. RESULTADOS
Despues de haber realizado varios programas para
poder adentrarse al software ENERGIA los resul-
tados esperados es al final algo relacionado con el
LED RGB., cargamos primero el programa al LaunchPad.
Fig. 15 Programa cargado correctamente.
Una vez cargado correctamente hace-
mos la prueba presionando los push button.
Fig. 16 Manipulacion LED RGB.
Para comprobar que cuando suministra voltaje a un pin
este hace que se encienda el LED, se hizo la prueba con un
multimetro comprobando que efectivamente cuando el pin
no recibe voltaje no enciende ese color, la prueba se hizo
con el color azul.
Fig. 17 Prueba con multimetro.
7. Representaci´on grafica de cuales son los pines de push
button.
Fig. 18 Push button
V. CONCLUSIONES
El prop´osito de la practica se alcanzo, primero que nada
tener nuevos conocimientos en lenguajes usando as´ı ENER-
GIA 0101E0009, el objetivo realizar ejemplos sencillos para
comprender mas como funciona el software y el Stellaris
adem´as de que con esos conocimientos hacer una pr´actica
m´as vistosa utilizando m´as recursos del Stellaris no solo el
LED RGB.
Referencias
[1] Texas Instrument, Stellaris R LM4F120H5QR Microcon-
troller,DATA sheet, 108 Wild Basin, Suite 350 Austin, TX
78746, Febrero 2013
[2] http://cosasdemecatronica.com/tutoriales/arduino/317-
arduino-basico-t19ab-control-basico-de-un-led-rgb-apoyado-por-
tabla-de-colores
[3] http://sabia.tic.udc.es/gc/Contenidos %20adicionales/trabajos/
Tutoriales/color/RGB.htm
[4] http://www.laciudadela.net/2010/01/16/control-de-led-rgb-
con-arduino/
[5] https://github.com/energia/Energia/wiki/Getting-Started
[6] http://www.ti.com/ww/en/launchpad/stellaris head.html
[7] http://arduino.cc/en/Tutorial/InputPullupSerial
[8] http://arduino.cc/en/Reference/pinMode
[9] http://arduino.cc/es/Tutorial/PWM
[10] http://www.ti.com/tool/ek-lm4f120xl
[11] http://energia.nu/