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.
Conteúdo
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.