Encendido de un LED desde VBA/Excel

En mis estudios universitarios me tocó cursar la materia de Robótica, la cual fue sumamente interesante ya que tuve investigar como programar los puertos y algo de electrónica…

Para el curso opte por comprar un adaptador USB/RS-232 y un convertidor RS-232 de macho a hembra para facilitar las conexiones.

Me decide por el RS-232 ya que es mas fácil de programar, ademas que anteriormente había comprado un adaptador de USB/Paralelo y mi NetBook no lo detecto como puerto.

En mis investigaciones encontré varias alternativas para poder prender un LED. Es decir utilizar la PC como un control de encendido y apagado, ya que si podemos prender un simple led, también podremos prender y apagar cualquier equipo electrónico (lamparas, licuadoras, etc…). Pero por ahora solo veremos como manipular el encendido y apagado de un LED.

Hay varias maneras para esto:
  • Usar la API de Windows
  • Usar el control NetComm que reemplaza al control Comm brindado por VB
  • Hacer uso del manejo de archivos (la cual es sumamente fácil desde VBA y VB sin usar controles adicionales)
En este post, veremos la opción tres. Esta es la lista de lo que necesitaremos:
  • Resistencia de 150 o 220 Ohms
  • LED de cualquier color, de preferencia rojo
  • Adaptador USB/RS-232
  • Convertidor RS-232 de macho a hembra
  • Excel 2003/2007 (no he probado el 2010)
Después a realizar las conexiones correspondientes para realizar las pruebas de encendido y apagado.


Podemos observar como debe conectarse el LED con la resistencia (conexión serie). La resistencia la usamos para disminuir el voltaje que pasara por el LED para evitar dañarlo ya que el puerto nos suministra poco mas de 5 Volts y el LED solo consume 1.5 Volts.

Se puede utilizar un protoboard o caimanes para conectar estos componentes, en este caso los conecte usando sus propias terminales.

Y por último paso con respecto a la conexión, conectamos la resistencia al pin #4 y la terminal del LED (en este caso el cátodo) al pin #5 (Tierra). Para identificar el cátodo se debe buscar una muesca en el encapsulado del LED (el cual nos identifica el cátodo). El cátodo siempre se conecta al negativo para ser encendido, en cuanto a la resistencia, da igual como se conecte ya que no tiene polaridad.

Antes de iniciar con la programación, debemos averiguar el numero de COM asignado al puerto serie (DB9), para ello damos click derecho a mi PC->Propiedades->Hardware->Administrador de Dispositivos y damos doble click en Puertos (COM y LPT) y nos aparecerá la lista de puertos disponibles en nuestro equipo. En mi caso solo dispongo de un puerto serial al cual se le asigno el COM5.

Ya en Excel nos vamos al editor de VBA y nos posicionamos en la ventana de inmediato y escribimos el código que se ve señalado, la primera instrucción prende el LED y la segunda lo apaga (close). En caso de no tener visible la ventana inmediato, presionar: Ctrl+G para hacerla visible.

Y he ahí la forma de como usar nuestra PC como centro de control de encendido y apagado utilizando VBA/Excel y sin usar controles adicionales como el NetComm/Comm.

Ahora, todo es cuestión de imaginación para las aplicaciones que se puedan realizar en base a esto.

Por último dejo este código que prende y apaga el LED:

Sub Luces()

For i = 1 To 10                                    ‘Prende y apaga el LED 10 veces
Open “COM5” For Input As #1     ‘Abre el puerto: Prende LED
Tempo                                             ‘Pausa
Close                                               ‘Cierra el puerto: Apaga LED
Tempo                                             ‘Pausa
Next i

End Sub

‘Gastar tiempo de procesador para crear una pausa de unos microsegundos. Ajustese de acuerdo
‘a las necesidades.
Private Sub Tempo()
Dim a As Long
Dim b As Long

For a = 1 To 1000000
b = a
Next a
End Sub

Inserten el código en un nuevo modulo y ejecútenlo y diviértanse con los destellos de encendido y apagado. Recuerden cambiar el nombre del COM dependiendo de como este instalado en sus PC’s.

Aquí les dejo el vídeo para que vean el funcionamiento:


Comentarios