Saltar al contenido

Control de Puertos desde Excel


digitalboy

Recommended Posts

Hola a todos!

Resulta que este cuatrimestre estoy llevando la materia de Robotica en la escuela y pues el profe nos pidio una practica de hacer prender un led atravez de los puertos, ya sea el DB25 o el DB9. Yo opte por el RS232 (DB) ya que compre previamente un conversor de USB/Paralelo y no sirvio, ya que no lo detecta como puerto LPT1 asi que tuve que comprar un conversor USB/RS232 (DB9) el cual se instala como un puerto COM...

Despues el materia restante... Un led y una resistencia de 220 ohms... Y por ultimo definir el lenguaje donde iba a programar y por supuesto que opte por VBA/Excel!

USB-RS232-01.gif

Ahora se preguntaran como mandar la instruccion o señal para prender y apagar el LED, bueno, basicamente hay tres formas, pero solo he utilizado dos:

1.-Usar la API de Windows (no tengo informacion detallada al respecto)

2.-Usar el control NetComm el cual hay que descargar e instalar y viene a suplir al Comm de VB 6.0

3.-Hacer uso Archivos.

Bien, aqui les dejo el link de donde empece con mi investigacion, espero les sea de grn utilidad a todos aquellos interedos en la electronica y control desde el PC...

Tecnología, Sistemas y Circuitos: Controlar Máquinas y Aparatos con La PC

Mas adelante les explico el tercer metodo, el cual no se necesita ningun control adicional, pero que tiene por contra ser muy limitado al respecto.

USB-RS232-01.gif

Enlace a comentario
Compartir con otras webs

  • 3 weeks later...

Bueno, lo prometido es deuda!

Ya elabore un pequeño tutorial con imagenes y videos (disculpen la mala calidad, pero no cuento con una buena camara) que explican todo detalladamente para encender un led de la forma mas facil posible.

Explico el uso de archivos para encender el led, realmente es sencillo.

Expero que despierte interes.

Aqui les dejo el link:

Encendiendo un Led desde Excel | MeXcel Plus

Tal vez despues suba mas de mis practicas y experimentos!

Bye!

Enlace a comentario
Compartir con otras webs

Por favor, comparte más de tus prácticas y experimentos. Aunque no tengo idea de electrónica, es algo que me llama la atención y me gustan los experimentos. Estaré pendiente de nuevos aportes.

Ten por seguro que estare publicando mas sobre el control de puertos! Solo pido algo de paciencia, ya que realmente entre el trabajo y la escuela no me doy abasto; y si a esto sumamos mi mala organizacion peor tantito...

Hace años yo hubiese estado agradecido de haber encontrado un tutorial basico o sencillo de estos temas, ahora tengo la oportunidad de hacerlos amenos y sencillo para otras personas y si esta en mis manos poder hacerlo, asi lo hare!

Te comento mjrofra:

Mas adelante pienso subir mi proyecto final de la materia de Robotica, el cual consistira en sensar la temperatura del medio ambiente, graficarla en Excel y cuando la temperatura Exceda los 30° entonces encender un ventilador para refrescar el ambiente.

Saludos!

Enlace a comentario
Compartir con otras webs

  • 2 weeks later...

Podriaas indicarme por favor que codigo pones en la ventana inmediato, es que en el video se ve muy borroso y otra pregunta mas que diferencia existe entre ejecutar la macro desde el boton ejecutar a poner el codigo en la ventana inmediato.

Gracias y saludos estoy seguro que esto me servira de mucho.

Enlace a comentario
Compartir con otras webs

Podriaas indicarme por favor que codigo pones en la ventana inmediato, es que en el video se ve muy borroso y otra pregunta mas que diferencia existe entre ejecutar la macro desde el boton ejecutar a poner el codigo en la ventana inmediato.

Bien, veamos...

el codigo que pongo en la ventana de inmediato es el siguiente:

Open “COM5″ For Input As #1

para encender el led y:

close

para apagarlo.

No hay mucha diferencia entre los dos metodos. La ventana inmediato lo hace de manera inmediata al poner la intrucccion, ademas de que sirve para depurar codigo (este no es el caso). Simplemente quise mostrar que con una sola intruccion podia encender el led (me ahorre el sub y en sub).

Saludos

Enlace a comentario
Compartir con otras webs

Hola! Ya estoy de regreso... esta vez para compartir con ustedes mi proyecto final de robotica!

Bueno, mi pryecto final consistia en sensar la temperatura, graficarla en Excel y una vez excedido cierto rango se activaria un ventilador para refrescar el ambiente.

Francamente considero esta aplicacion como un sistema SCADA (SCADA - Wikipedia, la enciclopedia libre) y algo menos relacionado con la robotica, bueno esa es mi vision.

Antes de empezar a exponer mi proyecto tengo que aclarar que utilice para el envio/recepcion de datos el protocolo rs232, pero no utilice el conversor usb/rs232 que previamente utilice para el encendido de un LED, ino que utilioce una placa Arduino.

¿Y que es Arduino?

Esta placa me costo alrededor de $450 pesos (poco menos de 45 dolares) y realmente simplifica la creacion de prototipos y proyectos y trabaja con muchos componentes (sensores, motores,etc...) y multiplataforma (Windows, linux, mac) y es reprogramable y puede interactuar con diversor lenguajes de programacion.

Por el momento es todo, en una semana o dos, espero estar actualizando mi blog con el tutorial detallado de componentes y programacion necesaria para efectuar la aplicacion.

Creanme que arduino es una manera facil y creativa de acercarse al mundo de la electronica sin necesidad de tener grandes conocimeintos de la misma.

Saludos!

Enlace a comentario
Compartir con otras webs

  • 3 weeks later...
como puedo hascer ese programa ya que poseo excel 2007 y no se como descargar el vba/excel?...si me pudieras dar una manito te lo agradeseria de antemano gracias:)

Saludos!

Veo que estas algo confundido con lo de VBA/Excel... Veras VBA (Visual Basic para Aplicaciones) es un subconjunto de Visual Basic el cual se encuentra embebido (incrustado) dentro de cada una de las aplicaciones que componen al office (apartir de la version 97). Es decir Excel, Word, etc... cuentan con su propio Entorno VBA para poder programar macros que ejecuten tares.

Para acceder a dicho entorno, por ejemplo en Excel, debes de abrir excel y presionar Alt+F11 y se abrira el Entorno de VBA/Excel.

Te recomiendo que busques algunos tutoriales basicos sobre macros o VBA para Excel, obvio tan bien puedes encontrar para los demas componentes del office.

Y en cuanto a mi proyecto, les pido sean pacientes, espero en estos dias de vacaciones subir algunos videos a You tube y poner un sencillo tutorial o ejemplo utilizando Arduino y VBA/Excel!

Enlace a comentario
Compartir con otras webs

Yo estoy acá esperando pacientemente.

Estoy que estreno mi Arduino :D.

Hola mjrofra!

Perdona la tardanza! Empezare por decir que mi proyecto fue un exito, el maestro nos excento a mi equipo y a mi. Fuimos los unicos que presentamos un proyecto capaz de obtener datos del medio y en base a los mismos graficarlos y activar un dispositivo.

Empezare por decir que realmente mis conocimientos en electronica son limitados, no soy un experto, solo un aficionado con algo de creatividad.

Bueno empezare por dar los siguientes dos links, los cuales tome como referencia para mi proyecto final:

Tinkering with Electronics...: Uniendo Excel con Arduino

My Projects: Arduino LM35 Sensor

El primero de ellos da las bases para la comunicacion de arduino con VBA/Excel, mientras que el segundo da las bases para interactuar con el sensor de temperatura. Lo unico que hice fue fusionar las dos ideas para realizar mi proyecto.

Con esto ya se tienen las bases para empezar hacer pruebas y jugar un rato con los componentes y las posibilidades que nos brinda arduino. Y en mi opinion personal arduino nos abre las puertas al mundo de la programacion y electronica digital, pero ojo, no esta de mas aprender los fundamentos de la electronica analogica.

Espero pronto subir material a mi blog, de echo quiero subir tutoriales propios de arduino y de VBA/Excel, pero realmente el trabajo me absorbe.

Saludos!

Enlace a comentario
Compartir con otras webs

Crear una cuenta o conéctate para comentar

Necesitas ser usuario para poder dejar un comentario

Crear una cuenta

Registrarse para una nueva cuenta en nuestra comunidad. ¡Es fácil!

Registrar una nueva cuenta

Conectarse

¿Ya tienes una cuenta? Conéctate aquí.

Conéctate ahora
  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Si  no me he liado con los paréntesis: Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.Calculation = xlManual Application.EnableEvents = False If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then Range("E22") = WorksheetFunction.Sum(Range("E4:E21")) Range("E23") = WorksheetFunction.Sum(Range("E4:E19")) Range("E24") = Range("E23") - WorksheetFunction.Sum(Range("I4:I7")) Range("I22") = WorksheetFunction.Sum(Range("I4:I21")) Range("I4") = Range("E23") * 0.1 Range("I5") = Range("EN10") * Range("EN11") Range("I6") = Range("E23") * 0.0127 Range("I7") = Range("E23") * 0.006 Range("I25") = Range("E22") - Range("I22") Range("I12") = Range("E24") * 0.03 Range("C7") = Range("EQ8") - Range("EQ9") + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16") Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19") Range("E7") = Range("E4") / Range("C4") * 7 / 44 * 1.5 * Range("C7") Range("E8") = Range("E4") / Range("C4") * 7 / 44 * 0.3 * Range("C8") Range("E9") = Range("E4") / Range("C4") * 7 / 44 * 1.3 * 1.5 * Range("C9") End If Application.Calculation = xlAutomatic Application.ScreenUpdating = True Application.EnableEvents = True End Sub  
    • Hola de nuevo a ambos, @daren, tu archivo lleva excesivos datos, que creo no son necesarios para la información final que buscas. Te subo otro archivo, simplificado al máximo, que, si lo he entendido bien, con esta fórmula simplificada: =CONTAR.SI('Casos de Prueba'!I:I;"OK")*('Casos de Prueba'!I1="Resultados Ciclo "&COLUMNA(A5)) se calcularía el primer dato, que se encuentra en la columna I. Copiando la fórmula a la derecha las celdas que necesites, se completaría el rango.  Tu fórmula la coloco en D7, y esta nueva en D9, que como ves (si, repito, he interpretado bien lo que buscas), da los mismos resultados. ---------------------------------------------------------------- En cuanto a: Aquí tienes, en el mismo archivo (Hoja 3) lo que devuelve tu fórmula cuando hay un determinado dato en A1 y en B2. No llego a entender qué es lo que quieres exactamente.  Tal vez con una pequeña explicación de lo que esperas obtener, sea suficiente para poner el hilo a la aguja. ? ----------------------------------------------------------------- En el caso de que falte por añadir o evaluar alguna otra variable o parámetro (en tu primer post hablabas sólo de 'OK' y ahora veo que en el archivo figuran además 'KO' y 'BLOCK'), por favor, intenta emular el ejemplo del archivo que estoy subiendo; añade EXCLUSIVAMENTE esos datos en la hoja allá donde proceda, explicando dónde o cómo deben contarse o sumarse. Mejor trabajar siempre con datos anónimos y reducidos. Desconozco si en tu archivo alguno de esos datos puede considerarse confidencial, pero seguro que no interesan a nadie. Mucho mejor obviarlos. Saludos, Plantilla V3 (B).xlsx
    • buenas noches, quisiera saber si puedo mejorar mi macros que se encuentra en el evento change de la hoja de calculo de Excel, son códigos de cálculos básicos, además si me pudieran ayudar a reducir el código o darme algún tip para reducirlo yo mismo estaría muy agradecido.  de ante mano muchas gracias     Private Sub Worksheet_Change(ByVal Target As Range)     Application.ScreenUpdating = False     Application.Calculation = xlManual     Application.EnableEvents = False              If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then             Sub todo()          Range("E22") = WorksheetFunction.Sum(Range("E4:E21"))     Range("E23") = WorksheetFunction.Sum(Range("E4:E19"))     Range("E24") = WorksheetFunction.Sum(Range("E23") - WorksheetFunction.Sum(Range("I4:I7")))     Range("i22") = WorksheetFunction.Sum(Range("I4:I21"))     Range("I4") = Range("E23") * 0.1     Range("I6") = Range("E23") * 0.0127     Range("I5") = Range("EN10") * Range("EN11")     Range("I7") = Range("E23") * 0.006     Range("I25") = Range("E22") - Range("I22")     Range("I12") = Range("E24") * 0.03     Range("C7") = WorksheetFunction.Sum(Range("EQ8") - (Range("EQ9"))) + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16")     'Range("E7") = WorksheetFunction.Sum(Range("C7") * ((Range("E4") * 0.0077777)))     Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19")     'Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 1.3) * 1.5) * Range("C9")     'Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 0.3)) * (Range("C8"))     Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 1.3) * 1.5) * Range("C9")     Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 0.3)) * (Range("C8"))     Range("E7") = WorksheetFunction.Sum((((Range("E4") / Range("C4")) * 7) / 44) * 1.5) * Range("C7")          End Sub              End If                  Application.Calculation = xlAutomatic     Application.ScreenUpdating = True     Application.EnableEvents = True     End Sub
    • Buenas perdonad la espera adjunto el fichero Excel y explico mas detallado lo que me solicitan: Lo que me solicitan es que esos CP de la pestaña Casos de prueba los cuales tienen formulas para que cuando se copien y peguen junto a sus pasos el CP se va autoincrementando a 1,2,3 etc...., pero si copias ese CP bien solo con el primer paso o con todos sus  pasos y lo insertas entre dos CP no continua con la numeración, como se ve en la foto al hacer eso el CP insertado continua con la numeración CP2 y el de abajo pone también CP2 no se incrementa ni ese ni el valor de CU que hay a la derecha que también es incremental. Necesitaría que continuara con esa numeración aun insertándolo entre medio de 2 tanto el CP como el CU de la derecha. También me solicitan que el campo Ciclo 1 de la pestaña Resumen es auto incremental cuando copias y pegas va sumando 1, pero en las formulas referentes a Ok KO Y bloqueo al copiar y pegar se mantiene la misma formula , la idea es que cuando copies y pegues la fila donde están los ciclos se autoincremente Ciclo a 1,2,3,4 etc... y la formula de los campos OK,KO y Bloqueos se incremente también pasando de la columna I a la J  luego a la k etc... y que en Resultados Ciclo el numero de la formula también se incremente Resultados Ciclo 1 , 2 ,3 etc... que cambie la columna a la vez que el numero de Resultados Ciclo. Gracias por adelantado un saludo. Plantilla v3 Pruebas.xlsx  
    • Saludos amigos espero estén bien Estoy intentando hacer un formulario que me convierta unidades de masa sin embargo  en el mejor de los casos solo he podido lograr la conversión de una unidad a la vez en los TextBox 1, 3, 5, 7, 9, 11 y 13 y cuando lo logro el resultado que se copia  en la celda no se corresponde con el obtenido originalmente en el Textbox del Formulario (frmconv)  ejemplo al convertir 1900 Kg a Lb el resultado en el TextBox1 =4188,78298142 sin embargo al guardar el resultado lo que se copia en la Celda  "F11" es  418.878.298.142,00, adicionalmente el resultado de la conversión no se visualiza inmediatamente por lo que debo de hacer click en los TextBox 1, 3, 5, 7, 9, 11 y 13  para ver el resultado. Mucho les sabre agradecer la ayuda que me puedan brindar. PRUEBA.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.