Como controlar o seu servo com o arduino

Ao usar um potenciômetro (ou qualquer sensor analógico), é possível controlar directamente o seu servo com o Arduino, da mesma forma que você controlar uma garra mecânica nas arcadas.

O esboço Knob

Este exemplo mostra como você pode facilmente usar um potenciômetro para mover o seu servo para um grau específico.

Video: Como funciona o Servo Motor - Arduino e automação - tutorial parte 1

Você precisa:

  • Um Arduino Uno

  • A placa de ensaio

  • Um servo

  • Um resistor variável ohm 10k

  • fios salto

O servo é ligado exatamente como no exemplo da varredura, mas desta vez você precisa conexões extras para 5V e GND para o potenciômetro, assim que você deve usar uma placa de ensaio para fornecer os pinos extras. Conecte os pinos de 5V e GND no Arduino para o positivo (+) e negativo (-) linhas da placa de ensaio.

Ligue o servo para a placa de ensaio utilizando uma linha de três pinos de cabeçalho ou três fios de salto. Ligar a tomada vermelho para a linha 5 V, / tomada de castanho a preto para a linha GND, e o soquete branco / amarelo ao pino 9 no Arduino.

Encontrar um espaço na placa de ensaio para o potenciômetro. Ligue o pino central ao pino A0 no Arduino e os pinos restantes a 5V de um lado e GND do outro.

Video: Tutorial: Como utilizar o USB Host Shield com teclado e mouse

Depois de ter construído o circuito, abra o desenho, escolha Arquivo → Exemplos → Servo → Knob. O código para o desenho é a seguinte:

// Controlando uma posição do servo utilizando um potenciómetro (resistência variável) // por Michal Rinott #include lt;servo.hgt;servo myservo- // criar o objecto servo para controlar um servoint potpin = 0- // pino analógico usado para ligar o potenciómetroint val- // variável para ler o valor a partir da configuração pinvoid analógico () {myservo.anexar(9) - // atribui o servo no pino 9 para o objecto servo} void loop () {val = analogRead(Potpin) - // lê o valor do potenciômetro // (valor entre // 0 e 1023) val = mapa(Val, 0, 1,023, 0, 179) - // dimensioná-lo para usá-lo com o servo // (valor entre 0 e 180 //) myservo.Escreva(Val) - // define a posição do servo de acordo // para o valor escaladodemora(15) - // aguarda o servo para chegar lá}

Você pode notar que existem algumas discrepâncias entre os comentários e o código. Quando se refere à gama de graus para mover o servo, o esboço menciona ambos 0 a 179 e 0 a 180. Com todos os tutoriais Arduino, é melhor assumir que eles são obras em andamento e pode não ser sempre precisas.



O intervalo correto é de 0 a 179, o que lhe dá 180 valores. Contando a partir de zero é referido como de zero a indexação e é uma ocorrência comum em Arduino, como você deve ter notado por este ponto.

Depois de ter encontrado o desenho, pressione o botão Compilar para verificar o código. O compilador deve destacar erros de sintaxe na caixa de mensagem, que acende uma luz vermelha quando são descobertos.

Se o esboço compila corretamente, clique em Upload para fazer o upload do esboço para sua placa. Quando isso for feito upload, seu servo deve girar como você transforma seu potenciômetro.

Se isso não é o que acontece, você deve verificar sua fiação:

  • Certifique-se de que você está usando o pino 9 para conectar os dados de linha (branco / amarelo) ao servo.

    Video: Controlando com 1 joystick 3 servomotores no Arduino

  • Verifique as conexões para o potenciômetro e certifique-se de que o pino central está ligado a Analog pin 0.

  • Verifique as conexões na placa de ensaio. Se os fios de salto ou componentes não são conectados usando as linhas corretas na placa de ensaio, eles não irão funcionar.

A repartição esboço Knob

Nas declarações, a biblioteca servo, Servo.h, e um novo objeto servo são nomeados. O pino de entrada analógica é declarado com um valor de 0, mostrando que você está usando analógico 0.

Você deve ter notado que o pino está numerado como 0, não A0 como em outros exemplos. Ou é bom, porque A0 é apenas um alias de 0, como A1 é de 1, e assim por diante. Usando A0 é bom para clareza, mas opcional.

Há uma última variável para armazenar o valor da leitura, que se tornará a saída.

#incluir lt;servo.hgt;servo myservo- // criar o objecto servo para controlar um servoint potpin = 0- // pino analógico usado para ligar o potenciómetroint Val- // variável para ler o valor do pino analógico

Na configuração, o único item de definir é myservo, que está a utilizar o pino 9.

Video: Arduino : Servo Controlado por Potenciometro

void setup () {myservo.anexar(9) - // atribui o servo no pino 9 para o objecto servo}

Em vez de utilizar duas variáveis ​​separadas para a entrada e saída, este esboço simplesmente utiliza um. Primeiro, val é usada para armazenar os dados do sensor em bruto, um valor de 0 a 1023. Este valor é, em seguida, processada utilizando o mapa função para dimensionar a sua gama para que o servo de: 0-179.

Este valor é então escrito para o servo usando myservo.write. Há também um atraso de 15 milissegundos para chegar a esse local. Em seguida, o ciclo se repete e atualiza sua posição conforme necessário.

void loop () {val = analogRead(Potpin) - // lê o valor do potenciômetro // (valor entre 0 e 1023) val = mapa(Val, 0, 1,023, 0, 179) - // dimensioná-lo para usá-lo com o servo // (valor entre 0 e 180) myservo.Escreva(Val) - // define a posição do servo de acordo com // o valor escaladodemora(15) - // aguarda o servo para chegar lá}

Com esta simples adição ao circuito, é possível controlar um servo com qualquer tipo de entrada. Neste exemplo, o código usa uma entrada analógica, mas com algumas mudanças que ela poderia facilmente usar uma entrada digital.


Publicações relacionadas