Projeto 8 – Acionando um Motor

Existem diversos tipos de motor que podem ser utilizados facilmente com o Arduino. Entre os mais fáceis de se utilizar está o servo motor, sendo bastante utilizado em aeromodelismo e outros projetos que precisam de pouco movimento.

O servo motor é, basicamente, um motor onde é possível controlar sua posição. O servo consegue fazer um movimento de rotação de até meia volta, não fica girando como alguns motores. Porém, existem outros modelos de servo motor que conseguem dar voltas completas, sendo cada modelo indicado para um tipo de projeto diferente.

Servo motor 9g

Você lembra do Projeto 3, onde controlamos o brilho de um LED? O princípio é basicamente o mesmo. O Projeto 8 consiste em movimentar um servo ao pressionar um botão. Para isso vamos precisar de uma entrada digital para o botão e uma saída analógica para o servo motor. Conforme variamos a saída analógica do servo, variamos a sua posição.

Funcionamento projeto 8

Material necessário

1x Servo 9g
1x Chave push-button
7x Jumper Macho-macho
1x Cabo USB
1x Placa Uno

Montagem do circuito

O servo possui três fios para sua utilização e na extremidade desses fios um conector de 3 pinos fêmea. O fio marrom do servo deve ser conectado ao GND, o fio vermelho ao 5 V e o fio laranja ao pino 9 do Arduino. Na ilustração abaixo o fio preto corresponde ao marrom, o fio vermelho ao vermelho e o fio amarelo ao fio laranja.

Projeto servo motor com botão e Arduino

Para conectar o servo basta utilizar 3 jumpers macho-macho e ligar o conector do servo com a protoboard. Também acompanha algumas hastes e parafusos. Não é necessário parafusar as hastes ao servo, apenas um encaixe já basta. Você pode escolher uma das hastes para visualizar melhor o movimento do servo.

Montagem jumper e servo

Programa Projeto 8 – Acionando um Motor

No projeto 8 o programa deve fazer o seguinte: ao apertar o botão, o servo gira até meia volta (180 graus) e retorna, ficando parado até pressionar o botão novamente.

//   Projeto 8 - Acionando um Motor

#include <Servo.h>

Servo meuServo;
int botao = 7;

void setup() 
{
  pinMode(botao, INPUT_PULLUP); // define o botão como saidas 
}

void loop() 
{
  meuServo.attach(9);
  if(digitalRead(botao) == LOW)
  {
    for(int angulo=0; angulo<=180; angulo++) // Aumenta o angulo do servo ate chegar em 180 graus
    {
      meuServo.write(angulo);
      delay(10);
    }
    for(int angulo=180; angulo>=0; angulo--)// Diminui o angulo do servo
    {
      meuServo.write(angulo);
      delay(10);
    }
  }
  meuServo.detach();
}

Possíveis erros

Caso o projeto não funcione, verifique alguns dos possíveis erros:

  • Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a conexão;
  • Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
  • Verifique se as conexões do servo estão corretas, fio marrom no GND, fio vermelho no 5 V e laranja no pino 9;
  • Verifique se os pinos do botão estão bem inseridos na protoboard;
  • Verifique se o código carregou na placa através da IDE Arduino.

Desafios

Veja abaixo alguns desafios que você pode tentar!

  • Modifique o limite de rotação do servo trocando os valores de ângulo nas linhas for(int angulo=0; angulo<=180; angulo++); por exemplo for(int angulo=50; angulo<=110; angulo++);

Alguma dúvida, comentário ou algo que queira acrescentar? Entre no tópico do nosso fórum!