- Descrição: O Módulo Piezoelétrico Sensor de Vibração e Toque é um…
Arduino – Controle de Servo Motor SG90 9g através de Potenciômetro
Nesta prática você vai aprender a controlar o Servo Motor SG90 através de um potenciômetro em conjunto com o Arduino.
Na prática Utilizando Servo Motor SG90 9g falei um pouco sobre o SG90 e mostrei como utilizá-lo com Arduino. Em poucas linhas de códigos fizemos o servo executar alguns giros pré-determinados e em velocidades também pré-determinadas.
A diferença é que nesta prática todo o controle de giro do SG90 será feito através de um potenciômetro linear 10K.
Se você quiser saber mais detalhes do servo motor SG90, recomendo que leia nossa postagem anterior referente ao servo.
Os itens que você vai precisar para esta prática estão listados abaixo. Caso ainda não tenha os itens, você pode adquirir todos eles na loja virtual da MasterWalker Shop:
– Arduino
– Servo Motor SG90 9g
– Potenciômetro Linear 10K
– Protoboard
– Cabo Jumper macho-macho
Na imagem abaixo você pode ver o esquema de ligação do SG90 com Arduino:
ATENÇÃO: FAÇA TODAS AS LIGAÇÕES COM SEU ARDUINO DESCONECTADO DA ALIMENTAÇÃO.
Para controlar o SG90 através do potenciômetro, vamos utilizar a função map, que converte o valor lido da entrada analógica (entre 0 bits e 1023 bits), para um valor entre 0 e 180, onde o 0 equivale a 0º e o 180 equivale a 180º.
A sintaxe dessa função é:
map(value, fromLow, fromHigh, toLow, toHigh)
Fazendo as devidas substituições na função:
map(leituraA0, 0, 1023, 0, 180)
O resultado da função é atribuído a uma variável.
Terminado as ligações, basta carregar o código no Arduino. O código utilizado possui uma biblioteca inclusa para funcionamento do servo motor e esta biblioteca é a ‘Servo.h’. Esta biblioteca já vem junto com a IDE do Arduino, logo, basta carregar o código na placa.
Se você ainda não instalou a IDE do Arduino, acesse o link abaixo e em seguida retorne para continuar:
Arduino – Instalação e Configuração da IDE no Windows
Conecte o Arduino ao computador, abra a IDE, confira a placa e a porta selecionada e carregue o código na placa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <Servo.h> //INCLUSÃO DA BIBLIOTECA NECESSÁRIA Servo servo; //OBJETO DO TIPO SERVO const int pinoPOT = A0; //PINO ANALÓGICO UTILIZADO PELO POTENCIÔMETRO const int pinoServo = 3; //PINO DIGITAL UTILIZADO PELO SERVO int leituraA0; //VARIÁVEL QUE ARMAZENA O VALOR LIDO NA PORTA ANALÓGICA void setup(){ servo.attach(pinoServo); //ASSOCIAÇÃO DO PINO DIGITAL AO OBJETO DO TIPO SERVO pinMode(pinoPOT, INPUT); //DEFINE A PORTA COMO ENTRADA } void loop(){ leituraA0 = analogRead(pinoPOT); //LÊ O VALOR NA PORTA ANALÓGICA (VALOR LIDO EM BITS QUE VAI DE 0 A 1023 BITS) leituraA0 = map(leituraA0, 0, 1023, 0, 180); //EXECUTA A FUNÇÃO "map" DE ACORDO COM OS PARÂMETROS PASSADOS servo.write(leituraA0); //APLICA AO SERVO O VALOR / POSIÇÃO GERADO PELA FUNÇÃO "map" delay(1); //INTERVALO DE 1 MILISSEGUNDO } |
Após terminar de carregar o código na placa, gire o eixo do potenciômetro para fazer o controle de giro do servo motor. A variável ‘leituraA0’ que recebe o valor gerado pela função map atribui a função ‘servo.write()’ o valor do ângulo para qual o servo deve ser mover.
Note que o giro do servo ocorre de forma instantânea.
Leia as linhas do código, pois estão todas comentadas para que você possa entender o que cada uma delas faz.
Gostou deste tutorial? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Postagem anterior: Arduino – Utilizando a função millis
Próxima postagem: Ethernet Shield W5100 – Só o LED Vermelho (PWR) acendendo
Olá, boa tarde! Fiz o passo a passo do código, mas mostra sempre um erro na linha do servo.write. O erro apontado está no “.”, então reescrevi essa parte, e o erro permanece. Por que?