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 para os arcades.

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.

Você precisa:

  • Um Arduino Uno

  • A placa de ensaio

  • Um servo

  • A resistência variável ohm 10k

  • fios de 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, então você deve usar uma placa de ensaio para fornecer os pinos extras. Conectar os pinos de 5V e GND no Arduino para o positivo (+) e negativo (-) linhas da placa de ensaio.

Ligue o servo à placa de ensaio utilizando quer uma fileira de três pinos de cabeçalho ou três fios de salto. Ligue a tomada vermelho para a linha de 5V, / socket marrom a preta para a linha GND, eo branco tomada / amarelo ao pino 9 no Arduino.

image0.jpg

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 do outro GND.

image1.jpg

Depois de ter construído o circuito, abrir o esboço escolhendo Arquivo-examples-Servo-Knob. O código para o esboço é como se segue:

// Controlar a posição do servo usando um potenciômetro (resistor variável) // by Michal Rinott #include lt;servo.h>servo myservo- // criar o objeto servo para controlar um servoint potpin = 0- // pino analógico usado para conectar o potenciômetroint va- // 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 objeto servo} void loop () {val = analogRead(Potpin) - // lê o valor do potenciómetro // (valor entre 0 e // 1023) Val = mapa(Val, 0, 1023, 0, 179) - // escalá-lo para usá-lo com // o servo (valor entre 0 e // 180) myservo.Escreva(Val) - // define a posição de servo de acordo // com o valor escaladodemora(15) - // espera para o servo chegar}

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 verdadeiras.

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 é feito o upload, o seu servo deve girar como você transformar o 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.

  • 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 é numerada 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 maior clareza, mas opcional.

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

#incluir lt;servo.h>servo myservo- // criar o objeto servo para controlar um servoint potpin = 0- // pino analógico usado para conectar o potenciômetroint va- // variável para ler o valor do pino analógico

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

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

Em vez de usar duas variáveis ​​separadas para entrada e saída, este esboço simplesmente usa um. Primeiro, val é usada para armazenar os dados do sensor em bruto, um valor de 0 a 1023. Este valor é então processado usando 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 a chegar a esse local. Em seguida, o ciclo 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, 1023, 0, 179) - // escalá-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 escalado //demora(15) - // espera para o servo chegar}

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.

menu