Este post es para entender el funcionamiento de la comunicación de Arduino con Visual Basic 6.0 y viceversa. He realizado un pequeño programa que nos permite la comunicación desde Arduino a Visual Basic 6.0 mediante puerto serie y de Visual Basic 6.0 a Arduino.
Para comprobar la comunicación desde Arduino a Visual Basic 6.0 vamos a controlarla mediante un pulsador conectado al pin 12 de nuestro Arduino y para comprobar el envío desde Visual Basic 6.0 a Arduino disponemos de un led conectado al pin 13.
El programa en Visual Basic 6.0 también es bastante sencillo, cuenta con dos botones, dos labels, un control de puerto serie y un temporazidor (Timer), para realizar cada 20 ms, en este caso, una acción automáticamente. Aquí una imagen de la aplicación:
Aquí tenéis el código hecho en Visual Basic 6.0:
Option Explicit Dim dato As String 'Variable para guarda el dato recibido por el puerto serie 'Botón de conectar Private Sub cmdConectar_Click() Serie.PortOpen = True 'Abrimos el puerto serie cmdConectar.Enabled = False 'Deshabilitamos botón de conectar cmdDesconectar.Enabled = True 'Habilitamos botón de conectar Timer1.Enabled = True 'Habilitar temporizador End Sub 'Botón de desconectar Private Sub cmdDesconectar_Click() Serie.PortOpen = False 'Cerramos el puerto serie cmdConectar.Enabled = True 'Habilitamos botón de conectar cmdDesconectar.Enabled = False 'Deshabilitamos botón de desconectar Timer1.Enabled = False 'Deshabilitamos temporizador End Sub 'Función que se realiza automáticamente cada 20 ms Private Sub Timer1_Timer() dato = Left(Serie.Input, 1) 'Cortamos el dato que nos llega por puerto serie 'para solamente tener un único caracter pulsador.Caption = dato 'Asigamos ese dato a nuestra label para mostrar el estado 'del pulsador Serie.Output = pulsador.Caption 'Enviamos al arduino nuestro dato recibido por puerto serie End Sub
El código arduino es bastante básico pero que sirve perfectamente para entender la comunicación serie entre VB y Arduino:
//Programa de comunicación bilateral Arduino-Visual Basic 6.0 //Mediante un pulsador enviamos información a visual y desde visual //dependiendo del estado de ese pulsador mandamos una orden a arduino //para encender un lez o apagarlo. //Programa realizado por Regata int boton=12; //pulsador conectado en pin 12 int led=13; //led conectado en pin 13 void setup() { Serial.begin(9600); //Configuración de puerto serie pinMode(led,OUTPUT); //Indicamos led como salida //NOTA: no hace falta indicar el pulsador como entrada } void loop() { Serial.print(digitalRead(boton),DEC); //Enviamos por puerto serie el //estado del pulsador hacia VB if (Serial.available()) //Comprobamos si hay datos desde VB hacia Arduino { byte dato; //Variable donde guardaremos el dato recibido por puerto serie dato=Serial.read(); //Guardamos el dato recibido switch(dato) { case '0': //Apagamos el led si recibimos '0' por puerto serie digitalWrite(led,LOW); break; case '1': //Encendemos el led si recibimos '1' por puerto serie digitalWrite(led,HIGH); break; } } delay(30); }
Aquí tenéis el esquema de conexión:
Y por último os dejo un video del funcionamiento:
Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.