En esta publicación aprenderemos como conectar nuestra placa Arduino con una aplicación
para computadora creada en Visual Studio de manera directa mediante el puerto serie.
Programación en Arduino
Para este ejemplo empezaremos por algo sencillo, el HOLA MUNDO de la electrónica, encender un led.
En nuestra placa Arduino en el pin 13 tenemos un led conectado a una resistencia así que la aprovecharemos. En el Setup colocamos el pin 13 como Salida ademas de iniciar el puerto serial.
Lo siguiente será hacer el loop en el cual haremos uso de la sentencia Serial.available() esta nos regresa el número de bytes disponibles para lectura en el puerto serie. En caso de que no estemos mandando nada por el puerto serie el valor devuelto es 0 y nosotros leeremos solamente cuando el número de bytes enviados sea mayor que 0.Void Setup() {
pinMode(13, OUTPUT);
Serial.Begin(9600);
}
Con ese código ya estaría funcionando nuestro arduino para usar el monitor serie enviando 1 para encender y 0 para apagar.Void loop() {
if (Serial.available() > 0) {
int lectura = Serial.read(); //Leemos el puerto serie y lo guardamos en lectura
if(lectura == '1') //Si lectura es igual a 1 Encendemos el led
{
digitalWrite(13, HIGH);
}
else if(lectura == '0') //Si lectura es igual a 0 Encendemos el led
{
digitalWrite(13, LOW);
}
}
}
lo siguiente es la aplicación en Visual Studio
Programación en Visual Studio
Explicare primero como funciona en consola y luego lo veremos en una aplicación visual con Windows Form. Tanto en consola como en Form usaremos la herramienta SerialPort.
Consola
Empezaremos agregando el Using para usar los puertos.
Ahora en el Main instanciamos el SerialPortUsing System.IO.Ports;
De esta manera creamos el puerto serial estableciendo el nombre del puerto como COM3 a 9600 baudiosSerialPort serial1 = new SerialPort("COM3", 9600);
Abrimos el puerto y ya estaremos listos para realizar la comunicación
Mandaremos un mensaje con los valores que podemos ingresarserial1.Open();
Comenzamos a leer la consola y enviar datos.Console.WriteLine("Presione 1 para encender, 0 para apagar o X para salir" );
Crearemos un string llamado valor que nos servirá como contenedor de lo que escribimos en consola
Entramos a un ciclo While hasta que valor sea igual a x. leemos la consola y entramos al if donde solo entra si valor contiene 1 ó 0, de ser así mandaremos el valor por el puerto serial. Al salir cerramos el puerto seriestring valor = "";
while(valor != "x" )
{
valor = Console.ReadLine()
if(valor == "1" ||valor == "0" )
valor = serial1.Write(valor);
}
Windows Formserial1.Close();
Iniciemos una nueva aplicación de Windows Forms y lo primero que haremos sera agregar la herramienta SerialPort desde el Cuadro de herramientas, luego iremos al constructor del Form1 de nuestra aplicación y establecer lo siguiente:
Con esto ya queda establecido el puerto serie con el nombre "COM3" a 9600 baudiosPublic Form1()
{
InitializeComponent();
serialPort1.PortName = "COM3";
serialPort1.BaudRate = 9600;
serialPort1.Open();
}
Agregamos dos botones a uno lo llamamos Encender y al otro Apagar, si queremos podemos agregar un Label para que nos de información del estado del led.
Botón Encender
En el evento click del botón Encender enviamos "1" por el puerto y escribimos el estado en el label1
Botón ApagarPrivate void btn_Encender_Click(object sender, EventArgs e)
{
serialPort1.Write("1" );
label1.Text = "Led Encendido";
}
En el evento click del botón Apagar enviamos "0" por el puerto y escribimos el estado en el label1
Para no tener problemas de dejar el puerto abierto al cerrar la aplicación en el evento FormClosing cerraremos el puerto.private void btn_Apagar_Click(object sender, EventArgs e)
{
serialPort1.write("0" );
label1.Text = "Led Apagado";
}
Ahora a probar!private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen)
serialPort1.Close();
}