
Owen Little
0
2057
452
Keder du dig? Kan også bygge en lasertårn. Du ved - en der går pew pew, skyder en rød bjælke i masser af forskellige retninger, og måske endda kaster en røgmaskine ind? Jepp, en af dem.
Hvad du har brug for
- Arduino
- 2 servoer
- Lasermodul, f.eks. Et fra dette sensorsæt
- Piezo-summer eller anden lille outputenhed
- Metaltråd og kabelforbindelser til fastgørelse
- Lange hoftekabler til kvinder plus almindelige hoppekabler
Valgfrit er der brug for en røgmaskine - laseren er temmelig lav watt, så du ikke kan se strålen uden røg, selv i et mørkt rum.
Byg plan
Den grundlæggende idé med tårnet er at placere lasermodulet oven på en servo for at give vandret rotation; monter derefter pakken på en anden servo placeret i en 90 graders vinkel for at give lodret bevægelse. Vi har en piezo til at levere pew pew lydeffekter, og jeg kaster en røgmaskine ind for et godt mål.
Servotest
Afhængigt af din servo, kan ledningerne farves forskelligt, men generelt:
- Rød er den positive ledning, og på begge mine servoer var det midten af tre - der skal tilsluttes til + 5v skinne.
- Brun eller sort er det negative, der skal forbindes til GND på Arduino.
- Hvid eller orange er signaltråden, der skal tilsluttes en PWM-kompatibel digital I / O-stift (9 og 10 i demoen herunder).
Når du har tilsluttet dine to servoer, skal du uploade følgende prøvekode. Jeg har navngivet en servo “Hori” for at kontrollere den vandrette bevægelse og den anden “vert”. Hver skal udføre et komplet sortiment af bevægelsessvep (ca. 60 grader, i mit tilfælde).
# inkluder Servo vert, hori; // Opret servo-objekt til kontrol af en servo // maksimalt otte servo-objekter kan oprettes int pos = 0; // variabel til at gemme servo position void setup () hori.attach (9); vert.attach (10); // fastgør servoen på pin 9,10 til servo-objekterne vert.write (0); hori.write (0); void loop () for (pos = 0; pos = 1; pos- = 10) // går tilbage fra 180 grader til 0 grader vert.write (pos); // fortæl servo at gå til position i variabel 'pos' hori.write (pos); forsinkelse (100); // venter 100 ms til servoen når positionen
Alt godt? Gå videre derefter.
Test af laser og Pew Pew Lyd
Lasermodulet er ligesom en LED, men det har en modstand indbygget i modulet, så vi kan tilslutte det direkte til en digital I / O - meget enkel. Hvis du bruger det samme lasermodul som mig, the “-” går til GND, det S går til pin 12. Ændring af prøvekoden ovenfor for at gøre pin 12 til en output:
int laser = 12; pinMode (laser, OUTPUT);
Blink derefter tappen til og fra hver loop ved hjælp af standard digitalWrite () metode.
Vi bruger bare PWM til at drive piezo-summeren på et behageligt lydniveau - du kan eksperimentere med at bruge tonebiblioteket, hvis du ville, men en simpel støj er alt hvad jeg har brug for. Tilslut den sorte ledning til jorden og den røde ledning til pin 11. Definer din summer på den relevante pin, indstil til output mode og aktiver med analogWrite (summer, 100) (eller ethvert nummer, du vil have op til 254); og analogWrite (buzzer, 0) at slukke.
Den fulde prøvekode, der er ændret til at feje to servo, aktivere en laser og afspille den irriterende lyd, findes her.
Alle dine komponenter skal fungere - nu skal vi binde det hele sammen.
Oprettelse af tårnet
Ved hjælp af kabelbindere skal du sætte den ene servo til den anden; det betyder ikke noget, hvilken, bare sørg for, at den ene bevæger sig i vandret, og den anden bevæger sig lodret. Du kan trække rotorbladet af og sæde igen under test, hvis vinklen ikke er korrekt.
Brug en stiv modelleringstråd til at fastgøre lasermodulet på klingen på den anden servo, som sådan:
Til sidst knyttet jeg det hele til et bordben med endnu flere kabelbindere og lidt skrottræ.
Programmering af tårnet
Jeg ved ikke om dig, men min idé om en lasertårn kommer fra utallige antal sci-fi-film og star trek-episoder. Uundgåeligt vil nogen flyve forbi en tårn og lidt pew-pew skud vil flyve ud i et fejerende mønster, altid millisekunder for langsomt, så vores hovedperson ikke rent faktisk bliver ramt. Det er det, jeg prøver at gentage, selvom du er velkommen til at finpusse hovedrutinen, så den passer til din idé om, hvad en tårn skal gøre.
Her er pseudokoden, som jeg sluttede med til hovedsløjfen:
- Tilfældig tid mellem bursts og tid mellem hvert enkelt skud.
- Tilfældig start- og slutposition for hver servo, vert og hori.
- Tilfæld antallet af billeder, der skal tages.
- Træk antallet af grader af ændring efter hvert skud som forskellen mellem start- og slutpositioner divideret med antal skud.
- Flyt servoerne til udgangspositionerne, og vent lidt på, at de kommer dertil (100ms)
- Slyng, indtil alle skud er taget, hver gang du flytter servos lidt som tidligere beregnet; bevæge sig og skyde, bevæge sig og skyde.
- Gentage.
Jeg tilføjede også en separat ild() metode til at strukturere koden lidt bedre. Juster intervallerne for alle tilfældig() funktioner til at fremskynde eller nedsætte hver parameter; eller øg antallet af skud for en mere danseklub-stemning. Rul ned for en video af koden, der er i funktion!
# inkluder Servo vert, hori; // oprette servo-objekt for at kontrollere et servo-int pos = 0; // variabel til at gemme servopositionen int laser = 12; int summer = 11; void setup () hori.attach (9); vert.attach (10); // fastgør servoen på pin 9 til servo-objektets pinMode (laser, OUTPUT); pinMode (buzzer, OUTPUT); void loop () int timeBetweenBursts = tilfældig (200.1000); int timeBetweenShots = tilfældig (50.200); int vertStart = tilfældig (1.180); int vertEnd = tilfældig (1.180); int horiStart = tilfældig (1.180); int horiEnd = tilfældig (1.180); int numShots = tilfældig (5,20); int vertChange = (vertEnd - vertStart) / numShots; // hvor meget der skal flyttes lodret akse efter hvert skud int horiChange = (horiEnd - horiStart) / numShots; vert.write (vertStart); // lad den komme til startposition først, vent lidt hori.write (horiStart); forsinkelse (100); for (int skud = 0; skud
I aktion
Jeg tror ikke, at der er en praktisk anvendelse til dette lille legetøj, men det er meget frygteligt sjovt, og der er en masse variabler, som du kan finjustere for at få den ønskede effekt. Måske kommer det godt med en hjemmelavet LEGO-film?