Controlando um LED no Arduino usando C# e Visual Studio

Controlando um LED no Arduino usando C# e Visual Studio

Por Fábio dos Reis

Neste projeto vamos mostrar como é possível controlar um Arduino usando um aplicativo com interface gráfica a partir de um PC. Mais especificamente, vamos usar o Microsoft Visual Studio para criar uma aplicação gráfica em C# que permita acender ou apagar um LED conectado a um pino digital no Arduino, clicando em botões.

A aplicação é dividida em duas partes:

  • Código de controle do LED em si, programado no Arduino, usando sua linguagem padrão;
  • Código do aplicativo gráfico, em C#, que irá se comunicar com o Arduino para enviar comandos especificados.

Portanto, teremos de escrever dois códigos distintos: um no Visual Studio e outro no IDE do Arduino, e eles irão interagir entre si por meio de comando enviados pela porta serial (USB no caso) do seu computador.

O aplicativo gráfico se parecerá com a imagem abaixo:

Acionando LED no Arduino com C# e Microsoft Visual Studio

Note que se trata de uma aplicação bem simples, contendo apenas um formulário e dois botões de controle, um para acender o LED e outro para apagá-lo. Um dos botões receberá o nome de btnLigaLED e o outro, btnDesligaLED

Para realizar a comunicação entre a aplicação gráfica e o Arduino iremos utilizar a classe SerialPort no Visual Studio, a qual estudaremos a seguir.

A Classe SerialPort

A classe SerialPort, pertencente ao namespace System.IO.ports, permite representar um recurso de porta serial em uma aplicação do .Net Framework.

Ela possui uma série de propriedades e métodos, que podem ser consultados na página correspondente no MSDN da Microsoft, mas para nossa aplicação necessitaremos apenas dos itens a seguir:

  • Propriedade PortName – Retorna ou ajusta a porta que será utilizada para efetuar a comunicação, incluindo todas as portas COM disponíveis
  • Propriedade BaudRate – Obtém ou ajusta a taxa de transmissão serial, em Bauds
  • Propriedade IsOpen – Retorna um valor indicando o status do objeto SerialPort, que pode estar aberto (true) ou fechado (false).
  • Método Open() – Abre uma nova conexão de porta serial.
  • Método WriteLine(string) – Escreve a string passada como parâmetro na porta serial.
  • Método Close() – Fecha a conexão à porta, configura a propriedade IsOpen para falso, e elimina o objeto interno Stream.

O componente SerialPort pode ser adicionado à aplicação por meio da Toolbox -> Components.

Descobrindo a porta serial a utilizar

Para descobrir a porta serial que será utilizada na aplicação, acesse Ferramentas -> Porta na IDE do Arduino, e verifique qual porta COM está selecionada.

Porta Serial do Arduino para conexão ao Visual Studio - C#

No meu exemplo, a porta a ser utilizada é a porta COM4.

Código no Arduino

A seguir temos o código que será digitado na IDE do Arduino. Neste código inicializamos a porta serial, ajustamos o pino a ser usado pelo LED (pino 13), e na função de loop, verificamos se existem dados disponíveis na porta serial (ou seja, se um comando / caractere foi enviado a ela), e em caso afirmativo, fazemos a leitura do caractere, armazenando seu valor na variável estado.

Se o valor presente na variável estado por igual a 1, o LED será aceso. Caso seja igual a zero, o LED será apagado.

char estado = '0';
const int LED = 13;
void setup() {
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);
}
void loop(){
  if (Serial.available() > 0) { 
     estado = Serial.read();
  }
  if (estado == '1'){ 
     digitalWrite(LED, HIGH);
  }
  if (estado == '0'){ 
     digitalWrite(LED, LOW);
  }
}

Códigos no Visual Studio:

Primeiramente, devemos importar o namespace System.IO.Ports:

using System.IO.Ports

No código do Form1, configuramos o nome da porta serial a utilizar, assim como sua taxa de transferência de dados (Baud Rate):

public Form1()
 {
 InitializeComponent();
 serialPort1.PortName = "COM4";
 serialPort1.BaudRate = 9600;
 // Configurando cor de fundo dos botões
 btnLigaLED.BackColor = Color.White;
 btnDesligaLED.BackColor = Color.White;
 }
 

Na linha serialPort1.PortName devemos atribuir o nome da porta serial que o Arduino está utilizando, a qual descobrimos anteriormente consultando o menu Ferramentas da IDE do Arduino. Em meu caso, é a porta COM4, que deve ser fornecida entre aspas na instrução.

A taxa de transferência será a padrão:  9600.

Botão btnLigaLED

A seguir temos o código que deverá ser associado ao evento click do botão que acenderá o LED. Ao clicar no botão, a porta serial é aberta, e um condicional if verifica se ela foi realmente aberta, e em caso afirmativo, será enviado para a porta o valor “1”. Logo após, a porta serial é fechada, e mudamos a cor de fundo dos botões para sinalizar houve pressionamento.

serialPort1.Open();
 if (serialPort1.IsOpen)
 {
 serialPort1.WriteLine("1");
 }
 serialPort1.Close();
 btnLigaLED.BackColor = Color.Aqua;
 btnDesligaLED.BackColor = Color.White;

Botão btnDesligaLED

A seguir temos o código que deverá ser associado ao evento click do botão que apagará o LED. É feita a mesma verificação realizada no botão btnLigaLED, mas agora se a porta estiver aberta, é enviado o dígito 0 à porta serial.

serialPort1.Open();
 if (serialPort1.IsOpen)
 {
 serialPort1.WriteLine("0");
 }
 serialPort1.Close();
 btnDesligaLED.BackColor = Color.Aqua;
 btnLigaLED.BackColor = Color.White;

Esquema eletrônico do circuito

A ilustração abaixo mostra o diagrama esquemático do circuito que será acionado pelo aplicativo:

Piscando LED com Arduino e C#

O resistor R1 deve possuir uma resistência de 220Ω ou mais, para evitar sobrecarga de corrente no LED, e deve estar conectado ao pino 13 do Arduino. O LED pode ser de qualquer cor, genérico.

Após criar o circuito, abra o IDE do Arduino e digite o código apresentado anteriormente. Então, abra o Microsoft Visual Studio em seu PC ou notebook e crie a aplicação de controle.

Para testar, conecte o Arduino a seu PC, e execute a aplicação. Clicando nos botões o LED deve acender e apagar, de acordo com o botão clicado.

É isso aí! No próximo tutorial vamos explorar mais a fundo essa integração entre C# e a plataforma Arduino. Até!

 

Sobre Fábio dos Reis (1325 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

2 Comentários em Controlando um LED no Arduino usando C# e Visual Studio

  1. Fernando Moraes // 17/02/2019 em 10:58 // Responder

    estou tentando usar php e banco de dados para acender um led, gostaria de saber se é possível e como realizar …
    desde já agradeço

  2. wellington // 20/03/2019 em 17:51 // Responder

    Boa tarde,

    Gostaria de trabalhar mais projetos com visual studio com arduino, pode indicar um livro ou até mesmo um curso que aborde.

Escreva um comentário

Seu e-mail não será divulgado


*