7
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 [email protected] angelblack [email protected] nemesis [email protected] 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.

Stellaris usando ENERGIA

Embed Size (px)

DESCRIPTION

programa ENERGIA es una adaptación de Arduino IDE pero en este caso para microcontroladores de texas instrument como el Stellaris

Citation preview

Page 1: Stellaris usando ENERGIA

Primera Practica Manipulacion LEDRGB con push button

Zaraos Vazquez Jorge Alejandro , Toala Hernandez Jahaziel,

Rodrıguez Morales Guillermo de Jesus

Instituto Tecnologico de Tuxtla Gutierrez, Chiapas

[email protected]

angelblack [email protected]

nemesis [email protected]

Resumen – En esta practica utilizaremos un soft-ware distinto al CCS un programa basado en lenguajede arduino el ENERGIA 0101E0009, realizamosdiferentes ejemplos para poder entender bien comofunciona, utilizando estos ejemplos poniendo en practi-ca la mayorıa de ellos en un solo programa dondela manipulacion del LED RGB con los dos push button.

I. INTRODUCCION

Siglas de red, green, y blue, (rojo, verde y azul). RGB es unmodelo de color utilizado normalmente para presentar color enlos sistemas de video, camaras, y monitores de ordenadores.Representa todos los colores como combinaciones de rojo,verde y azul. RGB en el sistema de color mas utilizado porla mayorıa de los formatos actuales. Stellaris cuenta con esteLED que sera el que manipularemos para activar los 3 coloresestandares, la manera en que sera manejado el LED son conlos 2 push button.

El presente reporte explica como comenzar a usar el pro-grama ENERGIA 0101E0009 con ejemplos de manipulacionde LED como desvanecimiento en la intensidad de luz en elLED, parpadeo, control push button, y envio de caracteresASCII del pin ala hyperterminal o al serial monitor queincluye ENERGIA, una vez realizadas estas practicas serealizo una practica final incluyendo partes de casi todas.

II. FUNDAMENTOS TEORICOS

A. ENERGIA 0101E009

Energia es una plataforma electronica de prototipadorapido para LaunchPad no solo los basados en ARM destellaris, sino tambien a los de mas edad MSP430. Basica-mente se trata de una version muy modificada de ArduinoIDE (que a su vez se basa en Processing).

Supported MCUs:LaunchPad with MSP430G2231MSP430G2452 or MSP430G2553FraunchPad with MSP430FR5739StellarPad with LM4F120H5QR

Fig. 1 Software ENERGIA 0101E0009

El entorno de codigo abierto hace facil escribir codigoy cargarlo. Se ejecuta en Windows, Mac OS X y Linux.El medio ambiente esta escrito en Java y basado enProcessing, avr-gcc y otros programas de codigo abierto.El entorno de desarrollo ENERGIA contiene un editorde texto para escribir codigo, un area de mensajes, unaconsola de texto, una barra de herramientas con botonespara las funciones mas comunes, y una serie de menus.Se conecta con el hardware (Launchpad) para cargarprogramas y comunicarse con ellos.

El software escrito usando (Launchpad) son llamadossketches, estos sketches estan escritos en el editor de texto.Los sketches se guardan con la extension de archivo. Ino.Cuenta con funciones para cortar, pegar, buscar y reem-plazar texto.

Page 2: Stellaris usando ENERGIA

El area de mensajes ofrece informacion al guardar yexportar ademas de los errores. La consola muestra eltexto de salida por el entorno ENERGIA incluyendomensajes de error completos y demas informacion, laesquina inferior derecha de la ventana muestra la actualjunta directiva y el puerto serial.

Los botones de la barra de herramientas le permitencomprobar y cargar programas, crear, abrir y guardarsketches y abra el monitor serie, Serial Monitor muestradatos en serie que se envıan desde el Launchpad. Paraenviar datos al Launchpad, se introduce el texto y se haceclic en el boton .enviar.o presionar enter se selecciona lavelocidad de transmision en el menu 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 distribucion de pinescompleto para el LM4F StellarPad en Energia.

Fig. 2 Diagrama de pines

B. Stellaris LM4F120

El stellairs LM4F120 LaunchPad Evaluation Board esuna plataforma de evaluacion de bajo costo para ARMCortex -M4F basados en microcontroladores de TexasInstrument, el diseno de el LaunchPad stellaris destacaLM4F120H5QR microcontrolador con un dispositivo deinterfaz USB 2,0 y un modulo de hibernacion.

El EK-LM4F120XL tambien cuenta con botones pro-gramables de usuario y un LED RGB para aplicacionespersonalizadas, las cabeceras de la apilables StellarisR© LM4F120 LaunchPad BoosterPack XL hace quesea facil y sencillo para ampliar la funcionalidad de laStellaris R© LaunchPad, al conectarse a otros perifericoscon Stellaris R© BoosterPacks y BoosterPacks MSP430 TM.

El Stellaris R© LM4F120 LaunchPad funciona a bordode emulacion, lo que significa que se puede programar ydepurar sus proyectos sin la necesidad de herramientasadicionales.Compatibilidad del BoosterPackDos de doble-genero, 20-pines de cabeceras apilables ofrecen grandes op-ciones de conexion de la caja.

Estos 40 pines permiten anadir soporte de pantallas,interfaces inalambricas, sensores y otras capacidades a losproyectos muy facilmente y tambien ofrecen compatibili-dad basica con los actuales MSP430 y C2000 LaunchPad’s.

El microcontrolador Stellaris ofrece una LM4F120H5QR80 MHz, 32-bit ARM Cortex-M4 CPU con pun-to flotante, 256Kbytes de 100.000 FLASH ciclo deescritura-borrado y muchos perifericos tales como ADC1MSPS, 8 UARTs, 4 SPIs, 4 I2Cs, USB y hasta 27timers, algunos configurable hasta 64 bits. Dos in-terruptores de uso general de usuarios, un boton dereinicio, 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 lamezcla por adicion de los tres colores de luz primarios.El modelo de color RGB no define por sı mismo lo quesignifica exactamente rojo, verde o azul, por lo que losmismos valores RGB pueden mostrar colores notablementediferentes en diferentes dispositivos que usen este modelode 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 coloresbasicos son el RED (ROJO), GREEN (VERDE) Y BLUE(AZUL) y de la mezcla de estos y su aplicacion conmayor o menor intensidad obtenemos el resto de colores;encontrandonos 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 senalar que los valores RGB sonexpresados en una combinacion de 3 cifras cuyos valores

Page 3: Stellaris usando ENERGIA

mınimo y maximo son 0 y 255 respectivamente. mezclandolos diferentes valores de un modo u otro obtendremoslos 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, cadacomponente de la tripleta toma valores en el rango de 0 a1. Ası un color C1 se expresa:

C1 = R + G + B

Fig. 4 Representacion en cubo unitario

Asumiendo que utilizamos numeros enteros en el rango0..255 (un byte), es decir 256 valores posibles para cadacolor primario, entonces con tres bytes podemos represen-tar 256 x 256 x 256 combinaciones diferentes de los coloresprimarios, es decir una gama de mas de 16 millones decolores (frecuentemente referida como color verdadero”).

Fig. 5 Paleta de colores

III. DESARROLLO DE LA PRACTICA

Para hacer el desarrollo de una manera entendible esrealizado un diagrama de procesos donde se muestra deforma estructurada como realizamos la practica. Se puedeobservar 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 seran voidsetup y loop que son las funciones principales que nece-sariamente tienen que ir en cada codigo realizado conENERGIA. Setup que sera el que se inicia al momento decargar el programa al LaunchPad y loop que es el bucleque realizara las operaciones o tareas del programa.

En este primer ejemplo declaramos pinMode donde pinsera el numero de pin a establecer se declara BLUE LEDpor que asi lo reconoce el software ENERGIA como puedoobservar en la figura 3 el diagrama de pines del Stellaris,Mode es el estado de este pin declarado esta vez comoOUTPUT (salida) como es declarado como salida loque realizara es permitir conducir un nivel de voltaje deacuerdo a una configuracion PWM.

En la siguiente funcion la configuracion de OUTPUTpuede ser cambiada usando digitalWrite, usamos digital-Write que impulsa un voltaje al pin establecido, cuando esHIGH el pasador establece el suministro de energıa de 3.3vque es el voltaje del LaunchPad como se explicaba antesen fundamentos teoricos que para representar el color eneste caso azul seria 0,0,255 al establecer el pin BLUE LED

Page 4: Stellaris usando ENERGIA

ENERGIA sabe como esta distribuido lo unico es laintensidad de luz, es decir, el voltaje al establecer HIGHenvıa los 3.3v = 255, cuando digitalWrite es LOW elpasador se establece a tierra ası de esta manera apagandoel LED, delay es el retraso en milisegundos que le daremos1000=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 variablesbrillo que sera la intensidad PWM y descolorar la variableque restara intensidad al brillo, los pines que usaremossera el 39 o GREEN LED definimos su estado OUTPUT(salida), ya en la funcion loop cambiamos la configuracionde salida con analogWrite que es usado para controlar laluminosidad del LED, definiendo que 255 es el maximobrillo porque son las 256 combinaciones diferentes de unbyte incluyendo cero, 3.3v(3300mV) necesario para elmayor brillo, entonces ENERGIA aplicara una regla de 3para saber que cantidad necesaria de voltaje debe enviarpara 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)Maxima luminosidad = 256 / 0.0775757575757576 =3300mV (3.3v)Luminosidad media = 125 / 0.0775757575757576 =1611mV (1.6v)

La configuracion con analogWrite primero establecemosel pin y luego la luminosidad que es la variable brillo, comonuestra variables esta en 0 el LED comenzara apagado,a esta variables se iguala a la misma variable mas lavariable que tiene un valor de 5 y asi comenzara a brillarcon una intensidad muy debil despues de esto bajara a la

siguiente instruccion que es un if pero como no cumple lacondicion se cicla porque esta dentro de la funcion loophasta que se cumpla la condicion que la variable lleguea 255 entrara en la condicion y cambiara el valor de lavariable 5 a menos 5 para decender el valor de 255 a 0y comenzar de nuevo, establecemos un retraso con delayque sera el tiempo en que ira cambiando la luminosidad.

Fig. 9 Entrada analogica de un PIN

Fig. 10 Tabla de pines ADC Stellaris

Este pequeno codigo nos sirve para leer el valor analogi-co del LaunchPad lo primero que declararemos en nuestrosetup sera serial.begin que establecer la velocidad de datosen bits por segundo (baudios) para la transmision de datos.

Creamos una variable de tipo int donde guardaremosel valor analogico leıdo con analogRead, con analogReadleemos el valor de la tension en el pin analogico elegidoen este caso A0, pin 29 o PE 3 (ver imagen 10 tabla depines ADC) convierte esta tension de voltios a un numeroentero en este caso hasta 4096 por el convertidor:

ADC12(2x2x2x2x2x2x2x2x2x2x2x2 = 4096)

Esto proporciona una resolucion 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 conversion,con serial.println es el que se encarga de imprimir el resul-tado estos resultados se pueden ver por una hyperterminalo el monitor serie que incluye ENERGIA.

Page 5: Stellaris usando ENERGIA

B. Primeras pruebas

El ejemplo mas sencillo de un parpadeode LED usando el software ENERGIA0101E0009 con programacion sencilla y basica.

Fig. 11 Parpadeo de LED RGB con el color azul.

Desvanecimiento del LED verde empieza en ceroapagado y por el retardo establecido va en ascensohasta llegar al maximo brillo para descender la intensidad.

Fig. 12 Desvanecimiento LED RGB colo verde.

El valor que leera analogRead sera convertido enun valor de caracter entre 0 al 4095 con la for-mula anteriormente mencionada, mostrando de estaforma en el monitor serial dado cuestiones de fun-cionamiento es mejor la hyperterminal por su re-spuesta e impresion de datos son complicaciones.

Fig. 13 Resultados de leer entrada analogica en hyperterminal.

C. Eleccion de practica

Dado los ejemplos anteriores y haberlos compren-dido la finalidad en si es la manipulacion del LEDRGB pero agregandole mas funcionalidades, ası quese decidio por que la manipulacion fuera por mediode los push button teniendo diferentes funcionali-dades cada uno y poder apagarlos desde el mismopush button, de esta forma poner en practica losconocimientos adquiridos en los programas anteriores.

D. Programacion de la practica

Fig. 14 Codigo de la practica.

Page 6: Stellaris usando ENERGIA

La finalidad del presente reporte algo relacionado conel led rgb con sus diferentes tonalidades usando los pinesya que posee un pin por cada color estandar (rojo, verde,azul) cada pin posee una intensidad de luz pwm.

Declaramos pinMode donde pin sera el numero de pin aestablecer se declaran PF 1, PF 2, PF 3 que son los pinesde los colores rojo, azul y verde, el estado de estos pinessera OUTPUT conduciendo asi el voltaje como lo explicaanteriormente, aquı viene lo nuevo declaramos los pinesPF 4, PF 0 que son los dos push button, y el modo deentrada requerida el estado sera INPUT PULLUP estosignifica que el boton de logica ah sido invertido HIGHcuando esta abierta y LOW cuando se pulsa.

En la primera funcion establecemos los pines de nuevoa quienes se les conducira el voltaje con un retraso de1000 milisegundos, que esta dentro de un ciclo while(1)que se repetira y repetira, a esta funcion le llamaremosparpadeo lento despues de la manipulacion de el LED seponen 2 condiciones que si se llegara a efectuar cualquierade las dos la funcion es llamada, por medio del pushbutton se efectuaran esas condiciones la primera si sepresiona PF 0 me mandara ala siguiente funcion y endado caso de presionar el mismo push button mandara ala ultima funcion que tiene como objetivo apagar el LEDya que activa el pin RESET, la condicion se realizaradependiendo del push button que se presione.

La siguiente funcion es parpadeo rapido donde haremoslo mismo, ciclamos con while(1) establecemos los pinesde nuevo y el estado para suministrar el voltaje con unretraso de 250 milisegundos despues de esto habran doscondiciones que se efectuara cualquiera de las dos solo sise presiona el push button, la primera si se presiona PF 4llamara a la funcion anterior y en dado caso de presionarel mismo push button mandara a la ultima funcion quetiene como objetivo apagar el LED ya que activa el pinRESET.

La ultima funcion parpadeo apagado que es donde seactiva el boton RESET seleccionando el pin, una vez quese haya apagado el LED RGB puede volver a llamar alas funciones anteriores presionando PF 4 o PF 0. Porultimo en el bucle tendremos las opciones de las funcionesparpadeo lento y rapido de esa forma es como comen-zara la manipulacion presionando cualquiera de los dos.

IV. RESULTADOS

Despues de haber realizado varios programas parapoder adentrarse al software ENERGIA los resul-tados esperados es al final algo relacionado con elLED 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 pineste hace que se encienda el LED, se hizo la prueba con unmultimetro comprobando que efectivamente cuando el pinno recibe voltaje no enciende ese color, la prueba se hizocon el color azul.

Fig. 17 Prueba con multimetro.

Page 7: Stellaris usando ENERGIA

Representacion grafica de cuales son los pines de pushbutton.

Fig. 18 Push button

V. CONCLUSIONES

El proposito de la practica se alcanzo, primero que nadatener nuevos conocimientos en lenguajes usando ası ENER-GIA 0101E0009, el objetivo realizar ejemplos sencillos paracomprender mas como funciona el software y el Stellarisademas de que con esos conocimientos hacer una practicamas vistosa utilizando mas recursos del Stellaris no solo elLED RGB.

Referencias

[1] Texas Instrument, Stellaris R© LM4F120H5QR Microcon-troller,DATA sheet, 108 Wild Basin, Suite 350 Austin, TX78746, 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/