SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
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.
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
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
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.
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.
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.
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/

Más contenido relacionado

Similar a Stellaris usando ENERGIA

Similar a Stellaris usando ENERGIA (20)

Lcd con arduino texto en movimiento paso a paso
Lcd con arduino texto en movimiento paso a pasoLcd con arduino texto en movimiento paso a paso
Lcd con arduino texto en movimiento paso a paso
 
Tutorial proton ide plus part 1
Tutorial proton ide plus part 1Tutorial proton ide plus part 1
Tutorial proton ide plus part 1
 
MATRIZ LED 4x10 CON ARDUINO - ATMEGA328P
MATRIZ LED 4x10 CON ARDUINO - ATMEGA328PMATRIZ LED 4x10 CON ARDUINO - ATMEGA328P
MATRIZ LED 4x10 CON ARDUINO - ATMEGA328P
 
Clase 4
Clase 4Clase 4
Clase 4
 
partes de la computedora
partes de la computedorapartes de la computedora
partes de la computedora
 
Arduino 1
Arduino 1Arduino 1
Arduino 1
 
Electricidad y electrónica.pdf
Electricidad y electrónica.pdfElectricidad y electrónica.pdf
Electricidad y electrónica.pdf
 
Electricidad y electrónica.pdf
Electricidad y electrónica.pdfElectricidad y electrónica.pdf
Electricidad y electrónica.pdf
 
Electricidad y electrónica.pdf
Electricidad y electrónica.pdfElectricidad y electrónica.pdf
Electricidad y electrónica.pdf
 
Electricidad y electrónica.pdf
Electricidad y electrónica.pdfElectricidad y electrónica.pdf
Electricidad y electrónica.pdf
 
Electricidad y electrónica.pdf
Electricidad y electrónica.pdfElectricidad y electrónica.pdf
Electricidad y electrónica.pdf
 
Curso-de-PLC.pdf
Curso-de-PLC.pdfCurso-de-PLC.pdf
Curso-de-PLC.pdf
 
Manual Arduino Electronica
Manual Arduino Electronica  Manual Arduino Electronica
Manual Arduino Electronica
 
Tata
TataTata
Tata
 
Recursos logicos
Recursos logicosRecursos logicos
Recursos logicos
 
Sistema Informático
Sistema InformáticoSistema Informático
Sistema Informático
 
Taller processing arduino
Taller processing arduinoTaller processing arduino
Taller processing arduino
 
El mundo del lenguaje c++
El mundo del lenguaje c++El mundo del lenguaje c++
El mundo del lenguaje c++
 
Proyecto arduino medidor de temperatura
Proyecto arduino medidor de temperaturaProyecto arduino medidor de temperatura
Proyecto arduino medidor de temperatura
 
Lenguaje máquina
Lenguaje máquinaLenguaje máquina
Lenguaje máquina
 

Más de Alejandro Zaraos Vázquez (8)

T37 isc zaraos vazquez jorge alejandro
T37 isc zaraos vazquez jorge alejandroT37 isc zaraos vazquez jorge alejandro
T37 isc zaraos vazquez jorge alejandro
 
Tipos de lenguaje formal según Chomsky
Tipos de lenguaje formal según ChomskyTipos de lenguaje formal según Chomsky
Tipos de lenguaje formal según Chomsky
 
Ieee formato
Ieee formatoIeee formato
Ieee formato
 
Formato ieee
Formato ieee Formato ieee
Formato ieee
 
Practica Bases de datos
Practica Bases de datosPractica Bases de datos
Practica Bases de datos
 
Sistema competencias con el Stellaris
Sistema competencias con el StellarisSistema competencias con el Stellaris
Sistema competencias con el Stellaris
 
Comunicación Serial Asíncrona con el Stellaris
Comunicación Serial Asíncrona con el Stellaris Comunicación Serial Asíncrona con el Stellaris
Comunicación Serial Asíncrona con el Stellaris
 
Gramática y autómatas
Gramática y autómatasGramática y autómatas
Gramática y autómatas
 

Stellaris usando ENERGIA

  • 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/