Novidades

Piu Piu! como construir uma torre de laser com um Arduino





Você está entediado? Pode muito bem construir uma torre de laser. Você sabe – aquele que vai Piu Piu

, dispara um feixe vermelho em lotes de diferentes direções, e talvez até mesmo jogar em uma máquina de fumaça? Yep, um deles.

O Que Você Precisa

  • Arduino
  • 2 servos
  • módulo de laser, tal como um a partir deste kit de sensor
  • vibrador piezo ou outro dispositivo de saída pequeno
  • laços de fio de metal e para a fixação de cabos
  • Longa feminina-gt; cabos de salto do sexo masculino, além de cabos de salto regulares

Video: Давайте строить и играть размеры LEGO # 6: Портал 2 ж / Fgteev мама

Opcionalmente, uma máquina de fumaça é necessário – o laser é muito baixa potência, para que você não será capaz de ver o feixe sem fumaça mesmo em um quarto escuro.

Plano de construir

A ideia de base da torre é de colocar o módulo de laser na parte superior de um servo para proporcionar rotation- horizontal então montar esta embalagem para outro servo colocado a um ângulo de 90 graus para proporcionar o movimento vertical. Temos um piezo para fornecer o Piu Piu efeitos sonoros, e eu estou jogando em uma máquina de fumaça para uma boa medida.

servo Testing

Dependendo do seu servo, os fios podem ser coloridos de forma diferente, mas em geral:

Video: ✔ Como Fazer Uma Torre de Bruxa no Minecraft – [Feliz Halloween]

  • O vermelho é o fio positivo, e em ambos os meus servos era o centro de três – para ser conectado a + 5V.
  • Marrom ou preto é o negativo, para ser conectado a GND no Arduino.
  • Branca ou cor de laranja é o fio de sinal, para ser ligado a um pino capaz de PWM digital de I / O (9 e 10 na demonstração abaixo).

Uma vez que você fio acima de seus dois servos, carregar o seguinte código de exemplo. Eu já nomeado um servo “Hori” para controlar o movimento horizontal, e o outro “vert”. Cada um deve executar uma gama completa de varredura movimento (cerca de 60 graus, no meu caso).

#incluir vert servo,Hori- int pos = 0- vazio configuração(){Hori.anexar(9)-verde.anexar(10)- verde.Escreva(0)-Hori.Escreva(0)-}vazio laço(){para(pos = 0- pos lt; 180- pos += 10) { verde.Escreva(pos)-Hori.Escreva(pos)- demora(100)- }para(pos = 180- posgt; =1- pos-=10) {verde.Escreva(pos)- Hori.Escreva(pos)-demora(100)- }}

Tudo bom? Passando então.

Testando a Laser e Piu Piu Som

O módulo de laser é como um LED, mas tem um resistor embutido no módulo para que possamos conectá-lo diretamente a um I / O digital – muito simples. Se você estiver usando o mesmo módulo laser como me, o “” vai para GND, a S vai para o pino 12. Modificar o código de exemplo acima para fazer o pino 12 uma saída:

int laser = 12-pinMode(laser,SAÍDA)-

Em seguida, o pino de piscar e desligar cada loop usando padrão digitalWrite () método.

Vamos apenas usar PWM para conduzir o buzzer piezo em um nível de som confortável – você pode experimentar com o uso da biblioteca tom se você queria, mas um ruído simples é tudo que eu preciso. Conecte o fio preto à terra eo fio vermelho no pino 11. Definir o seu cigarra no pino relevante, definido para o modo de saída, e ativar usando analogWrite (cigarra, 100) (Ou qualquer número que deseja um máximo de 254) – e analogWrite (besouro, 0) desligar.


O código de exemplo completo modificado para varrer dois servo, ativar um laser, e reproduzir o som irritante, pode ser encontrada aqui.

Todos os componentes devem estar trabalhando – agora precisamos unir tudo isso.

Criando o Turret

Usando abraçadeiras, anexar um servo para o outro: ele realmente não importa qual, apenas certifique-se um vai se mover na horizontal e os outros vão mover a vertical. Você pode retirar a lâmina do rotor e re-sede durante os testes se o ângulo não é certo.

Usar algum fio modelagem rígida para fixar o módulo de laser para a lâmina de outro servo, da seguinte forma:

Finalmente, I anexa a coisa toda para uma perna de mesa com ainda mais cabo-dades e um pouco de madeira de sucata.

Programação do Turret

Eu não sei sobre você, mas a minha ideia de uma torre de laser vem de um número incontável de filmes de ficção científica e episódios de Star Trek. Invariavelmente alguém vai voar passado um revólver e pouco Piu Piu tiros virá voando em um padrão de varredura, sempre milésimos de segundo demasiado lento para que o nosso protagonista na verdade não começar a batida. Isso é o que eu estou tentando replicar, embora sinta-se livre para ajustar a rotina principal para se adequar a sua ideia de que uma torre deve fazer.

Aqui está o código pseudo acabei usando para o loop principal:

  • Randomize tempo entre rajadas, e tempo entre cada tiro individual.
  • Aleatória a posição de início e de fim para cada servo, vert e hori.
  • Randomize o número de disparos a serem tomadas.
  • Exercite-se o número de graus de mudança depois de cada tiro como a diferença entre as posições de início e fim dividido pelo número de tiros.
  • Mova os servos às posições iniciais, e esperar um pouco para eles para chegar lá (100ms)
  • Loop até que todos os tiros foram tomadas, cada vez movendo os servos um pouco como anteriormente calculated- mover e atirar, mover e atirar.
  • Repetir.

I também adicionado um separada fogo() método para estruturar o código um pouco melhor. Ajustar as gamas de todos aleatória() funções de acelerar ou retardar cada parameter- ou aumentar o número de tiros por um mais clube de dança vibração. Desloque-se para um vídeo do código em ação!

#incluir vert servo,Hori- int pos = 0- int laser = 12-int cigarra = 11-vazio configuração(){Hori.anexar(9)-verde.anexar(10)- pinMode(laser,SAÍDA)-pinMode(cigarra,SAÍDA)-}vazio laço(){int timeBetweenBursts = aleatória(200,1000)-int timeBetweenShots = aleatória(50,200)-int vertStart = aleatória(1,180)-int vertEnd = aleatória(1,180)-int horiStart = aleatória(1,180)-int horiEnd = aleatória(1,180)-int numShots = aleatória(5,20)-int vertChange = (vertEnd – vertStart) / numShots- int horiChange = (horiEnd – horiStart) / numShots-verde.Escreva(vertStart)-Hori.Escreva(horiStart)-demora(100)-para(int tiro = 0- tirolt;numShots- tiro++){verde.Escreva(vertStart)-Hori.Escreva(horiStart)-vertStart += vertChange-horiStart += horiChange-fogo()-demora(timeBetweenShots)- }demora(timeBetweenBursts)-}vazio fogo(){digitalWrite(laser,ALTO)-analogWrite(cigarra,100)-demora(20)-digitalWrite(laser,BAIXO)-analogWrite(cigarra, 0)-}

em Ação

Eu não acho que há um uso prático para este pequeno brinquedo, mas é uma enorme quantidade de diversão e há uma série de variáveis ​​que você pode ajustar para obter o efeito desejado. Talvez ele vai vir a calhar para um filme LEGO caseiro?

Gosta de dicas de futebol para investimento desportivo? Então visita agora mesmo Palpites Copa do Mundo e prepara-se para viver a emoção do maior campeonato do planeta.