Controlando o brilho de um LED com Arduino e controle HScrollBar em C#

Controlando o brilho de um LED com Arduino e controle HScrollBar em C#

Por Fábio dos Reis

Neste tutorial vamos mostrar como é possível controlar o brilho de um LED conectado a um Arduino, a partir de um programa gráfico escrito em linguagem C# no Microsoft Visual Studio, e executado em um PC.

Faremos uso na aplicação dos componentes SerialPort e HScrollBar, além de alguns Labels para identificação de valores. A aplicação, depois de criada, se parecerá com a figura a seguir:

Controlar brilho de LED com C# e HScrollBar

O controle do brilho do LED no Arduino será realizado com o uso da técnica de PWM, já utilizada em diversos outros projetos aqui no blog.

Como usaremos o pino 13 em nosso exemplo, você pode conectar um LED a ele (usando um resistor para limitar a corrente, sempre!) ou simplesmente visualizar a variação de brilho no LED embutido na placa, que também está conectado a esse mesmo pino, internamente.

Controles

Para criar a aplicação gráfica, vamos precisar dos seguintes controles:

  • Formulário, que deixei com o nome Form1 mesmo.
  • Controle HScollBar, cujo nome é ScrollBar1. Neste controle, ajustamos a propriedade Minimum para o valor 0 e a propriedade Maximum para o valor 255, de modo a não precisar usar a função map() para a justar a faixa de valores no Arduino posteriormente.
  • Labels diversos para exibir os textos na tela, incluindo um label de nome lblValorBrilho, que exibe o valor ajustado na barra deslizante, o qual é enviado para o Arduino.
  • SerialPort, a porta serial que usaremos para a comunicação com o microcontrolador. Seu nome é SerialPort1.

Lista de Materiais

Vamos precisar apenas dos seguintes itens para este projeto:

  • 1 Arduino (Uno, Mega, Leonardo, etc)
  • 1 LED
  • 1 Resistor 220Ω a 1kΩ
  • 1 matriz de contatos
  • 1 PC com Visual Studio instalado.

Visão da Protoboard

A seguir temos o circuito a ser montado, em uma visualização de protoboard:

Controle de brilho de LED no Arduino com C#

Códigos

O código do projeto será dividido em duas partes:

  • Código em C# da interface gráfica, que rodará em um computador comum
  • Código no Arduino, que receberá os comandos e os executará pelo microcontrolador.

Vamos ver primeiramente o código em C# que será criado no Visual Studio.

Código em C#:

using System.IO.Ports;
using System.IO;

namespace Dimmer_Leds_Arduino
{
 public partial class Form1 : Form
 {
 int brilhoLED;
 public Form1()
 {
   InitializeComponent();
   serialPort1.PortName = "COM4";
   serialPort1.BaudRate = 9600;
 }
private void ScrolBar1_Scroll(object sender, ScrollEventArgs e)
 {
   lblValorBrilho.Text = ScrolBar1.Value.ToString();
   brilhoLED = (int)ScrolBar1.Value;
   serialPort1.Open();
   if (serialPort1.IsOpen)
   {
     serialPort1.Write(brilhoLED.ToString() + ".");
   }
   serialPort1.Close();
  }
 }
}

Neste código, ajustamos os parâmetros da porta serial, usando a porta COM4 e um baud rate de 9600. Então, na rotina do controle HScrollBar, fazemos o ajuste do brilho do LED, armazenando na variável brilhoLED o valor lido no controle, que dependerá da posição onde se encontra a barra de scroll. Esse valor lido é escrito na porta serial, após abri-la, sendo então enviado ao Arduino para tratamento.

Não se esqueça de incluir os namespaces System.IO e System.IO.Ports na aplicação, via diretivas using.

Código do Arduino:

int brilho = 0;
const int LED = 13;

void setup() {
 Serial.begin(9600);
 pinMode(LED, OUTPUT);
 analogWrite(LED, 0);
}

void loop(){
 if (Serial.available()) { 
   brilho = Serial.parseInt();
   Serial.read();
 }
 if (brilho >= 0) {
   analogWrite(LED, brilho);
 }
}

Neste código, o Arduino recebe o valor enviado pela aplicação por meio da porta serial, e caso seja um valor maior ou igual a zero, o valor é escrito no pino 13, por meio do uso de PWM. Quanto maior o valor, mais forte o LED brilhará, e vice-versa.

Note o uso da função Serial.parseInt(), necessária para converter o valor recebido, que é uma string, para um número inteiro, que possa ser compreendido pela função analogWrite().

Para testar, basta enviar o código específico para o Arduino, e executar a aplicação criada no Visual Studio. Mova a barra deslizante do controle HScollBar e verifique que o LED aumenta ou diminui de brilho conforme a posição da barra. 

Recomendado: Acendendo e apagando LED com programa gráfico em C# e Arduino

 

Sobre Fábio dos Reis (1182 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 Astronomia, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*