domingo, 16 de octubre de 2011

Simple comunicación serial con C# y Arduino

A continuación se presenta la creación de una consola para enviarle una variable a un Arduino por puerto USB-Serial:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            char var;
            while (true)
            {
                var = Convert.ToChar(Console.Read());
                Send_Serial(var);
            }
        }

        public static void Send_Serial(char var)
        {
            SerialPort puerto = new SerialPort("COM5", 9600);
            if (!puerto.IsOpen)
            {
                puerto.Open();
                puerto.Write(var.ToString());
                puerto.Close();
            }
        }
    }
}

A continuación el código fuente para el Arduino:

void setup()
{
 Serial.begin(9600);
  pinMode(13,OUTPUT);
}

void loop()
{
  if(Serial.available())
 {
    switch(Serial.read())
    {
      case 'a':
        digitalWrite(13,HIGH);        
        break;
      
      case 'b':
        digitalWrite(13,LOW);      
        break;
    }
 } 
}

En la siguiente imagen vemos el resultado de compilar el programa en C#:


Por ultimo presentamos un vídeo del Arduino y la consola trabajando:



Conclusiones:
Con esto se demuestra que no tienes que usar un Hyper-terminal, sino que puedes hacer el tuyo propio para comunicarte tu Arduino y hasta hacer esto para cualquier microcontrolador.

Powered iGus

2 comentarios: