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:
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:
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
Escreva um comentário