Virtualização

Para este tutorial, vamos realizar a virtualização de uma aplicação blink(), ativada por uma chave virtual. Para isso vamos precisar apenas de uma placa Arduino conectada ao PC.

O Druida Tool’s Sute, permite que seu usuário desenvolva um ambiente virtual, e realize simulações diretamente conectado ao Arduino. Vale ressaltar, que não é possível simular circuitos eletrônicos, mas apenas a lógica de programação. Para aprender como criar um projeto, clique aqui. Você não vai precisa executar o assistente de configuração de hardware, pois não teremos componentes conectados ao Arduino. Caso ele abra pode cancelar, e ir pra o próximo passo.

Índice

  1. O que queremos simular
  2. Criando o abiente virtual
  3. Adicionando variáveis globais
  4. Adicionando componentes virtuais ao código
  5. Desenvolvendo o código a ser simulado
  6. Simulando

1 – O que queremos simular?

Uma chave de controle para a aplicação blink()

Simulação a ser realizada

2 – Criando o ambiente virtual

Vamos utilizar um led, e uma chave na nossa simulação, para ligar/desligar o sistema. Lembrando que são todos, componentes virtuais.

Para iniciar a simulação, vamos criar uma nova interface gráfica no nosso projeto. Para isso, clique no menu iniciar do programa, no canto inferior esquerdo, e selecione ‘Telas de Comando’

Criação de uma interface gráfica

Feito isso, é questionado sobre o nome que você deseja dar para a interface. Vamos chamá-la de ‘Simulação Blink’.

Nomeando a primeira tela

Clicando em ‘OK’, é aberta nossa tela de edição.

Vamos adicionar um led e uma chave, clicando e arrastando-os da Caixa de Componentes para a nossa tela. Para expandir um grupo de componentes você pode clicar no botão ‘+’. Os dois componentes utilizados estão no seguinte caminho:

Componentes a serem adicionados
  • Led: Componentes/Sinalização/Led Verde
  • Comando: Componentes/Comando/Chave

Após clicar sobre o componente, e arrastá-lo para a tela, ele permanecerá nela, conforme imagem abaixo.

Componentes adicionados na tela

Os nomes e os endereços dos componentes, já são definidos automaticamente pelo Druida, para não perdermos tempo com isso. Mas caso seja necessário conferir, ou realizar alguma alteração, você pode clicar com o botão direito do mouse sobre o componente em questão.

Acessar as propriedades do componente

Ou então posicione o mouse sobre o componente e pressione ‘alt+p’.

Propriedades do Led Selecionado

Aqui podemos configurar o endereço no nosso led, e o seu nome. Mas isso não será necessário, então clique em ‘OK’.

3 – Adicionando variáveis globais

Para processos de simulação, vamos precisar de variáveis globais, que realizem a leitura dos componentes virtuais, possibilitando utilizá-los no nosso código. Assim vamos incluir um arquivo “.h”, onde iremos declarar essas variáveis.

Para isso clique no botão “Criar um novo arquivo”, na caixa lista de arquivos.

Criando um novo arquivo para a a aplicação

Selecione o Tipo “Arquivo-Interface (.h)”, defina o nome “VariaveisGlobais” sem acento ou espaço, e descreva o arquivo: “Declaração das variáveis globais do programa”.

Definindo o novo arquivo

O arquivo será criado, e abri-rá automaticamente. Vamos declarar duas variáveis para realizar a leitura/escrita dos componentes virtuais. Segue o código para referência:

bool statusLed = false;
bool statusChave = false;

Feito isso, salve a aplicação, para que ela reconheça a inserção, e as variáveis declaradas dentro do novo arquivo. Isso será útil para que seus valores apareçam nas sugestões de código.

Clique em salvar, para gravar as alterações

Agora abra o arquivo “Main.ino”, e inclua a biblioteca. Repare que elá já aparecerá como sugestão de código, pois o Druida já percebeu o novo arquivo.

inclusão da biblioteca, com as variáveis globais

O arquivo “Main.ino” agora está da seguinte forma:

#include "VariaveisGlobais.h"

void setup()
{	
	// configurações
	inicializaDruida();
}

void loop() 
{
	// loop principal:
	comunicacaoDruida();
}

4 – Adicionando componentes virtuais ao código

Agora podemos acrescentar nossos componentes virtuais ao nosso código para realizar a simulação. Para isso, acesse o editor de interfaces através da barra inferior.

Clicando em Druida SCADA Editor, você retorna para a interface gráfica

Vamos primeiro adicionar o led e depois a chave, pois se tratam de classes diferentes de componentes.

Como o led, é um dispositivo para no qual escrevemos um estado (aceso, apagado), vamos adicioná-lo no modo escrita. Para fazer isso, clique com o botão direito em cima do led, e navegue até a opção “Ir para o código (escrita)”.

Adicionar os componentes ao código fonte

Quando você seleciona apenas um componente, caso ele já exista na programação, você é levado até ao respectivo trecho de código. Caso contrário, é questionado se você deseja adicionar o componente. Clique em ‘Sim’.

Confirmação de alteração no código fonte

O processo de inserção dos componentes no código fonte, é totalmente automatizado. O Druida cria um arquivo “.ino” separado com o nome da sua tela, adiciona seus componentes a ele, e deixa o seu código principal intacto. Isso permite um nível de organização excelente.

Segue abaixo, o código fonte gerado no arquivo “Tela_SimulacaoBlink.ino”

void Led_Verde_Escrita()
{
	bool Led_Verde = valor;
	Druida.setRegBit(0, 0, Led_Verde);
}

O que precisamos alterar, é o valor que é escrito no componente. Perceba que na linha nº 10, é realizada a leitura de uma variável tipo ‘bool’. Precisamos trocar a palavra ‘valor’, pela variável que desejamos escrever. Para exemplificar, veja como ficará o código do led:

void Led_Verde_Escrita()
{
	bool Led_Verde = statusLed;
	Druida.setRegBit(0, 0, Led_Verde);
}

Então eu fiz a leitura da nossa variável global ‘statusLed’, e escrevi o seu valor no nosso led virtual.

Agora vamos repetir esse processo para a nossa chave. Para utilizar esse componente, precisamos ler seu estado (ligada ou desligada), então vamos adicioná-la ao código no modo leitura. Para voltar para a tela de simulação, você pode utilizar o menu iniciar como demonstrado no início do tutorial, ou a barra de navegação inferior.

Realize o procedimento para adicionar o botão, conforme a figura abaixo:

Adicionando a chave no modo leitura

Segue abaixo o código fonte gerado do nosso botão virtual, já com a leitura para a variável global ‘statusChave’:

void Chave_Leitura()
{
	bool Chave = Druida.getRegBit(0,1);
	statusChave = Chave;
}

5 – Desenvolvendo o código a ser simulado

Agora vamos voltar para o arquivo “Main.ino”, e desenvolver nosso código blink(). No caso vamos abandonar o uso do delay(), e começaremos a utilizar temporizadores. O delay(), não permite que você conte tempo e leia a chave ao mesmo tempo, além de travar a execução do código, e atrapalhar a comunicação entre o Druida e o Arduino.

Para criar um temporizador, você pode utilizar a própria interface do Druida indo na guia “Componentes” e selecionando “Timer”.

Adicionando temporizador.

Por fim, defina o seu nome, e o tempo do seu acionamento.

Nome, descrição, e parâmetro do Temporizador

Feito isso serão adicionadas as linhas de código, que você também pode adicionar manualmente caso preferir.

#include "Timer.h"
#include "VariaveisGlobais.h"

//Temporizadores
Timer TempoPiscaLed(500);

Agora vamos criar nosso ‘void blink()’. Nessa rotina, iremos verificar se o temporizador se esgotou, e em caso afirmativo vamos inverter o estado do led com o operando “!”, e resetar o temporizador, para que ele reinicie o ciclo do blink(). Segue o código para referência:

void blink()
{
	if(TempoPiscaLed.tempoEsgotado())
	{
		statusLed = !statusLed;
		TempoPiscaLed.reset();
	}
}

Por fim, vamos adicionar o blink() ao loop principal, testando como condição para o seu acionamento a posição da chave.

void loop() 
{
	// loop principal:
	comunicacaoDruida();
	if(statusChave)
	{
		blink();
	}
	else
	{
		statusLed = false;
	}
}

O código principal completo, ficará assim:

#include "Timer.h"
#include "VariaveisGlobais.h"

//Temporizadores
Timer TempoPiscaLed(500);	//Intervalo de tempo para inverter o estado do Led

void setup()
{	
	// configurações
	inicializaDruida();
}

void loop() 
{
	// loop principal:
	comunicacaoDruida();
	if(statusChave)
	{
		blink();
	}
	else
	{
		statusLed = false;
	}
}

void blink()
{
	if(TempoPiscaLed.tempoEsgotado())
	{
		statusLed = !statusLed;
		TempoPiscaLed.reset();
	}
}

6 – Simulando

Vamos conectar o arduino, e enviar o código para ele. Certifique-se de selecionar a placa correta, e a porta de comunicação.

Realizar o Upload para a placa, e aguardar o envio.

Agora vamos voltar para a interface gráfica e testar a nossa simulação.

Para testar a aplicação, clique em Conectar/Desconectar

Um sinal sonoro de dispositivo conectado será emitido, e a interface já deve estar funcionando.

Abaixo, segue a demonstração da simulação funcionando:

Simulação em funcionamento

No próximo tutorial, iremos aprender como realizar operações de monitoramento, utilizando o software Druida.

Qualquer sugestão ou dúvida que não tenha sido esclarecida, deixe nos comentários.

2 comentários em “Virtualização

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: