Bóson Treinamentos em Ciência e Tecnologia

Controlando um LED no Arduino usando C# e Visual Studio

Piscando um LED no Arduino com C# e Microsoft 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:

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:

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:

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.

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:

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é!

 

Sair da versão mobile