Controle digital do servo-motor com Arduino

servo-motor
servo-motor

Servo-motor

No post anterior foi detalhado o procedimento para funcionar um servo-motor com interação analógica. Agora vamos fazer os experimentos para interação digital, para que posteriormente o robô faça sozinho essa interação.

Não era meu intuito falar de objetos, mas será inevitável. Serão necessários conhecimentos mais específicos da linguagem C e C++, portanto recomendo o site http://www.cplusplus.com/ (em inglês). Nesse site você poderá encontrar todas as referências necessárias para maior entendimento dos recursos que serão empregados daqui em diante, mas tentarei explicar sempre da maneira mais simples possível.

Controle do servo
O comportamento do servo é simples; ele possui 180º de movimento, sendo que operaremos controlando seu movimento com valores variáveis que vão de 0 a 179. Chamemos essa variável de posicao.

Biblioteca e objeto
Para controle do servo, há uma biblioteca padrão do Arduino, chamada Servo. Para utilizá-lo, o primeiro passo é incluí-lo no código principal do seu programa:

O próximo passo é criar o objeto do servo:

Sem entrar em detalhes, o comando anterior cria um objeto chamado servo1, a partir da classe Servo, da biblioteca Servo.h importada.

A partir de agora é possível utilizar os métodos dessa classe no seu programa utilizando o objeto criado (servo1).

Métodos são conjuntos de instruções para se executar uma determinada tarefa (consulte por classes, métodos, atributos). No nosso caso, a primeira chamada de um método do nosso servo é a especificação da porta que será utilizada para ler sua posição. Esse método recebe como parâmetro o número da porta e o atribui a uma variavel contida na classe Servo. A porta como uma variável interna da classe Servo é chamada “atributo“. Antes de iniciarmos a porta em setup(), vamos criar a variável posicao e em seguida iniciamos a porta:


No loop, simplesmente vamos fazer a leitura serial de um char ‘r’ ou ‘l’ para right e left respectivamente. Criamos a variável que guardará a posição e a variável para guardar o char.

É um exemplo simples, mas divertido. Veja porque:

O interessante aqui é o seguinte; se ‘r’ ou ‘l’ for digitado mais de uma vez, o movimento ocorrerá tantas vezes quanto for digitado antes do enter (até os limites da condição, claro). E pode-se mesclar ‘r’ e ‘l’ várias vezes.

No robô não utilizaremos serial; ou será comunicação por ethernet ou será automático o movimento.

Em relação ao artigo anterior, não toquei na estrutura eletrônica (de propósito); apenas “mudei a direção” da origem da posição, que ao invés de vir de uma variação do potenciômetro, vem agora do apontamento da variável ‘posicao‘ através da manipulação serial.

Por fim, o video desse experimento, direto da interface de desenvolvimento do arduino, utilizando o monitor serial:

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta