Construa uma Aranha-Robô com Arduino – Parte II

Aranha-Robo
Font Size

Construa uma Aranha-Robô com Arduino – Parte II

Agora que você já montou sua Aranha-Robô seguindo os passos do nosso artigo anterior, está na hora da programação! Nosso programa irá controlar as pernas da Aranha-Robô e consistirá em uma série de comandos para os servos SG90 que instalamos anteriormente.

Contudo, primeiro precisamos analisar o movimento das pernas de uma aranha e transformar-lo em código para nosso Arduino. Dessa forma, é hora de começar a trabalhar em nossa programação de uma maneira inusitada: vendo vídeos de aranha!

O Movimento Ideal

De primeira vista, é perceptível que as aranhas movimentam seus membros lateralmente e paralelamente ao mesmo tempo. No entanto, nosso Arduino não possui capacidade de Thread e, desta forma, é capaz de realizar apenas um movimento por vez.

Figura 01 – Movimento das Pernas da Aranha.
Fonte: Giphy.

Sendo assim, vamos dividir o andar da aranha em duas etapas, uma para cada servo. O primeiro movimento irá levantar a seção da perna que faz contato com o chão utilizando o servo motor exterior. E o segundo movimento irá movimentar a perna inteira lateralmente através da angulação do servo interno.

Programando e Esticando as Pernas

Agora que já planejamos a programação, está na hora de escreve-la. Para esse projeto, vamos utilizar a biblioteca Servo para controlar os servo motores SG90 em conjunto com a instrução “For” e a função delay. Abaixo você encontrará o código comentado utilizado nos testes para o artigo.

#include "Servo.h" //Biblioteca para controlar os servos
Servo servo_externo_2; //Declarando o servo que controlará a altura da perna como "servo_externo_2"
Servo servo_interno_3; //Declarando o servo movimentará lateralmente a perna como "servo_interno_3"
void setup() {
  servo_externo_2.attach(2); //Indicando através do comando "Attach" que o servo está conectado à porta 2
  servo_interno_3.attach(3); //Indicando através do comando "Attach" que o servo está conectado à porta 3
}
void loop(){

/*Utilizando um comando "FOR", podemos controlar a velocidade com que o servo altera sua angulação usando
a função "delay". Dentro do for, o valor da variável deve ser igual à posição inicial do servo. A condição
será definida pela posição final e o incremento será decrescente se posição inicial > posição final e crescente se posição inicial < posição final.*/     

 for(int x = 85; x > 5; x--){
  servo_externo_2.write(x);
  delay(15);
 }
 for(int x = 85; x < 130; x++){
  servo_interno_3.write(x);
  delay(15);
 }
 for(int x = 5; x < 85; x++){  
  servo_externo_2.write(x);  
  delay(15);  
  }  
 for(int x = 130; x > 85; x--){
  servo_interno_3.write(x);
  delay(15);
 }
}

Com o código compilado e baixado para o Arduino, sua Aranha-Robô esticará suas pernas e logo estará “viva”.

Hora de Trazer À Vida: Programando a Aranha-Robô

Por fim, é a hora de trazer nossa Aranha-Robô a vida. O programa anterior utilizado nos testes apenas simula o movimento das pernas enquanto a Aranha anda. O código completo compila todos os movimentos de todas as pernas em ações como: andar pra frente, andar pra trás, reverenciar, inclinar para direita, inclinar para esquerda, dançar, “fazer a onda”, virar para esquerda e virar para direita.

Devido seu tamanho grande (+500 linhas de programação), o código estará disponível por um link no GitHub. O programa possui explicações de cada comando e lógica aplicada. No entanto, vamos abordar algumas das partes mais complexas para explicar mais a fundo o que está acontecendo.

-Calibração

int da =  0,  // Servo Pivo Frontal Esquerdo
    db =  0,  // Servo Pivo Traseiro Esquerdo
    dc =  0,  // Servo Pivo Traseiro Direito
    dd =  0;  // Servo Pivo Frontal Direito

Estas linhas são opcionais, mas podem prevenir muita dor de cabeça (e servos queimados) no futuro! Caso algum dos servo para angulação lateral, chamados “Pivo” na programação, esteja desalinhado, você pode adicionar aqui o “erro” para a programação corrigir automaticamente.

-Posição dos Servos e Constante de Velocidade

while ((s11 != p11) || (s21 != p21) || (s31 != p31) || (s41 != p41) || (s12 != p12) || (s22 != p22) || (s32 != p32) || (s42 != p42))
  {

    // Servo Pivo Frontal Esquerdo
    if (s11 < p11)            // Se a posição real dos servos é menor que a posição programada
    {
      if ((s11 + sp1) <= p11)
        s11 = s11 + sp1;      // Definir posição do servo igual a posição do servo + constante de velocidade
      else
        s11 = p11;
    }

    if (s11 > p11)            // Se a posição real dos servos é maior que a posição programada
    {
      if ((s11 - sp1) >= p11)
        s11 = s11 - sp1;      // Definir posição do servo igual a posição do servo - constante de velocidade
      else
        s11 = p11;
    }

A programação possui um controle de velocidade dos movimentos, que funciona adicionando uma constante aos valores a serem utilizados nos comandos “.write” dos servos. Desta forma, a função “void srv” usa as informações de posição do servo e constante de velocidade para ajustar o movimento. Acima consta o algoritmo de apenas um dos servos, existindo um algoritmo igual para os demais servos.

Conclusão

Apesar de um pouco longo, o projeto da Aranha-Robô é um ótimo ponto de largada para os interessados em projetar robôs quadrúpedes ou simplesmente iniciar na robótica.

Como um maker que iniciou com robôs de LEGO e encontrou sua paixão fazendo projetos com Arduino, este projeto foi de minha escolha e tenho certeza que todos os que aceitarem o desafio, irão adorar ver sua aranha levantando pela primeira vez!

 

Posts relacionados

Criando um seletor de cargas com sensor capacitivo

por Danilo Nogueira
6 anos ago

[Projeto] Interruptor com Sensor de Gás

por autocore
9 anos ago

Utilizando Sensor de Pulsos com Arduino

por Danilo Nogueira
5 anos ago
Sair da versão mobile