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