Desenvolvendo um software em C# para piscar um LED (Arduino Uno)

Eletrônica Arduino 16 de Novembro de 2019 às 15:49

É interessante fazer um LED ou uma lâmpada piscar utilizando um Arduino, mas para transformar estes projetos em algo mais sofisticado, que tal implementar uma comunicação serial entre o Arduino e o computador utilizando um software que você irá desenvolver?

Ficou interessado? Aprenda com este tutorial como realizar esta comunicação serial com um software desenvolvido com a linguagem de programação C#.

A comunicação serial que o Arduino realiza é chamada de UART (Universal Asynchronous Receiver / Transmitter) ou USART (Universal Synchronous Asynchronous Receiver / Transmitter) conhecidas por fornecerem sinais de TX (transmissão) e RX (recepção) com uma comunicação simples e full duplex. Nas versões originais ou réplicas do Arduino Uno, o chip que realiza a ponte entre a comunicação serial e a porta USB do seu computador é o Atmega16U2, um chip SMD bem pequeno ao lado do cristal, para mais informações consulte seu datasheet.

Materiais

Para você montar este projeto será necessário possuir um Arduino Uno ou um Arduino Standalone.

É recomendável a leitura do artigo publicado no Tec Dicas de como ligar uma lâmpada no Arduino Uno para realizar este tutorial com sucesso.

Programando o Arduino

Para controlar os estados de ligado e desligado de uma lâmpada é necessário programar e enviar ao Arduino um firmware para realizar estes comandos. O código abaixo realiza uma comunicação serial entre o computador e o Arduino utilizando a função "Serial", onde é executado o comando por meio de um caractere transmitido via software. Para mais informações sobre a função Serial do Arduino consulte a documentação oficial.

Primeiramente siga estes passos para configurar a IDE do Arduino.

  • Conecte seu Arduino Uno no computador.
  • Abra a IDE oficial do Arduino, versão utilizada 1.8.3.
  • Na aba <Ferramentas - Placa:"Arduino/Genuino Uno" - Porta (Sua Porta)">

Cole este código em seu Sketch, compile e envie para seu Arduino.

/**
 * Firmware para controlar uma lâmpada
 * com um módulo de relé via comunicação serial
 * 
 * tecdicas
 * 13/11/2017
 */
 
void Lampada()
{
  if(digitalRead(10) == HIGH)
  {
    digitalWrite(10, LOW);
  }
  else
  {
    digitalWrite(10, HIGH);
  }
}

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

void loop()
{
  if(Serial.available()) // Se a comunicação Serial estive disponível..
  {
    char op = Serial.read(); // Leia a op (Opção) da Serial.
    
    if (op == '1')
    {
      Lampada();
    }
  }
}

Enviando dados pela serial via software

Para enviar os dados por uma comunicação serial foi desenvolvido um simples software utilizando a linguagem de programação C# e a IDE oficial da Microsoft, o Visual Studio 2017 Community. Para este tutorial é recomendado que você possua um conhecimento sobre a linguagem e a IDE para saber o que está sendo desenvolvido.

Inicie seu Visual Studio e crie um novo projeto em C# para aplicativos Windows Forms, coloque o nome de "ControlarLampadaArduino", selecione um diretório para salvar o projeto e pressione OK conforme mostram as imagens abaixo.

Faça uma tela simples com apenas 1 botão e coloque as seguintes propriedades:

  • No Form coloque o Name de FrmPrincipal e o Text de Controle de Lâmpada
  • No botão coloque o Name de btnLigaDesliga e o Text de Liga / Desliga.

As cores dos botões são modificadas com a propriedade BackColor e a fonte em Font, use a sua criatividade!

Software: Controle de Lâmpada - tecdicas

Para acessar o código do Form1.cs pressione F7 ou para voltar ao modo design pressione Shift+F7 e digite o seguinte código abaixo.

using System;
using System.IO.Ports; // Esta biblioteca é essencial para a comunicação serial
using System.Windows.Forms;

/// <summary>
/// Pequeno software desenvolvido para enviar dados via
/// comunicação serial para controlar uma lâmpada via Arduino Uno
/// 
/// Desenvolvido por tecdicas
/// 13/11/2017
/// </summary>
/// 
namespace ControlarLampadaArduino
{
    public partial class FrmPrincipal : Form
    {
        SerialPort s;

        public FrmPrincipal()
        {
            InitializeComponent();
            s = new SerialPort();
            s.PortName = "COM3"; // Mude conforme a porta serial do seu Arduino
            s.BaudRate = 9600;
        }

        private void ControlarLampada(string op)
        {
            if(!s.IsOpen) // Se a porta serial não estiver disponível
            {
                try
                {
                    s.Open(); // Abre
                    s.Write(op); // Escreve na porta
                    s.Close(); // Fecha
                }
                catch
                {
                    MessageBox.Show("Conecte seu Arduino na porta USB.", "Atenção", 
                        MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
        }

        // Evento click do botão
        private void btnLigaDesliga_Click(object sender, EventArgs e)
        {
            ControlarLampada("1"); // Opção 1 do Arduino
        }
    }
}

Compile o código para verificar se não contém nenhum erro na programação, depois conecte seu Arduino Uno na porta USB, ligue a lâmpada na tomada e veja o resultado!

Controlando uma lâmpada por software e Arduino Uno.