Como criar movimentos varrendo com o arduino
Você pode criar movimentos radicais em um servomotor com o Arduino. A varreduras servo motor de 0º a 179º e depois de volta novamente, de uma maneira semelhante ao movimento de um relógio rotativo de idade.
Conteúdo
O esboço da varredura
Você precisa:
Um Arduino Uno
Um servo
fios salto
A fiação para um servo é extremamente simples, porque ele vem com um puro, de três pinos soquete. Para conectá-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 bases com fios ligados a eles, geralmente vermelhos, pretos, e brancos.
Video: SENSOR DE MOVIMENTO (PIR) | Curso de Arduino #011
Todos os cálculos e leituras para mover o motor é feito no circuito no interior do próprio servo, de modo que tudo o que é necessário é potência e um sinal a partir do Arduino. O vermelho é ligado a 5V no Arduino para alimentar o motor e os circuitos para dentro preto ele- está ligado ao GND para aterrar a servo- e branco está ligado ao pino 9 para controlar o movimento servos.
As cores destas 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 vermelhos (5V), castanho (GND), e amarelo (sinal).
Completar o circuito como descrito e abrir o esboço varredura escolhendo Arquivo → Exemplos → Servo → varredura. O esboço de varredura é como se segue:
// varredura // by BARRAGAN // Este exemplo de código é de domínio público. # Incluem lt;servo.hgt;servo myservo- // criar o objecto servo para controlar um servo // um máximo de oito objectos servo pode ser criadoint pos = 0- // variável para armazenar a configuração de servo positionvoid () {myservo.anexar(9) - // atribui o servo no pino 9 para o objecto servo} 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 para alcançar a posição //}para(POS = 180- posgt; = 1- pos- = 1) // vai de 180 graus para 0 graus {myservo.Escreva(Pos) - // dizer servo para ir para a posição em // `pos` variáveldemora(15) - // espera 15ms para o servo para 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 carregar, seu motor deve começar a girar para trás e para a frente através de 180 graus, fazendo uma dança sobre a mesa.
Se nada acontecer, você deve verificar sua fiação:
Certifique-se de que você está usando o pino 9 para os dados (branco amarelo /) linha.
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 está incluído. Esta é a biblioteca servo e vai ajudar você a ter um monte fora de seu servo com muito pouco código complexo.
Video: Arduino, diversos projetos
#incluir lt;servo.hgt;
A linha seguinte faz com que um objecto do servo. A biblioteca sabe como usar servos, mas precisa de você para dar a cada um um nome para que ele possa falar com cada servo. Neste caso, o novo objeto Servo é chamado myservo.
Usando um nome é semelhante ao nomear seu variables- isto é, eles podem ser qualquer nome, desde que eles são consistentes em todo o código e você não usar quaisquer nomes que são reservadas pela linguagem Arduino, como int ou demora.
Servo myservo- // criar o objecto servo para controlar um servo // um máximo de oito objectos 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 do servo
Na configuração, a única item a ser configurado é o número PIN do pino Arduino que está a comunicar 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 objecto servo}
O loop executa duas acções simples, e são ambos para rotações. 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 para 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- posgt; = 1- pos- = 1) // vai de 180 graus para 0 graus {myservo.Escreva(Pos) - // dizer servo para ir para a posição em // `pos` variáveldemora(15) - // espera 15ms para o servo para alcançar a posição //}}
Este é o exemplo servo mais simples, e é uma boa idéia para testar se o servo está funcionando corretamente.