lunes, 29 de mayo de 2017

DISEÑO DE CIRCUITOS CON DIODOS EMISORES DE LUZ

Una de las cosas que mas me apasionan de la electrónica es la iluminación con diodos emisores de luz (desde ahora en adelante para referirme al diodo emisor de luz, únicamente utilizaré sus iniciales: LED), Quizá el 90% de mi trabajo lo he dedicado a construir vumetros, analizadores de espectro, strobos, secuenciadores, etc; quiero dejar plasmado en este blog todo el conocimiento y experiencia que tengo controlando LEDs.


Empezare indicando que un LED, dicho de manera sencilla es un dispositivo electrónico que mite luz cuando se hace pasar una corriente adecuada por él. Nótese que he utilizado la palabra "adecuada", pido disculpas si hago demasiado hincapié en esto, pero si deseamos controlar bien estos dispositivos, hemos de saber que una corriente insuficiente no haría brillar al LED o peor aun es el caso contrario, una corriente excesiva causaría daños irreversibles en el mismo. 

Los parámetros fundamentales a la hora de diseñar sistemas de iluminación con diodos LED son el voltaje fordward (VF) y la corriente fordward (IF), estos parámetros siempre nos indica el fabricante en sus hojas de datos y debemos respetarlos para obtener una luz brillante y de larga vida. Otros dos parámetros importantes, son el material del que están echos y la longitud de onda de su espectro visible; pues estos parámetros determinan la coloración de la LUZ. La tabla siguiente muestra un ejemplo para los LED más comunes que trabajan con una corriente de fordward de 20mA.


Existe en el mercado una gran variedad de diodos LED, de todo tipo, tamaño y color, Existen los ultrabrillantes y los no tan brillantes, los puntuales y los difusos, los que emiten luz visible y los que emiten luz invisible, existen los LED unicolor, bicolor, los RGB y los RGBW. de los cuales nos ocuparemos más adelante.  


Encendiendo un LED ("Hello World")


Encender un LED es cosa sencilla, sin embargo hay que andarse con cuidado si no deseamos dañarlo, antes de alimentarlo con corriente debemos tener en cuenta cual es su voltaje e intensidad de trabajo (VF e IF). además se debe tener en cuenta la polaridad, pues todo led tiene dos terminales, uno positivo llamado ANODO y uno negatiivo llamado CATODO.

Supongamos que deseamos encender un LED de color azul, cuyos parámetros indicados por el fabricante son VF=3.6V, IF=20mA con una bateria de 9V, 

Obviamente si alimentamos directamente al LED con la bateria de 9V, este no tardaría mucho en destruirse. Entonces, para evitar que esto ocurra, debemos colocar en serie una resistencia que limite la corriente y el voltaje que pasa por él;.La resistencia se calcula utilizando la ley de OHM y teniendo en cuenta que por el LED debe estar VF=3.6V y circular IF= 20mA. El calculo y el circuito correspondiente se muestra a continuación en la siguiente figura:


Conexión de LEDS en Serie y Paralelo

Supoga que desea encender tres LED (VF=2.2V e IF=20mA) utilizando como fuente de alimentación una batería de 9V; Bueno aquí tendriamos dos posibles soluciones; la primera es conectar los LED en paralelo y la segunda es conectar los LED en serie, examinemos ambos casos y analicemos cual nos resulta más conveniente:

Como vemos en la figura anterior la conexión en serie resultó ser mucho más ventajosa que la conexión en paralelo; puesto que es un diseño más sencillo y consume menos corriente, sin embargo no siempre la conexión en serie es más ventajosa que la conexión en paralelo, para entender mejor lo que acabo de decir, Examinemos el siguiente ejemplo:

Se desea conectar Cuatro Leds (VF = 3.6V, IF=20mA) a partir de una batería de 9V. determine el circuito adecuado y la resistencia que debe utilizarse.

Como vemos en este ejemplo, la conexión en serie no es la adecuada puesto que el voltaje demandado por los cuatro LED es superior al voltaje que entrega la batería.

Ahora surge la pregunta; ¿Se puede conectar LEDS en paralelo utilizando solo una resistencia? respuesta es: "Si se puede, pero en la mayoria de los casos no conviene"  Examinemos el Ejemplo siguiente, para que pueda comprender mejor esta situación suponga que deseamos conectar doce LED (VF=4V, IF=20mA) en paralelo con una batería de 12V utilizando únicamente una resistencia;

El cálculo de la resistencia y la potencia que disipa se muestra en la siguiente figura:




Como vemos la potencia que debe disipar la resistencia es de 2W, estas resistencias por lo general se fabrican de cerámica y son de un tamaño muy grande, por lo que en algunos casos no sería conveniente utilizarlas, Además la potencia que disipa la resistencia se convierte en calor, es decir existe mucho desperdicio de energía y no podríamos decir que es un circuito eficiente.

En resumen un buen diseño por lo general siempre termina siendo una combinación de LEDs conectados en serie y paralelo. a continuación se muestra un buen criterio de diseño para una lampara LED de 24V que consume 160mA.


La resistencias a utilizar la podemos determinar de la ley de Ohm

R=V/I = (24-15)V/20mA = 450 Ohm

La potencia que disipa cada resistencia sería:

P=I x I x R = 160 x 160 x 450 = 0.115 W

Tenemos entonces qué resistencias comerciales de 450 Ohm 1/4 W serian las indicadas para esta lámpara.

Controlando el Brillo de los LED

Las siglas PWM vienen de tres vocablos ingleses (Pulse Width Modulation), o modulación por ancho de pulso, esta técnica es muy utilizada por nosotros los electrónicos cuando deseamos dosificar la potencia que llega hasta nuestros dispositivos; para el caso que nos compete ahora, las lámparas LED.


Una onda PWM, es una señal cuadrada de periodo fijo y ciclo util variable; en la figura anterior se nuestra tres ondas PWM con ciclo util variable; 30%, 60% y 80% respectivamente; El LED se apagará cuando la onda atraviesa por un nivel lógico bajo y se encenderá cuando la onda atraviesa por un nivel lógico alto; Mientras mayor es el tiempo que nuestro LED permanece encendido respecto al tiempo que permanece apagado; mayor es el brillo que obtendremos de él; Todo esto se hace a una frecuencia lo suficientemente veloz como para que el ojo humano no pueda notar el parpadeo que existe en el LED.

El LED RGB

El LED RGB en realidad se trata de tres LEDS de color ROJO, VERDE y AZUL insertos en una misma capsula.

Estos pueden ser CÁTODO COMUN cuando internamente están conectados los terminales negativos o ÁNODO COMUN cuando internamente están conectados los terminales positivos.


Al encender distintas combinaciones se formara un color resultante de la mezcla RGB; La tabla muestra algunas combinaciones posibles y los distintos colores resultantes de la mezcla:


Como vemos en la tabla un LED RGB puede llegar a consumir hasta 60mA cuando se han encendido sus tres colores primarios para formar el color Blanco; 

Se puede conseguir un amplia gama de tonalidades de luz cuando se regula el brillo de cada LED; utilizando la modulación de ancho de pulso, aplicando distintos ciclos útiles como por ejemplo 75% de Azul, 25% rojo y 10% de verde, se conseguiría una tonalidad azulada parecida al violeta.

Conexión de LEDS a Circuitos Integrados y Microcontroladores

La mayoria de circuitos integrados, entre ellos TTL, CMOS, microcontroladores PIC y los ATMEGA, entregan un voltaje que conmuta entre 0 y 5V; por lo que resulta indispensable colocar una resistencia para protejer al LED tanto de un sobrevoltaje como de una sobreintensidad. Dicha resistencia se calcula de la ley de Ohn 

                            R=(5V-VF)/IF

Por ejemplo para calcular la resistencia que se debe colocar a la salida del ARDUINO para protejer un LED (VF=2V, IF=20mA) sería:

R=(5V-2V)/20mA=150 Ohm

la figura siguiente muestra dos formas de conectar un LED a Arduino; la primera es escribiendo un CERO lógico a la salida del pin 9 y la segunda escribiendo un UNO lógico a la salida del pin 8.


Comandando un grupo de LEDs con transistores Darlingthon

Debido a que el voltaje y la corriente que manejan los circuitos integrados no abastecen para encender a un grupo grande de LEDS se debe recurrir al usos de transistores para conmutar con la corriente y el voltaje demandados por el grupo.

Para facilitar nuestro estudio, consideraremos al grupo de LEDs como un solo LED de alta potencia;



Para nuestro caso practico lo que nos interesa es calcular la resistencia RC que proteje al grupo de LEDs en serie, para ello teniendo la ley de Ohm se han deducido las siguientes formulas: 

VRC = VDD - NUMERO DE LEDS EN SERIE x VF - VCE
RC = VRC / IF
donde,
  • VRC es el voltaje que cae en la resistencia RC
  • VDD es el voltaje que alimenta al LED
  • VCE es el voltaje entre colector - emisor que en estado de conmutación siempre es 0,2V

Ademas de la resistencia de colector, se debe calcular la resistencia de base que hace disparar al transistor con la corriente requerida por los LED, para ello tenemos las siguientes formulas:

VRB = VCC - VBE 
RB = VRB / Ib
donde,
  • VRB voltaje que cae en la resistencia RB
  • VCC es el voltaje que entrega el circuito integrado (para el caso de PIC, ARDUINO, RASPBERRY PI, Series CMOS y TTL siempre es 5V)
  • VBE voltaje base - emisor siempre igual a 0.7V
  • Ib es la corriente de base la cual se determina de la formula:
Ib = Ic / hfe 
donde, 
  • Ic es la corriente que circula por el colector
  • hfe, corresponde a la ganancia del transistor y siempre la especifica el fabricante en su hoja de datos 
Para ilustrar lo anteriormente dicho, supongamos que desea comandar con ARDUINO UNO un grupo de 15 LED cuyo VF/IF son 3V/20mA con un transistor TIP41 cuya ganancia es hfe = 75.

Calcular

a)Las resistencias de colector que protejeran a los LED
b)La resistencia de base adecuada para comandar al transistor

Tome en cuenta la configuración mostrada en la figura siguiente:



Solución: 

EL Voltaje que cae en las resistencias RC, R1, R2, R3, R4 se calcula de la siguiente manera;

VDD - NUMERO DE LEDS EN SERIE X VF - VCE =
VDD - 3 x VLED - VCE = 12V - 3 x 3V - 0.2V = 3V 

El valor de las resistencias la obtenemos de la ley de Ohm

R = 3V/20mA = 150 Ohm

la corriente total que demandan las cinco hileras de LED sería:

5 x 20mA  = 100mA. 

Es decir que la corriente que circula por el colector debe ser igual a 100mA; por lo que la corriente de base debería ser 

Ib = Ic / hfe = 100mA/75 = 1.4mA

la resistencia Rb de base adecuada para comandar al transistor seria entonces:

RB = VRB/IB
RB = (VCC-VCE)/Ib
Rb = (5V - 0.7V)/1.34mA = 3.2K 

La próxima entrega estaremos hablado de las CINTA LED su uso y aplicaciones, así es que si les interesa no dejen de visitar mi blog

miércoles, 24 de mayo de 2017

CONSTRUYA UN VUMETRO CON ARDUINO Y MICROFONO ELECTRET

Hola Amigos en esta ocasión quiero compartir con ustedes un proyecto que en lo personal me ha dado muchas satisfacciones. Se trata de un indicador de sonido de doce niveles construido con ARDUINO UNO.

Materiales:

1 Micrófono ELECTRET
12 LED (seis verdes, tres azules, dos tomates, un rojo)
12 resistencias de 330 Ohm
2 resistencias de 1k
1 resistencia de 100k
1 condensador de 1uf
1 plaqueta perforada
1 placa ARDUINO UNO R3

Para explicar como funciona lo dividiremos en tres etapas:

ETAPA DE CAPTACIÓN DE SEÑAL

El sonido que hay en el ambiente es captado por el micrófono electret, éste a su vez entrega una señal eléctrica que es proporcional a la intensidad del sonido

Debido a que la señal entregada por el micrófono es demasiado débil se hace necesario amplificarla y filtrarla; para ello utilizamos armamos el siguiente circuito:





ETAPA DE PROCESAMIENTO

La señal ya amplificada y acondicionada es llevada hasta el canal analógico del microcontrolador donde la convertimos en un dato digital para luego enviar al puerto serie del computador y poder examinarlo con la herramienta Serial Ploter de ARDUINO.




ETAPA DE PRESENTACIÓN

Si observamos el gráfico de la señal; Podemos fijarnos que ésta cambia en un rango comprendido entre 200 y 900. Debido a que la medición se representa con una barra de 12 diodos LED. Debemos hacer un mapeo de la señal (cambio escala de 200-900 a 0-12) Mientras más intenso es el sonido mayor numero de leds encenderán.

Todos leds están conectados a los pines digitales 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 a través de resistencias de 330 ohmios para limitar la corriente y evitar daños en los mismos.

SKETCH

//Teniendo en cuenta todos los elementos teóricos, se escribió el siguiente programa para Arduino
//Conectar la señal de audio amplificada en el canal A1
//Conectar doce leds con sus respectivas resistencias a los pines 2,3,4,5,6,7,8,9,10,11,12,13

const int ledCount = 12; // numero de leds

int sensorReading;       // lectura del ADC 0-1024  



int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};

void setup() {
  Serial.begin(9600); //inicamos el puerto Serial
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {pinMode(ledPins[thisLed], OUTPUT);}// programamos desde el pin 2 al pin 13 como salidas   
}

void loop() {
  sensorReading = analogRead(A1);//tomamos la lectura del ADC
  Serial.println(sensorReading); //imprimimos en el puerto serie
  int ledLevel = map(sensorReading, 200,500, 0, ledCount);  // mapeamos desde 300 hasta 900 para los LEDS desde 2 a 13 
  
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    if (thisLed < ledLevel) {
      digitalWrite(ledPins[thisLed], HIGH);// encendemos los LED segun la intensidad de la señal 
    }
     else {
      digitalWrite(ledPins[thisLed], LOW);// apagamos los LED segun la intensidad de la señal
    }
  }
  delay(10);
  }

ENSAMBLE.

Armamos el siguiente circuito sobre una placa perforada procurando que todas las conexiones coincidan con los pines de arduino.




A continuación se muestra fotografías del circuito ya ensamblado



En este vídeo podemos ver al vumetro funcionando



VUMETRO GIGANTE SEIS EFECTOS

Si lo que deseamos es hacer un vumetro gigante con un gran número de LEDs debemos emplear transistores que conmutan los LED a 12V como se muestra en el siguiente circuito;


A continuación se muestra unas fotos del vumetro construido con un PIC18F4550



Con un poco de imaginación podemos hacer que los Led se enciendan mostrando secuencias muy agradables.


En este ultimo video vemos al vumetro funcionando en completa oscuridad


Gracias!

sábado, 13 de mayo de 2017

CONSTRUYA UN ANALIZADOR DE ESPECTRO CON ARDUINO Y WINAMP

Este articulo explica como hacer un analizador de espectro utilizando el reproductor de música WINAMP y el Plugin "gen_crownsoft_lcd.dll"; 

La tarea del Plugin es enviar datos al puerto serie del computador que contienen información de las frecuencias de audio. 

Del otro lado tenemoas al ARDUINO toma los datos que envía el plugin y los nuestra en una pantalla LCD de 2 líneas x 16 columnas. 

Con ligeras modificaciones en el código fuente se puede construir un analizador de espectro mas grande y vistoso como el de la foto.



Figura 1. Analizador de Espectros Gigante 


En seguida presento los detalles de como lo construí;

MATERIALES

Arduino UNO
LCD 2x16 Lineas
Potenciometro multivueltas 10K

SOFTWARE

Winamp 5.6
Descargar Plugin

Procedimiento.

PASO 1: debemos instalar el Plugin procedemos de la siguiente manera:

  • Copiamos el archivo "gen_crownsoft_lcd.dll" dentro de la carpeta c:\...Winamp\Plugins 
  • Copiamos el archivo ""lcd_analyzer.ini" en el directorio raíz C:\ 
  • Editamos el archivo "lcd_analyzer.ini" indicando el puerto COM donde conectaremos la placa ARDUINO 
PASO 2: Iniciamos Winamp, vamos a menú Opciones/preferencias, En de dialogo en Plugins/Proposito General buscar si aparece en la lista el plugin "gen_crownsoft_lcd.dll" (ver figuras 2 y 3)

Figura 2.

Figura 3.

PASO 3:, Escribimos el sketch correspondiente para ARDUINO:


Siempre y cuando se haya instalado el Plugin, WINAMP lo que hará es enviar comandos al puerto serie del computador; dichos comandos son códigos ASCII (a, b, c, d, e, f, g, h, i, j, k) y tienen el siguiente significado;

a amplitud =1
b amplitud =2
c amplitud =3
d amplitud =4
e amplitud =5
f amplitud =6
g amplitud =7
h amplitud =8 
i, comando que indica que se va escribir un carácter
j, comando que indica que se va escribir la amplitud de onda
k, borra la pantalla

ejemplos:

i00H
posicionar el cursor del LCD en (0,0) y escribir el carácter 'H'

j01b
posicionar el cursor del LCD en (0,1) y escribir la amplitud de la onda = 2

k
limpiar pantalla del LCD

Con base a lo anteriormente expuesto se ha escrito el siguiente sketch para ARDUINO el mismo que recibe e interpreta los comandos enviados por Winamp y los presenta en un LCD 2x16

#include <LiquidCrystal.h> 

LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // lcd pins RS E D4 D5 D6 D7
byte custChars[8][8] = {
//LEVEL 0 1 2 3 4 5 6 7
{ B00000, B00000, B00000, B00000, B00000, B00000, B00000, B11111 },
{ B00000, B00000, B00000, B00000, B00000, B00000, B11111, B11111 },
{ B00000, B00000, B00000, B00000, B00000, B11111, B11111, B11111 },
{ B00000, B00000, B00000, B00000, B11111, B11111, B11111, B11111 },
{ B00000, B00000, B00000, B11111, B11111, B11111, B11111, B11111 },
{ B00000, B00000, B11111, B11111, B11111, B11111, B11111, B11111 },
{ B00000, B11111, B11111, B11111, B11111, B11111, B11111, B11111 },
{ B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 }
};

byte serial_getch() {
while (Serial.available() == 0);
return Serial.read();
}

void setup(){
Serial.begin(19200);
lcd.begin(16, 2);
lcd.clear();
for (int i = 0; i<8; i++){
lcd.createChar(i, custChars[i]);
delay(500);
}
}

void loop(){
byte rxbyte = serial_getch();//inicio de trama puede ser i, j, k
if (rxbyte == 'j'){
byte coulumn = serial_getch()-'0'; //indica columnas 0, 1, 2,... ,15
byte row = serial_getch()-'0'; //indica filas 0, 1
byte level = serial_getch()-'a'; //indica la amplitud 0, 1, 2,... ,7
lcd.setCursor(coulumn , row);
lcd.write((uint8_t)(level));
}
else if (rxbyte == 'i'){
byte coulumn = serial_getch()-'0'; //indica columnas 0, 1, 2,... ,15
byte row = serial_getch()-'0'; //indica filas 0, 1
lcd.setCursor(coulumn , row);
lcd.write((char)serial_getch()); //escribe un espacio, sirve para borrar columnas
}

else if (rxbyte == 'k'){
lcd.clear();//borra toda la pantalla
}
}


Paso 4; Si no disponemos un LCD Shield, debemos a
rmar el siguiente circuito y cargar el sketch correspondiente


Estando todo listo; y asegurandonos que el Arduino se encuentre en el mismo numero de puerto COM que el especificado en el archivo lcd_analyzer.ini  Iniciamos Winamp nuevamente y rodamos una canción para ver a nuestro analizador de espectros funcionando.




Figura 4.

Ahora pongo un vídeo del analizador de espectro que construí: 



Con ligeras modificaciones del código fuente he conseguido construir un analizador de espectro gigante como se muestra en el siguiente vídeo:



Quedo a la espera de sus sugerencias y comentarios.

descargar código y plugin

martes, 9 de mayo de 2017

CONSTRUYA UN VUMETRO CON ARDUINO Y WINAMP


Estimado lector le invito a revisar el siguiente articulo donde explico como construir un vumetro que reacciona con la música que reproduce WINAMP. 


MATERIALES:

ARDUINO UNO + CABLE USB
12 LEDS: 7 VERDES, 3 AMARILLOS, 2 ROJOS
12 RESISTENCIAS 100 OHM
1 PLACA UNIVERSAL
1 METRO DE ESTAÑO


HERRAMIENTAS:
CAUTIN
PINZA
PELA CABLES


SOFTWARE:
WINAMP 5



Lo primero que vamos hacer es armar el siguiente circuito:



Luego instalar el software WINLPT VERSION 2.09 y grabar el sketch en ARDUINO.



Una vez instalado el software vamos a MENU INICIO/WINLPT y le damos clic en "launch WINAMP" (no iniciar winamp directamente ya que ocurrirá un error y no se iniciará el plugin)


Dentro de winamp nos dirigimos al menú Opciones/vizualizacion/iniciar
Bajo la pestaña SETTINGS configurar los siguientes parámetros:

COM el que esta conectado ARDUINO,
Baudrate = 9600,
Header = 1,
DataBytesCount=12




Para comprender mejor la configuración del Plugin revisar el siguiente vídeo:





FOTOS DEL PROYECTO

Para llevar a cabo este proyecto, se utilizo doce LED y doce resistencias de 100 ohm luego se las colocó en una placa perforada de manera que se pueda colocar sobre el ARDUINO y coincida con los pines 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 y GND




VUMETRO WINAMP CON MATRIZ P10

Ahora modificaremos el SKETCH para hacerlo funcionar con matrices P10



Efecto Lineal:



Efecto Circular:




Este es el código para cargar en ARDUINO:


//CONEXIONES:
//ARDUINO________________DMD
//PIN9___________________OE
//PIN6___________________A
//PIN7___________________B
//PIN13__________________SLK
//PIN8___________________SCLK
//PIN11__________________SPI
// Protocolo:
// 0 - APAGA EL LED
// 255 - ENCIENDE EL LED
// 1 - CABECERA MARCA EL INICIO DE LA TRAMA
// Baud Rate: 9600
// CABECERA: 1
//                   1 L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 L12
// PAQUETE COMPLETO: 1 0  0  0  0  0  0  0  0  0  0  0  0
// BYTES: 1..12
/////////////////////////////////////////////////////////////////////
#include <DMD.h>
#include <TimerOne.h>
#include "Arial_black_16.h"
#include "SystemFont5x7.h"//para letra pequeña
#include "Arial_Black_16_ISO_8859_1.h"//para letra grande
DMD display(1,2);
const int baudrate = 9600;
const int numChannels = 12;
int curChannel = 0;

void ScanDMD()
{ 
  display.scanDisplayBySPI();
}

void writeLevel(int i, bool inc){
      if (inc==1)display.drawCircle(15,15,i,GRAPHICS_NORMAL);else display.drawCircle(15,15,i,GRAPHICS_NOR);
}
void setup() {
   Timer1.initialize( 1000 );           
   Timer1.attachInterrupt(ScanDMD);    
   Serial.begin(baudrate);
}

 void loop(){

  
 int y = Serial.available(); 

  for (int i = 0; i < y; i++) 
  {
    int inc = Serial.read(); // LEE EL DATO ENVIADO POR EL COMPUTADOR
    if (inc == 1) // SI RECIBE EL NUMERO 1
    {
      curChannel = 0; //RESETEA EL CANAL ACTUAL A 0
      continue; 
      }
    if (curChannel < numChannels) // SI EL NUMERO DE CANAL ACTUAL ES MENOR AL NUMERO TOTAL DE CANALES
    {
      inc = !!inc; //convierte 255 a 1
      writeLevel(curChannel,inc);
      curChannel++; 
    }
  } 
 }

El software WINLPT es de libre descarga, fue diseñado para trabajar directamente con el puerto paralelo; pero debido a que este puerto va desapareciendo de las computadoras modernas, se ha modificado en la version 2.0.9 para que trabaje con puerto serial o usb emulando la comunicación serie.

CONSTRUYA UN ANALIZADOR DE ESPECTRO CON ARDUINO Y WINAMP

Este articulo explica como hacer un analizador de espectro utilizando el reproductor de música WINAMP y el Plugin "gen_crownsoft_lcd...