Linha de Equipamentos MEC Desenvolvido por: Maxwell Bohr Instrumentação Eletrônica Ltda. - Rua Porto Alegre, 212 - Londrina - PR - Brasil http://www.maxwellbohr.com.br
SUMÁRIO 1 Introdução 1 2 A Biblioteca de Controle do MEC1100 para C++ 1 3 Instalação e Configuração do Ambiente de Desenvolvimento C++ 2 3.1 Linux........................................... 4 3.2 Windows......................................... 6 4 Criação de Programas de Controle em C++ 7 4.1 Como Carregas as Bibliotecas de Controle........................ 10 5 Utilizando as Rotinas da Biblioteca de Controle 12 5.1 Rotinas de Suporte.................................... 12 5.1.1 OpenCommunication............................... 12 5.1.2 CloseCommunication............................... 13 5.1.3 GetInstalledSerialPorts.............................. 13 5.2 Entradas Analógicas................................... 14 5.2.1 SensorRead.................................... 15 5.2.2 SensorReadAll.................................. 15 5.3 Entradas e Saídas Digitais................................ 16 5.3.1 DigitalPinRead.................................. 16 5.3.2 DigitalPortRead................................. 17 5.3.3 DigitalPinWrite.................................. 17 5.3.4 DigitalPortWrite................................. 18 5.4 Servomotores....................................... 18 5.4.1 ServoMotorOn.................................. 19 5.4.2 ServoMotorOff.................................. 19 5.5 PWMs........................................... 20 5.5.1 PwmON..................................... 20 5.5.2 PwmOff...................................... 20 ii
1 INTRODUÇÃO O C++ é uma linguagem de programação multiparadigma e de uso geral. A linguagem é considerada de médio nível, pois combina características de linguagens de alto e baixo níveis. Desde osanos 1990 é uma das linguagens comerciais mais populares, sendo bastante usada também na academia por seu grande desempenho e base de utilizadores. Este tutorial tem como objetivo dar base para criar aplicações com o ambiente de desenvolvimento Qt, em C++, voltadas para o MEC1100. Não será ensinada a linguagem neste tutorial, porém será ensinado como manipulá-la utilizando-se o Qt juntamente ao MEC1100. 2 A BIBLIOTECA DE CONTROLE DO MEC1100 PARA C++ Nesta seção, será apresentada a biblioteca de controle para MEC1100. Serão descritas suas principais funções, além de como utilizá-las. Além disso, será dada uma breve explicação sobre o que é esta biblioteca e sobre os parâmetros de cada método. O MEC1100 responde a comandos enviados a partir de uma porta serial ou USB. Para isso, é necessário abrir estabelecer um canal de comunicação entre o computador e o MEC1100 e enviar bytes em um protocolo específico. Fazer isso diretamente pode ser complicado e demorado e criaria uma dificuldade desnecessária. Por isso, foi criada uma biblioteca de controle que cuida de todos os detalhes de comunicação e codificação dos comandos para envio ao MEC1100, facilitando muito a tarefa de programação do equipamento. Com o uso da biblioteca não é necessário saber os detalhes de codificação dos comandos e parâmetros para envio ao MEC1100, pois tudo isso é tratado automaticamente. Para facilitar a compreensão destes métodos que são utilizados para o desenvolvimento de projetos com o MEC1100, através na biblioteca de controle, foi criada uma lista que os exemplifica, por meio de uma breve explicação. Caso se deseje uma descrição mais detalhada dos métodos, verifique o manual de referência da biblioteca de controle Abaixo, a lista simplificada destes métodos com suas respectivas descrições: Método OpenCommunication CloseCommunication GetInstalledSerialPorts IsConnected NOP DeviceStatus DeviceInfo SensorRead SensorReadAll DigitalPortRead DigitalPortWrite DigitalPinRead Descrição Inicializa a comunicação com um MEC1100. Finaliza a comunicação com um MEC1100. Lista as portas seriais físicas e as portas seriais emuladas sobre a porta USB, criadas pelo MEC1100. Verifica se existe algum MEC1100 conectado e ligado no computador. Envia um comando NOP. Não realiza nenhuma operação. Retorna informações sobre o estado interno do equipamento. Retorna informações sobre o dispositivo conectado, como o nome, versão do hardware e versão do firmware. Lê uma entrada analógica. Lê todas as entradas analógicas em uma única operação. Lê o valor da porta de entrada digital. Grava um valor na porta de saída digital. Efetua a leitura de uma entrada digital individual. copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 1 / 21
Método DigitalPinWrite ServoMotorOn ServoMotorOff PwmOn PwmOnTime PwmOnFreq PwmOff Descrição Efetua a gravação de uma saída digital individual. Liga um servomotor Desliga um servomotor. Ativa um PWM utilizando um valor para o período, outro valor para o ciclo ativo e o divisor de clock como parâmetros. Ativa um PWM utilizando o período e tempo de ciclo ativo em milissegundos como parâmetros. Ativa um PWM utilizando uma frequência e uma taxa de porcentagem de ciclo ativo como parâmetros. Desativa um PWM. 3 INSTALAÇÃO E CONFIGURAÇÃO DO AMBIENTE DE DESENVOLVIMENTO C++ Neste tutorial, será ulizado a IDE Qt para a utilização dos métodos do MEC1100. O Qt foi escolhido, para o uso nos tutoriais em C++, pois o mesmo facilita de grande maneira o desenvolvimento de aplicativos nesta linguagem. Ao instalar o Qt, automaticamente, é instalado todos seus recursos, como o Qt Creator (ambiente de desenvolvimento), o Qt Designer (ambiente de criação gráfica) e o Qt em si, o qual estará integrado com os demais. O Qt, atualmente, é uma IDE da Nokia que foi criado com o objetivo de facilitar a criação de aplicativos gráficos, principalmente, em C++. Além disso, possui recursos que facilitam seu uso, como o fato de auto-completar métodos, utilizando-se atalhos do teclado, auto-correção, entre outros recursos. Outro fator interessante é o fato de que, ao se criar um programa utilizando-se o Qt, este poderá ser executado tanto no Windows como no Linux. A seguir, será apresentado onde encontrar e como instalar o Ambiente de Desenvolvimento Qt, tanto no Linux quanto no Windows. Porém, como neste tutorial fora utilizada a distribuição Ubuntu 10.04 do Linux, a instalação em outras versões pode ocorrer de maneira diferenciada. Entretando, a utilização do Qt e de seus métodos será igual para qualquer versão deste sistema. O processo de instalação nos dois sistemas descritos ocorre, incialmente, de igual maneira. Então, para facilitar este processo, serão apresentados os primeiros passos nesta seção e, em seguida, os passos específicos, nas próximas subsessões. Para realizar a instalação do Qt, siga até o link http://qt.nokia.com/- products/, clique em Download the Qt SDK, confome a figura apresentada a seguir: copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 2 / 21
Figura 1: Imagem do site com destaque para a opção de download. Então, irá abrir uma nova janela. Nesta, clique em Go LGPL. Em seguida, escolha o sistema operacional (Linux ou Windows) e sua versão (32bit ou 64bit), clicando em uma das opções que será mostrada na página, conforme mostra a figura a seguir: Figura 2: Tela de seleção do Sistema Operacional. Então, após clicar em uma das opções, espere até que o download seja requerido e salve o arquivo em um local de sua preferência. A partir disto, siga as instruções apresentadas no tópico referente ao SO escolhido, para se dar início a instalação. copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 3 / 21
3.1 LINUX Realizado o download do aplicativo para o sistema operacional Linux, siga os seguintes passos para se dar início a instalação: Na pasta em que foi salvo o arquivo.bin (no caso, o arquivo baixado), clique com o botão direto do mouse e selecione a opção open in terminal/abrir no terminal, conforme mostra a figura abaixo: Figura 3: Imagem da pasta onde fora salvo o arquivo.bin com destaque para a opção "Open in Terminal". Em seguida, digite a seguinte linha de comando na janela que se iniciou, substituindo nome_do_arquivo_salvo pelo nome do arquivo baixado: chmod u+x nome_do_arquivo_salvo.bin Então, aperte a tecla Enter e, em seguida, no mesmo terminal que fora aberto, digite a seguinte linha de comando, realizando a mesma substituição descrita anteriormente:./nome_do_arquivo_salvo.bin A seguir, é apresentada uma imagem do terminal exemplificando com os comandos a serem digitados, utilizando-se o arquivo baixado: Figura 4: Terminal exemplificando os comandos a serem digitados. copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 4 / 21
O primeiro comando foi utilizado para se dar uma permissão para se executar o arquivo. O segundo, por sua vez, foi utilizado para executar o arquivo em si, o qual dará incío a instalação do Qt. Um detalhe importante, antes de se dar continuidade a instação é o fato de que, enquanto a mesma não for concluída, o terminal não pode ser fechado, pois, caso isso ocorra, a instalação é cancelada. Então, após digitar as duas linhas de comando apresentadas acima de maneira correta, será aberta a janela de instalação. Abaixo, a janela inicial de instalação: Figura 5: Tela inicial de instalação. Esta instalação, porém, é de fácil aplicação. Nesta janela aberta, clique na opção Next e, em seguida, selecione a opção I accept the agreement e novamente em Next. Nas próximas etapas, clique em Next novamente e aguarde até que a instalação seja concluída. Após a conclusão, clique em Finish e, então, o Qt será inicializado automaticamente. Abaixo, uma imagem demonstrando a janela do processo de instalação e uma imagem desmontrando a janela após a conclusão da instalação: copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 5 / 21
Figura 6: Instação em andamento no Linux. Figura 7: Janela após a conclusão da instalação. 3.2 WINDOWS A instalação do Qt no Microsoft Windows é realizada como em qualquer outro software convencional neste sistema. Então, após a conclusão do download, siga os seguintes passos para a instalação do aplicativo: Com o download concluído, vá até o diretório do mesmo (local onde o arquivo executável foi salvo) e dê um duplo clique sobre este. Aguarde até que a instalação se inicie. Iniciada a instalação, será aberta uma janela de simples interface. Então, para se dar continuidade a instalação, clique na opção Next e, em seguida, selecione a opção I accept the agreement e novamente em Next. Nas próximas etapas, clique em Next novamente e aguarde até que a instalação seja concluída. copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 6 / 21
Finalizada a instalação, clique no botão Finish e, então, o Qt Creator será iniciado automaticamente. A seguir, uma imagem da janela de instalação no Microsoft Windows: Figura 8: Instalação em andamento no Microsoft Windows. 4 CRIAÇÃO DE PROGRAMAS DE CONTROLE EM C++ A criação de programas no Qt é realizada de igual maneira tanto para Windows quanto para Linux. Neste tutorial, serão implementandas todas as linhas de código no sistema operacional Linux, porém os métodos utilizados são os mesmos em ambos os sistemas. Nesta seção, será mostrado, primeiramente, como se criar um projeto de console utilizando-se o Qt Creator. Além disso, serão mostrados os métodos utilizados para realizar operações com o MEC1100. Como este tutorial tem apenas como objetivo utilizar, de maneira simples, os métodos da biblioteca de controle, não será mostrado nada referente a criação de interfaces gráficas; porém, nos demais tutoriais, será detalhado os processos de criação gráfica e de programas de controle, específicos para o MEC1100. Em seguida, será dado início a criação de um projeto no Qt Creator. Caso o Qt Creator ainda não tenha sido inicializado, dê um duplo clique sobre o ícone criado no Desktop chamado Qt Creator, o qual é apresentado a seguir: Figura 9: Ícone do Qt Creator. Então, após iniciar o aplicativo, a interface do mesmo será a seguinte: copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 7 / 21
Figura 10: Tela inicial do Qt Creator. Agora, será dado início a criação do projeto. Para isso, clique em File/New File or Project, como mostrado na figura a seguir: Figura 11: Opção para se criar um novo Projeto. Em seguida, na janela exibida, clique em Qt Console Application e, então, clique em Choose, conforme a figura seguinte: copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 8 / 21
Figura 12: Imagem da Janela, com destaque nas opções que devem ser selecionadas. Após clicar na opção Choose, será aberta uma nova janela onde se deve definir o nome do projeto e sua localização. Sendo assim, defina o nome do projeto como projetomec e coloque um diretório a sua escolha ou, se preferir, deixe o diretório padrão. Entretanto, guarde o nome deste diretório, pois este será necessário para a continuidade da criação das aplicações. Abaixo, uma imagem exemplificando com preencher os campos (onde está escrito Create in: deve-se colocar o diretório em que se deseja criar o projeto, podendo deixar com o nome padrão sugerido): Figura 13: Definindo nome do projeto. Após preencher os campos, clique em Next e, então, em Next novamente. Nesta última janela, clique em Finish e o projeto será criado. A seguir, a janela após a criação do projeto: copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 9 / 21
Figura 14: Projeto criado. 4.1 COMO CARREGAS AS BIBLIOTECAS DE CONTROLE Para se dar início a implementação, deve-se, primeiramente, copiar os arquivos da biblioteca de controle do MEC1100 para C++, localizados no CD que o acompanha, para a pasta do projeto. Deve-se copiar os arquivos mec1100.cpp e mec1100.h e a pasta chamada serial e inserí-los na pasta do projeto (local onde foi definido no momento da criação do mesmo). Abaixo, uma imagem ilustrando a pasta do projeto após a inserção dos arquivos e pasta: Figura 15: Pasta do projeto após a inserção dos arquivos e pasta. Com os arquivos copiados, deve-se, agora, inserí-los no projeto em si. Para isso, clique com o botão direito do mouse sobre o local onde está escrito projetomec no Qt Creator e selecione a opção Add copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 10 / 21
Existing Files... conforme a figura abaixo: Figura 16: Adicionando a biblioteca ao projeto. Feito isto, selecione os arquivos "mec1100.h"e "mec1100.cpp"e clique no botão Open. Então, repita o mesmo processo anterior clicando novamente na opção de adicionar; porém, na janela aberta, entre na pasta denominada serial, selecione todos os arquivos contidos nesta e clique no botão Open novamente. Após realizar estes passos, a aparência do programa será a seguinte (note que os arquivos inseridos estão todos visíveis no projeto): Figura 17: Projeto após a inserção das bibliotecas. Para finalizar esta etapa e dar início a implementação, há necessidade de se incluir a biblioteca do MEC1100 para a classe principal. Para isto, basta apenas adicionar, no início do código, a seguinte linha de comando: copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 11 / 21
Então, a partir de agora, o projeto está apto a utilizar os comandos disponíveis no MEC1100. 5 UTILIZANDO AS ROTINAS DA BIBLIOTECA DE CONTROLE Serão apresentados, a seguir, alguns métodos utilizados para se manipular o MEC1100. Com isso, será possível se ter uma visão geral do funcionamento deste equipamento e como funcionam os métodos da biblioteca de controle. É importante salientar que as linhas inicializadas com // representam comentários e não são utilizadas pelo código. Ou seja, não há problema alguma em deixá-las no código fonte. 5.1 ROTINAS DE SUPORTE Serão apresentados, nesta seção, os comando básicos de controle do MEC1100, como, por exemplo, abrir e fechar uma conexão com o equipamente e listar as portas seriais/usb instaladas no computador. Também serão mostrados códigos exemplificando esses comandos, para um melhor entendimento dos mesmos. 5.1.1 OPENCOMMUNICATION O método OpenCommunication é utilizado para se abrir a comunicação com o MEC1100. Para se fazer uso deste método, basta chamá-lo dentro do código fonte e, em seu parâmetro, colocar uma String referente a porta em que o MEC1100 está conectado. Quando se conecta um cabo USB ao MEC1100 para se comunicar com o computador, o mesmo faz uma emulação de uma porta serial através da USB. Por isso, em alguns casos, como no Windows, a porta USB conectada é definida como sendo uma porta serial. No caso do Linux, os parâmetros a serem passados variam, dependendo do cabo utilizado, para se realizar a conexão (USB ou serial). No código de exemplo, será utilizado a porta USB0 do Linux pois, neste caso, o MEC1100 está conectado a uma porta USB do sistema. //Incluindo as bibliotecas necessárias para o projeto #include <string> //Definindo que será usado o std, que é utilizado para manipular Strings using namespace std; //Armazenando as portas seriais instaladas em um vetor de String mec.getinstalledserialports(v); //Abrindo comunicação com o MEC1100, utilizando-se a porta USB0 copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 12 / 21
Como a porta em que se conecta o MEC1100 no Linux pode variar, há a necessidade de se trocar o parâmetro passado no método. Ou seja, caso o MEC1100 esteja conectado a outra porta USB, deve-se apenas trocar o número desta porta para outro até se obter a porta correta (no caso, trocar USB0 para USB1 ou USB2 e assim por diante). Porém, caso a porta em que o dispositivo esteja conectado for uma porta serial, o parâmetro a ser passado será algo como: ttys0. Abaixo, um exemplo utilizando-se a porta serial do Linux: //Abrindo comunicação com o MEC1100, utilizando-se a porta S0 mec.opencommunication( /dev/ttys0 ); Caso o usuário estiver utilizando Windows, o nome da porta passaria a ser COM (no caso o parâmetro a ser passado seria algo como COM1, COM2, etc), pois neste sistema a porta USB ou serial é reconhecida como sendo serial. A seguir, um exemplo utilizando-se a porta COM1 do Windows : //Abrindo comunicação com o MEC1100, utilizando-se a porta COM1 mec.opencommunication( COM1 ); 5.1.2 CLOSECOMMUNICATION Para encerrar a comunicação entre o dispositivo e o computador, utiliza-se o método denominado CloseCommunication. Para utilizá-lo, basta chamá-lo dentro do código fonte sem utilização de nenhum parâmetro e, automaticamente, a comunicação será finalizada. //Incluindo as bibliotecas necessárias para o projeto #include <string> //Definindo que será usado o std, que é utilizado para manipular Strings using namespace std; //Abrindo comunicação com o MEC1100, utilizando-se a porta USB0 //Fechando comunicação com o MEC1100 mec.closecommunication(); 5.1.3 GETINSTALLEDSERIALPORTS Para se obter as portas serial/usb instaladas no computador, é utilizado o comando GetInstalledSerial- Ports, o qual está pré-definido na biblioteca de controle, bastando apenas chamá-lo dentro do programa, como será apresentado a seguir. Este comando retorna uma lista com as portas USBs e seriais instaladas no computador em forma de String (texto). Para utilizá-lo, é necessário implementar as seguintes linhas de comando dentro do código fonte: copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 13 / 21
//Incluindo as bibliotecas necessárias para o projeto #include <vector> #include <string> #include <iostream> //Definindo que será usado o std, que é utilizado para manipular Strings using namespace std; vector <string> v; int i; //Armazenando as portas seriais instaladas em um vetor de String mec.getinstalledserialports(v); //Imprimindo as portas seriais instaladas, uma a uma, no console for (i=0; i < v.size() ; i++) std::cout << v[i] << \n ; std::cin.get(); Agora, será necessário executar o programa. Para isso, pressione Ctrl+R ou clique no botão Run localizado na lateral inferior esquerda. Figura 18: Imagem com destaque para o botão Run. Com isso, o programa será executado e será exibido no console uma lista com as portas serial/usb instaladas no computador. 5.2 ENTRADAS ANALÓGICAS Nesta seção, serão apresentados os métodos para se manipular as entradas analógicas. Será apresentada uma breve descrição dos métodos, de forma singular, a fim de que o usuário possa ter uma melhor copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 14 / 21
compreensão dos mesmos. Além disso, haverá algumas linhas de código exemplificando a manipulação dos métodos em questão. 5.2.1 SENSORREAD Para realizar a leitura de sensores ligados a uma entrada analógica, utiliza-se o comando SensorRead, passando como parâmetro neste método o número do sensor que se deseja ler. A seguir, um exemplo de código realizando a leitura do primeiro sensor do MEC1100: //Incluindo as bibliotecas necessárias para o projeto #include <string> //Definindo que será usado o std, que é utilizado para manipular Strings using namespace std; int leitura; //Abrindo comunicação com o MEC1100, utilizando-se a porta USB 0 //Criando a variável leitura e armazenando nesta o valor da leitura do //sensor 1 leitura = mec.sensorread(1); //Imprimindo no console o valor da leitura realizada anteriormente std::cout << leitura; std::cin.get() //Fechando comunicação com o MEC1100 mec.closecommunication(); Pode-se trocar esse valor 1 para um valor de 1 a 8, pois existem 8 entradas analógicas no MEC1100. Após a execução do programa, será exibido no console o valor da leiutura do sensor, que varia de 0 a 1023. 5.2.2 SENSORREADALL Muitas vezes existe a necessidade de se realizar a leitura de todas as entradas analógicas. Para isso, existe um método, na biblioteca de controle, um método chamado SensorReadAll, o qual retorna o valor da leitura destas entradas. A seguir, a implementação deste método: //Incluindo as bibliotecas necessárias para o projeto #include <string> //Definindo que será usado o std, que é utilizado para manipular Strings using namespace std; copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 15 / 21
// Declaração das Variáveis e seus tipos vector <short> leitura; //Abrindo comunicação com o MEC1100, utilizando-se a porta USB 0 //Armazenando a leitura de todos os sensores em um vetor short mec.sensorreadall(leitura); //Imprimindo no console o valor da leitura de todas as entradas //analógicas for (int i = 0; i < leitura.size(); i++) std::cout << leitura[i] << \n ; std::cin.get() //Fechando comunicação com o MEC1100 mec.closecommunication(); 5.3 ENTRADAS E SAÍDAS DIGITAIS Nesta seção, serão apresentados alguns exemplos de código referentes a manipulação tanto das entradas digitais quanto das saídas digitais. Também será dada uma breve explicação sobre os métodos utilizados para a manipulação destas. O MEC1100 possui 8 pinos (entradas/conexões) tanto na porta de Saídas Digitais como na porta de Entradas Digitais (entende-se como porta o conjunto de conexões similares agrupadas em um determinado local), ou seja, é possível tratar cada um destes pinos de maneira individual ou tratá-los como um todo. Isso, porém, será visto nos próximos tópicos. Para maiores informações sobre portas digitais e como elas funcionam, recomenda-se a leitura do manual de referências da biblioteca de controle e/ou o manual do MEC1100. 5.3.1 DIGITALPINREAD Através de um dos dos métodos da biblioteca é possível ler, de forma singular, cada um dos pinos da porta de Entradas Digitais. Para isso, utiliza-se o método denominado DigitalPinRead. Este método retornará o valor da leitura do pino escolhido, que será dada por 0 ou 1, ou seja, caso a entrada esteja em alta (com algo conectado a ela) o valor será 1, senão este será 0. No exemplo, está sendo realizada a leitura da entrada de número 1. //Incluindo as bibliotecas necessárias para o projeto #include <string> // Definindo que será usado o std, que é utilizado para manipular Strings using namespace std; //Abrindo comunicação com o MEC1100, utilizando-se a porta USB 0 copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 16 / 21
//Realizando a leitura da entrada digital 1 e imprimindo seu valor //no console std::cout << mec.digitalpinread(1); std::cin.get(); //Fechando comunicação com o MEC1100 mec.closecommunication(); 5.3.2 DIGITALPORTREAD Para ler todas as entradas digitais, ou seja, a porta como um todo, utiliza-se o método DigitalPortRead. Este método recebe como parâmetro apenas a porta (1 ou 2) que se deseja ler e retorna o valor dessa leitura. //Incluindo as bibliotecas necessárias para o projeto #include <string> // Definindo que será usado o std, que é utilizado para manipular Strings using namespace std; int leitura; //Abrindo comunicação com o MEC1100, utilizando-se a porta USB 0 //Armazenando a leitura da porta de Entradas Digitais 1 na variável //leitura leitura = mec.digitalportread(1); //Imprimindo no console o valor da leitura da porta std::cout << leitura[i]; std::cin.get() // Fechando comunicação com o MEC1100 mec.closecommunication(); 5.3.3 DIGITALPINWRITE Para se ligar apenas uma saída digital, utiliza-se o método DigitalPinWrite. Esse método recebe como parâmetros, respectivamente, o número da porta de Saídas Digitais e o valor correspondente a saída que se deseja ligar. No exemplo abaixo, foi enviado um parâmetro que ligará a saída 1 da porta 1. // Incluindo as bibliotecas necessárias para o projeto copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 17 / 21
//Abrindo comunicação com o MEC1100, utilizando-se a porta USB 0 //Escrevendo no pino 1 da porta 1 mec.digitalpinwrite(1, 1); //Fechando comunicação com o MEC1100 mec.closecommunication(); 5.3.4 DIGITALPORTWRITE Para se escrever em todas as saídas digitais, utiliza-se o comando DigitalPortWrite, conforme o código a seguir, passando em seu parâmetro o valor que se deseja escrever. Neste exemplo, foi enviado o valor 3, que ativa os 2 primeiros canais das saídas digitais. // Incluindo as bibliotecas necessárias para o projeto //Abrindo comunicação com o MEC1100, utilizando-se a porta USB 0 //Escrevendo o valor 3 na porta de Saídas Digitais 1 mec.digitalportwrite(1, 3); //Fechando comunicação com o MEC1100 mec.closecommunication(); Caso se deseje apagar/desligar as saídas digitais, deve-se apenas trocar o parâmetro que representa o valor para 0. Quando se passa o valor 0 nas saídas digitais, a mesma irá zerar qualquer valor que estava anteriormente escrito e fará com que esta entre no estado de desligada (nível lógico 0). No caso, haveria apenas a necessidade de se alterar o método para o seguinte: // Escrevendo o valor 0 em todas as saídas digitais mec.digitalportwrite(1, 0); 5.4 SERVOMOTORES Nesta seção, seráo apresentandos os métodos utilizados pela biblioteca de controle para manipular servomotores utilizando-se o MEC1100. A conexão destes dispositivos é feita utilizando-se a porta Servomotores/PWM. Além disso, será mostrado, de forma exemplificada, linhas de código referentes a estes métodos. copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 18 / 21
5.4.1 SERVOMOTORON Para se ligar um servomotor conectado ao MEC1100, utiliza-se o comando ServoMotorOn, passando como parâmetro o número do servomotor que se deseja ligar e, respectivamente, a posição que em que o servomotor ficará. A porta de Servomotores/PWM possui 8 conexões, logo o número de servomotores irá de 1 a 8 e, por padrão, a posição irá de 0 a 255 (devido as limitações dos servomotores). No exemplo abaixo, foi ligado o servomotor de número 1 e definida sua posição para 200. //Incluindo as bibliotecas necessárias para o projeto //Abrindo comunicação com o MEC1100, utilizando-se a porta USB 0 //Colocando o servomotor de número 1 na posição 200 mec.servomotoron(1, 200); //Fechando comunicação com o MEC1100 mec.closecommunication(); 5.4.2 SERVOMOTOROFF Para se desligar um servomotor, utiliza-se o método ServoMotorOff. Este método recebe como parâmetro o número do servomotor que se deseja desligar (1 a 8). No exemplo, a seguir, foi desligado o servomotor de número 1, o qual havia sido ligado anteriormente. //Incluindo as bibliotecas necessárias para o projeto //Abrindo comunicação com o MEC1100, utilizando-se a porta USB 0 //Colocando o servomotor de número 1 na posição 200 mec.servomotoron(1, 200); //Desligando o servomotor 1 mec.servomotoroff(1); //Fechando comunicação com o MEC1100 mec.closecommunication(); copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 19 / 21
5.5 PWMS Nesta seção, serão apresentados os métodos básicos utilizados para se comunicar com dispositovos PWM. Será mostrado, de forma exemplificada, linhas de códigos a fim de mostar ao usuário como se utilizar os métodos em questão. Porém, caso o usuário queira ter uma explicação mais detalhada sobre estes métodos e como funcionam, recomenda-se a leitura do manual de referências da biblioteca de controle do MEC110. 5.5.1 PWMON O MEC1100 permite a utilização de dispositivos PWMs (Pulse Width Modulation ou Modulação por Largura de Pulso). Para isso, utiliza-se o método PwmOn o qual recebe 5 parâmetros: o primeiro indica qual PWM deve ser utilizado (conta-se do número 1 ao número 8), o segundo indica o valor para período (de 0 a 65535), o terceiro indica o ciclo ativo (de 0 a 65535), o quarto indica o divisor de clock (de 0 a 7) e o último indica a polaridade do sinal (0 para negativo e 1 para positivo). No exemplo, foram definindos os parâmetros para que um servomotor, o qual é um tipo de motor controlado por um sinal PWM, ligado na entrada de número 1, posicione seu eixo em -90 graus. //Incluindo as bibliotecas necessárias para o projeto //Abrindo comunicação com o MEC1100, utilizando-se a porta USB 0 //Setando o servomotor ligado ao pino um em -90o mec.pwmon(1, 55300, 2765, 2, 1); //Fechando comunicação com o MEC1100 mec.closecommunication(); 5.5.2 PWMOFF Para desligar um PWM utiliza-se o método denominado PwmOff, o qual recebe como parâmetro apenas o número do PWM que se deseja desligar. O código abaixo mostra como desligar o PWM de número 1: //Incluindo as bibliotecas necessárias para o projeto //Abrindo comunicação com o MEC1100, utilizando-se a porta USB 0 copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 20 / 21
//Setando o servomotor ligado ao pino um em -90o mec.pwmon(1, 55300, 2765, 2, 1); //Setando o servomotor ligado ao pino um em -90o mec.pwmoff(1); //Fechando comunicação com o MEC1100 mec.closecommunication(); copyright Maxwell Bohr Instrumentação Eletrônica ltda todos os direitos reservados 21 / 21