Accionamento de LED e Arduino através de Interface Gráfica em Processing

Introdução

Em continuação dos artigos usando o micro-controlador Arduino que tenho vindo a escrever nas edições anteriores, apresento nesta edição um artigo que aborda uma das primeiras experiências que o utilizador pode ter com a plataforma Arduino, que é o simples accionamento de um ou mais LEDs.

O accionamento e controlo dos LEDs é muito simples pelo que neste artigo irei aprofundar um pouco mais e criar uma interface gráfica usando Processing que irá permitir controlar o LED usando um botão clicável pelo rato.

Esquema Eléctrico

Ligar um LED ao Arduino é um dos projectos mais fáceis e indicados para quem está a começar, sendo que é necessário seguir um esquema eléctrico muito simples para colocar o LED em funcionamento.

O esquema eléctrico que elaborei para este projecto foi o seguinte:

LED e Arduino: esquema eléctrico
Figura 1: esquema eléctrico LED

Como podem ver apenas é necessário conectar o polo positivo do LED que geralmente é a perna mais longa ao pino 13 do Arduino enquanto que a perna mais curta do LED deve ser conectado ao GND do Arduino.

Muito simples de implementar mesmo para quem está a dar os primeiros passos.

Conexão entre o Arduino e a Aplicação em Processing

Não basta programar uma pequena aplicação gráfica para que possamos controlar as acções do Arduino, é necessário criar uma ponte entre o Arduino e a aplicação desenvolvida em Processing. Basicamente a aplicação em Processing irá produzir um output que será recebido e interpretado pelo Arduino.

Para sabermos exactamente o output produzido é necessário definir valores de output específicos no Arduino para que possamos controla-los na aplicação em Processing.

O exemplo seguinte mostra como foi definida uma variável estado que irá ser a responsável por controlar o estado do LED, ou seja, ligado ou desligado: 

void loop()
{
  //Verificar se a porta Serial está disponível
  if (Serial.available() > 0)
  {
    // O estado será igual ao valor lido do Output da App em Processing
    estado = Serial.read();
    Serial.print("Estado: ");
    Serial.println(estado);
    //Se o valor recolhido for = 111 o LED está ON
    if (estado == 111)
    {
      digitalWrite(ledPin, HIGH);
    }
    //Se o valor recolhido for = 102 o LED está OFF
    if (estado == 102)
    {
      digitalWrite(ledPin, LOW);
    }
  }
}

Tendo definido a variável estado que vai receber um de dois valores retornados através da aplicação com interface gráfica em Processing, podemos prosseguir e construir todo o código para o Arduino, que é muito simples como podem ver:

//Definir o Pino de Output do Arduino é o Pino 13
int ledPin = 13;
int estado;

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

void loop() {
  if (Serial.available() > 0)
  {
    estado = Serial.read();
    Serial.print("Estado: ");
    Serial.println(estado);
    if (estado == 111)
    {
      digitalWrite(ledPin, HIGH);
    }
    if (estado == 102)
    {
      digitalWrite(ledPin, LOW);
    }
  }
}

Com o código acima indicado temos toda a parte lógica que o Arduino necessita para desempenhar a função pretendida.

Publicado na edição 38 (PDF) da Revista PROGRAMAR.