Pew Pew! Kako izgraditi lasersku kupolu s arduinom

  • Harry James
  • 0
  • 4569
  • 376
Oglas

Je li ti dosadno? Moglo bi se izgraditi i laserska kupola. Znate - jedan koji ide pew pew, puca u crvenu zraku u puno različitih smjerova, a možda čak i baca u dimni stroj? Da, jedan od njih.

Što će vam trebati

  • Težak
  • 2 servosa
  • Laserski modul, poput onog iz ovog kompleta senzora
  • Piezo zujalica ili drugi mali izlazni uređaj
  • Metalne žice i kabele za vezanje
  • Dugi ženski-> muški skočni kablovi, plus redovni kablovi za skok

Po želji, potreban je stroj za dim, laser je prilično niske snage, tako da nećete moći vidjeti snop bez dima čak i u mračnoj sobi.

Izgradite plan

Osnovna ideja kupole je da se laserski modul postavi na jedan servo radi horizontalne rotacije; zatim montirajte taj paket na drugi servo uređaj postavljen pod kutom od 90 stupnjeva da biste osigurali okomito kretanje. Imamo piezo za pružanje pew pew zvučni efekti, a ja bačim u dimni stroj za dobru mjeru.

Ispitivanje servo

Ovisno o vašem servu, žice se mogu obojati različito, ali općenito:

  • Crvena je pozitivna žica, a na oba moja servo uređaja bila je središte tri - biti spojen na + 5V šinu.
  • Smeđa ili crna je negativan, biti povezan s GND-om na Arduinu.
  • Bijela ili narančasta je signalna žica za spajanje na PWM digitalni I / O pin (9 i 10 u demonstraciji ispod).

Nakon što spojite dva servo uređaja, prenesite sljedeći uzorak koda. Nazvao sam jedan servo “Hori” za kontrolu horizontalnog kretanja i drugo “rastinje”. Svaki od njih trebao bi obaviti cijeli raspon kretanja (u mom slučaju oko 60 stupnjeva).

#include Servo vert, hori; // stvoriti servo objekt za kontrolu servo // može se stvoriti najviše osam servo objekata int pos = 0; // varijabla za spremanje postave void servo položaja () hori.attach (9); vert.attach (10); // pričvršćuje servo na pin 9,10 na servo objekte vert.write (0); hori.write (0);  void petlja () for (pos = 0; pos = 1; pos- = 10) // vraća se sa 180 stupnjeva na 0 stupnjeva vert.write (pos); // reći servu da ide na poziciju u varijabli 'pos' hori.write (pos); kašnjenja (100); // čeka 100ms da servo dođe do položaja 

Sve dobro? Krećući se tada.

Ispitivanje lasera i Pew Pew Zvuk

Laserski modul je poput LED-a, ali u njega je ugrađen otpornik, tako da ga možemo izravno spojiti na digitalni I / O - vrlo je jednostavno. Ako koristite isti laserski modul kao i ja, “-” Ide na GND, S ide na pin 12. Izmijenite gornji uzorak da biste dobili pin 12 izlaz:

int laser = 12; pinMode (laser, OUTPUT); 

Zatim trepćite pribadaču i isključite svaku petlju koristeći se standardnim digitalWrite () način.

Koristit ćemo samo PWM za pokretanje piezo zujanja na ugodnoj razini zvuka - ako želite, mogli biste eksperimentirati s tonovnom bibliotekom, ali potreban je jednostavan šum. Crnu žicu povežite s masom, a crvenu žicu za pin 11. Definirajte svoju zvučni signal na odgovarajućem pinu postavite na način izlaza i aktivirajte pomoću analogWrite (zujalica, 100) (ili bilo koji broj koji želite do 254); i analogWrite (zujalica, 0) isključiti.

Kompletan uzorak koda modificiran da proguta dva servo-a, aktivira laser i reproducira dosadni zvuk, možete pronaći ovdje.

Sve bi vaše komponente trebale raditi - sada moramo sve to povezati.

Stvaranje kupole

Pomoću kabelskog spoja pričvrstite jedan servo na drugi; zapravo nije važno koji, samo se pobrinite da se jedan pomiče po horizontali, a drugi će se kretati okomito. Tijekom ispitivanja možete izvaditi oštricu rotora i ponovno sjediti ako kut nije pravi.

Upotrijebite neku krutu žicu za modeliranje kako biste pričvrstili laserski modul na sječivo drugog servo-uređaja:

Napokon sam sve to pričvrstio na stolu s još više kablova i malo drveta.

Programiranje kupole

Ne znam za vas, ali moja zamisao o laserskoj kupoli dolazi iz bezbroj znanstveno-fantastičnih filmova i epizoda zvijezde. Neizbježno će netko proći pored kupole i malo Pew-Pew snimke će izletjeti u zamršenom obrascu, uvijek milisekundi presporima, tako da naš glavni lik zapravo ne bude pogođen. To pokušavam replicirati, iako slobodno prilagodite glavnu rutinu kako bi odgovarao vašoj ideji o tome što bi toranj trebao učiniti.

Evo pseudo koda koji sam na kraju koristio za glavnu petlju:

  • Nasumično odredite vrijeme između snimki i vrijeme između svakog pojedinog snimka.
  • Slučajno odredite početni i krajnji položaj za svaki servo, vert i hori.
  • Nasumično odredite broj snimaka.
  • Izračunajte broj stupnjeva promjene nakon svakog pucanja kao razliku između početne i krajnje pozicije podijeljene s brojem pucnjeva.
  • Pomaknite servo na početne položaje i pričekajte malo da stignu tamo (100 ms)
  • Petljajte dok se ne naprave svi snimci, svaki put pomaknuvši servo malo kako je prethodno izračunato; pomicati i pucati, pomicati i pucati.
  • Ponoviti.

Dodao sam i zasebno vatra() metoda malo bolje strukturirati kod. Podesite raspone svih slučajna () funkcije za ubrzavanje ili usporavanje svakog parametra; ili povećati broj snimaka za više plesnog kluba. Pomaknite se prema dolje za videozapis koda u akciji!

#include Servo vert, hori; // stvoriti servo objekt za kontrolu servo int pos = 0; // varijabla za pohranu servo položaja int lasera = 12; int zvuk = 11; praznina postava () hori.attach (9); vert.attach (10); // pričvršćuje servo na pin 9 na servo objekt pinMode (laser, OUTPUT); pinMode (zujalica, OUTPUT);  void petlja () int timeBet BetweenBursts = slučajno (200,1000); int timeBet BetweenShots = slučajno (50,200); int vertStart = slučajni (1,180); int vertEnd = slučajni (1,180); int horiStart = slučajni (1,180); int horiEnd = slučajni (1,180); int numShots = slučajni (5,20); int vertChange = (vertEnd - vertStart) / numShots; // koliko pomaknuti okomitu os po svakom snimku int horiChange = (horiEnd - horiStart) / numShots; vert.write (vertStart); // neka prvo krene u početni položaj, pričekajte malo hori.write (horiStart); kašnjenja (100); for (int pucati = 0; pucati

U akciji

Mislim da nema praktične koristi za ovu malu igračku, ali to je jako zabavno i postoji puno varijabli koje možete prilagoditi da biste postigli željeni učinak. Možda će vam dobro doći za domaći LEGO film?




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.