Ha pasado mucho tiempo apagado el pequeño Stellaris Launchpad, y por eso, aprovechando que tuve un poco de tiempo libre el fin de semana, decidí jugar un poco con él.
En esta ocasión, he conectado un LCD Nokia 5100 que tenía por ahí, y he armado un pequeño voltímetro digital.
Primero, hay que descargar la librería lcd_5100 e instalarla dentro de nuestra carpeta de Energia, en la ruta energia\hardware\lm4f\libraries. Esto debemos hacerlo antes de abrir Energia, para que al iniciar la aplicación, se instale la librería para poder ser usada por nuestro Launchpad
Para la conexión del Launchpad con el LCD, vamos a usar los siguientes pines:
- Backlight: PA6
- SCLK: PA3
- MOSI: PA5
- DC: PA2
- RST: PB5
- SCE: PA7
y el código fuente para el Stellaris es el siguiente:
// ejemplo para uso del display nokia 5100 /* Pines usados en el display led: PA6 SCLK: PA3 MOSI: PA5 DC: PA2 RST: PB5 SCE: PA7 */ #include "Energia.h" #include #include "LCD_5110.h" #include // Variables LCD_5110 myScreen; boolean backlight = false; uint8_t k = 0; // Add setup code void setup() { myScreen.begin(); myScreen.setBacklight(backlight); myScreen.setFont(0); myScreen.text(0, 0, "Launchpad ADC."); myScreen.setFont(0); myScreen.text(0, 1, "--------------"); delay(1000); myScreen.text(0, 5, "Backlight off"); } // Add loop code void loop() { int analog=analogRead(A0); double valorReal = (analog-1093)/318.79; String valor=floatToString(valorReal, 3); if (myScreen.getButton()) { backlight = (backlight==0); myScreen.setFont(0); myScreen.text(0, 5, backlight ? "Backlight on " : "Backlight off"); myScreen.setBacklight(backlight); } myScreen.setFont(1); myScreen.text(0, 2, valor); myScreen.setFont(0); for (uint8_t i=0; i<14; i++) myScreen.text(i, 4, (i==k) ? "*" : " "); k++; k %= 14; delay(100); } String floatToString(double number, uint8_t digits) { String resultString = ""; if (number < 0.0) { resultString += "-"; number = -number; } double rounding = 0.5; for (uint8_t i=0; i<digits; ++i) rounding /= 10.0; number += rounding; unsigned long int_part = (unsigned long)number; double remainder = number - (double)int_part; resultString += int_part; if (digits > 0) resultString += "."; while (digits-- > 0) { remainder *= 10.0; int toPrint = int(remainder); resultString += toPrint; remainder -= toPrint; } return resultString; }
El ejemplo es bastante sencillo. Lo único adicional que he tomado de un ejemplo en C, es la conversión de Double a String, para mostrar el valor convertido desde el ADC en el LCD.
Y dado que una imágen vale mas que 1000 palabras, les dejo la prueba del funcionamiento.
Si desean visualizar el código fuente en Codebender, pueden utilizar este enlace
Deja un comentario
Lo siento, debes estar conectado para publicar un comentario.