Como criar alisamentos com o Arduino
Você pode criar movimentos radicais em um servomotor com o Arduino. A varreduras servo motor de 0 # 186- a 179 # 186- e, em seguida, de volta, de uma forma semelhante ao movimento de um relógio giratório velho.
O esboço da varredura
Você precisa:
Um Arduino Uno
Um servo
fios de salto
A fiação para um servo é extremamente simples, porque ele vem com um puro, de três pinos soquete. Para ligá-lo ao Arduino, basta usar fios de salto entre os pinos do Arduino e as tomadas servo diretamente ou usar um conjunto de pinos de cabeçalho para conectar o soquete para a sua placa de ensaio. O servo tem um conjunto de três soquetes com fios ligados a eles, geralmente vermelho, preto, e branco.
Todos os cálculos e leituras para mover o motor é feito no circuito dentro do próprio servo, então tudo o que é necessário é poder e um sinal do Arduino. Vermelho está ligado ao 5V no Arduino para alimentar o motor eo circuito interior preto ele- está ligado ao GND para aterrar a servo- e branco está conectada ao pino 9 para controlar o movimento servos.
As cores destes fios pode variar, por isso sempre verifique a folha de dados ou qualquer documentação disponível para o seu motor específico. Outras cores comuns são o vermelho (5V), marrom (GND) e amarelo (sinal).
Completar o circuito como descrito e abrir o esboço da varredura, escolhendo Arquivo-Exemplos-Servo-varredura. O esboço de varrimento é como se segue:
// Varredura // by BARRAGAN // Este exemplo de código é de domínio público. # Incluem lt;servo.h>servo myservo- // criar o objeto servo para controlar um servo // um máximo de oito objetos servo pode ser criadoint pos = 0- // variável para armazenar a configuração servo positionvoid () {myservo.anexar(9) - // atribui o servo no pino 9 para o objeto servo} vazio loop () {para(Pos = 0- pos lt; 180- pos + = 1) // vai de 0 graus a 180 graus {// em passos de 1 degreemyservo.Escreva(Pos) - // dizer servo para ir para a posição em // 'pos' variáveldemora(15) - // espera 15ms para o servo de alcançar a posição} //para(Pos = 180- pos> = 1- pos- = 1) // vai de 180 graus a 0 graus {myservo.Escreva(Pos) - // dizer servo para ir para a posição em // 'pos' variáveldemora(15) - // espera 15ms para o servo de alcançar a posição //}}
Depois de ter encontrado o desenho, pressione o botão Compilar para verificar o código. O compilador deve, como sempre, destacar quaisquer erros gramaticais em vermelho na área de mensagem quando são descobertos.
Se o esboço compila corretamente, clique em Upload para fazer o upload do esboço para sua placa. Quando o esboço terminou o carregamento, o seu motor deve começar a girar para trás e para frente através de 180 graus, fazendo uma dança sobre a mesa.
Se nada acontecer, você deve verificar novamente sua fiação:
Certifique-se de que você está usando o pino 9 para os dados (branco amarelo /) line.
Verifique se você tem os outros fios servo conectados aos pinos corretos.
A repartição esboço varredura
No início deste esboço, uma biblioteca é incluído. Esta é a biblioteca servo e vai ajudar você a obter um lote fora de seu servo com muito pouco código complexo.
#incluir lt;servo.h>
A próxima linha faz com que um objeto servo. A biblioteca sabe como usar servos, mas precisa de você para dar a cada um deles um nome para que ele possa falar com cada servo. Neste caso, o novo objecto é chamado Servo myservo.
Usando um nome é semelhante ao nomear seu variables- isto é, eles podem ser qualquer nome, desde que eles são consistentes em todo o seu código e você não usar quaisquer nomes que são reservadas pela linguagem Arduino, como int ou demora.
Servo myservo- // criar o objeto servo para controlar um servo // um máximo de oito objetos servo pode ser criado
A linha final nas declarações é uma variável para guardar a posição do servo.
int pos = 0- // variável para armazenar a posição de servo
Na configuração, o único item a ser definido é o número pin do pino Arduino que está se comunicando com o servo. Neste caso, você está usando o pino 9, mas poderia ser qualquer pino PWM.
void setup () {myservo.anexar(9) - // atribui o servo no pino 9 para o objeto servo}
O loop executa duas ações simples, e ambos são para laços. O primeiro para lacete aumenta gradualmente o pos variável de 0 a 180. Por causa da biblioteca, você pode escrever os valores em graus ao invés do normal de 0 a 255 usado para o controle PWM. Com cada ciclo, o valor é aumentado em 1 e enviados para o servo utilizando uma função específica para a biblioteca de servo,
Após o ciclo atualiza o valor, um pequeno atraso de 15 milissegundos ocorre enquanto o servo atinge o seu novo local. Em contraste com outras saídas, depois de um servo é atualizado ele começa a mover-se para a sua nova posição em vez de precisar de ser constantemente disse.
void loop () {para(Pos = 0- pos lt; 180- pos + = 1) // vai de 0 graus a 180 graus {// em passos de 1 degreemyservo.Escreva(Pos) - // dizer servo para ir para a posição em // 'pos' variáveldemora(15) - // espera 15ms para o servo de alcançar a posição} //
O segundo para circuito faz o mesmo no sentido oposto, regressando o servo para a sua posição inicial.
para(Pos = 180- pos> = 1- pos- = 1) // vai de 180 graus a 0 graus {myservo.Escreva(Pos) - // dizer servo para ir para a posição em // 'pos' variáveldemora(15) - // espera 15ms para o servo de alcançar a posição //}}
Este é o exemplo servo mais simples, e é uma boa idéia para testar se o servo está funcionando corretamente.