Bouw een Geautomatiseerde LEGO Star Wars Kanon met Arduino Uno
Onderdelen en benodigdheden
| Arduino UNO | × | 1 |
| SG90 Micro-servomotor | × | 4 |
| Draadbruggen (algemeen) | × | 1 |
| LEGO Star Wars Schietbare Kanon | × | 4 |
| Breadboard (algemeen) | × | 1 |
Nodige gereedschappen en machines
- Tape, Elektrisch - Elke tape is prima. Het hoeft zeker geen elektrisch tape te zijn.
Apps en online diensten
- Arduino IDE - Een programma dat Arduino-code draait op Mac, Windows en Linux apparaten.
Over dit project
Dit project gaat over het automatisch laten schieten van LEGO-kanonnen. Ik speel graag met LEGO's en gebruik graag Arduinos, dus besloot ik dit project in mijn vrije tijd te doen. De servomotoren, met hun armen bevestigd, draaien om en slaan de hefbel, waardoor de kanon afvuurt. Een geweldig eerste, tweede of derde project voor beginners!
Dit is een stap-voor-stap handleiding over hoe je het maakt.
Stap 1: De Hardware
Stap 1 Deel 1: Hardware Basis
Begin met 5V naar de positief geladen rij en GND naar de negatief geladen rij. Het ziet er zo uit -
Stap 1 Deel 2: Servo #1 aansluiten
De servo heeft drie draden - de oranje/gele (signaal) neemt een slot in de DIGITALE (PWM~) pinnen, de rode (voeding) gaat naar VIN (elke pin in de positieve rij), en de zwarte/bruine draad (GND) gaat naar de negatief geladen rij verbonden met de GND-pin op de Uno. De digitale pin die ik voor mijn eerste servo gebruikte is 7. Zo ziet het schema eruit wanneer de eerste servo aangesloten is -
Stap 1 Deel 3: De overige servo's aansluiten
Zodra je de knip hebt met de servo's, moeten de rest een fluitje van een cent zijn. Een ding om te onthouden: je moet consistent blijven met de digitale pinnen die je in de code aan je servo hebt gekoppeld.
Bijvoorbeeld, de code (onderaan de pagina te vinden) stelt:
secondCannon.attach(8);
Daarom moet de tweede servo verbonden zijn met digitale pin 8.
Op dezelfde manier moet de derde servo aan digitale pin 6 gekoppeld zijn, en de vierde aan digitale pin 9.
Deze kunnen echter veranderd worden naar elke gewenste volgorde. Zorg er alleen voor dat je zowel hardware als software aanpast voor consistentie, anders werkt de code niet.
Om met de meegeleverde code te draaien, moet het schema er zo uitzien:
Gefeliciteerd! Je hebt officieel het hardwaregedeelte van dit project voltooid.
Stap 2: De Software
Kopieer en plak nu de code onderaan de pagina in een Arduino-sketch, en upload hem. Zorg dat je de Servo-bibliotheek hebt voordat je de code uploadt, anders werkt het niet! Hieronder een stap-voor-stap uitleg van de code en wat het betekent bij het draaien van het programma.
#include <Servo.h> // Inclusie van de bibliotheek voor de servo's
Servo firstCannon; // Definiëren van de eerste kanon als servo
Servo secondCannon; // Definiëren van de tweede kanon als servo
Servo thirdCannon; // Definiëren van de derde kanon als servo
Servo fourthCannon; // Definiëren van de vierde kanon als servo
Deze code stelt de Servo.h bibliotheek in, die een fundamentele rol speelt in de code. Dit wordt getoond door de volgende regels, die de bibliotheek gebruiken om vier kanonnen te definiëren als servo's, of motoren die 180 graden kunnen draaien.
void setup() {
// Setup-code, of code die slechts één keer draait
Serial.begin(9600); // Start de seriële communicatie
Serial.println("Defend the Clones! Set up the defenses!") // Print iets in de Serial Monitor
firstCannon.attach(7); // Koppel digitale pin 7 aan eerste kanon
secondCannon.attach(8); // Koppel digitale pin 8 aan tweede kanon
thirdCannon.attach(6); // Koppel digitale pin 6 aan derde kanon
fourthCannon.attach(9); // Koppel digitale pin 9 aan vierde kanon
}
De void setup() code wordt in bijna elk Arduino-project gebruikt, en het is code die slechts één keer draait. In dit geval starten we de seriële communicatie op 9600 baud. Daarna printen we dingen in de Serial Monitor. Om de servo's te programmeren, moeten we hun namen koppelen aan hun respectievelijke digitale pinnen. Dit is het doel van de .attach() code.
void loop() {
// Loop-code, of code die oneindig vaak draait
Serial.println("Beginning firing sequence") // Print iets in de Serial Monitor
firstCannon.write(180); // Draai de eerste servo 180 graden, eerste kanon afvuren
delay(100); // Wacht 1/10 seconde
firstCannon.write(0); // Draai servo terug naar oorspronkelijke positie voor herladen
delay(1000); // Wacht 1 seconde
secondCannon.write(180); // Draai tweede servo 180 graden, tweede kanon afvuren
delay(100); // Wacht 1/10 seconde
secondCannon.write(0); // Draai servo terug naar oorspronkelijke positie voor herladen
delay(1000); // Wacht 1 seconde
thirdCannon.write(180); // Draai derde servo 180 graden, derde kanon afvuren
delay(100); // Wacht 1/10 seconde
thirdCannon.write(0); // Draai servo terug naar oorspronkelijke positie voor herladen
delay(1000); // Wacht 1 seconde
fourthCannon.write(180); // Draai vierde servo 180 graden, vierde kanon afvuren
delay(100); // Wacht 1/10 seconde
fourthCannon.write(0); // Draai servo terug naar oorspronkelijke positie voor herladen
delay(1000); // Wacht 1 seconde
Serial.println("All cannons fired");
Serial.println("Prepare for reload");
delay(10000);
Serial.println("Reloading Complete. Preparing to fire again")
}
Dit is het laatste stuk code, dat de void loop() functie gebruikt die de volgende code oneindig vaak laat draaien. Dan printen we in de Serial Monitor dat de kanonnen gaan vuuren. De servo's voor elke kanon moeten 180 graden draaien, dan terug naar de oorspronkelijke positie, één voor één. Daarna moet er 10 seconden (herlaadtijd) gewacht worden tot het proces zich herhaalt.
Als je andere problemen hebt bij het uploaden van de code, kun je een reactie achterlaten in de commentaren en ik reageer zo snel mogelijk. Als het werkt, ga dan door naar de volgende stap.
Stap 3: Installatie
Draai de code. Kijk welke kant de servo op draait. Plak de servo op de LEGO-kanon zodat de baan een botsingskoers heeft met de hefbel bovenaan de kanon in de afbeelding hierboven.
Goed gedaan! Je hebt officieel dit project voltooid. Zoals gezegd, laat een reactie achter in de sectie hieronder als je vragen hebt.
Als je dit project leuk vond, check deze links -
- https://create.arduino.cc/projecthub/342600/basketball-hoop-with-buzzer-using-an-arduino-693bad?ref=user&ref_id=1536504&offset=1
- https://create.arduino.cc/projecthub/ShreyanR/soundbox-826a56
Code
- LEGO Kanon Schietcode
LEGO Kanon Schietcode C/C++
Plak dit in Arduino IDE
#include <Servo.h> //Including the library for the Servos
Servo firstCannon; //Defining the First Cannon as a Servo
Servo secondCannon; //Defining the Second Cannon as a Servo
Servo thirdCannon; //Defining the Third Cannon as a Servo
Servo fourthCannon; //Defining the Fourth Cannon as a Servo
void setup() {
//Setup code, or code that is only run once
Serial.begin(9600); //Start the Serial communication
Serial.println("Defend the Clones! Set up the defenses!") //Print something in the Serial Monitor
firstCannon.attach(7); //Attach Digital Pin 7 to First Cannon
secondCannon.attach(8); //Attach Digital Pin 8 to Second Cannon
thirdCannon.attach(6); //Attach Digital Pin 6 to Third Cannon
fourthCannon.attach(9); //Attach Digital Pin 9 to Fourth Cannon
}
void loop() {
//Loop code, or code that is run an infinite amount of times
Serial.println("Beginning firing sequence") //Print something in the Serial Monitor
firstCannon.write(180); //Swerve the first servo 180 degrees, setting off the first cannon
delay(100); //Wait for 1/10 of a second
firstCannon.write(0); //Swerve the Servo back to original position in preparation for reload
delay(1000); //Wait for 1 second
secondCannon.write(180); //Swerve the second servo 180 degrees, setting off the second cannon
delay(100); //Wait for 1/10 of a second
secondCannon.write(0); //Swerve the Servo back to original position in preparation for reload
delay(1000); //Wait for 1 second
thirdCannon.write(180); //Swerve the third servo 180 degrees, setting off the third cannon
delay(100); //Wait for 1/10 of a second
thirdCannon.write(0); //Swerve the Servo back to original position in preparation for reload
delay(1000); //Wait for 1 second
fourthCannon.write(180); //Swerve the first fourth 180 degrees, setting off the fourth cannon
delay(100); //Wait for 1/10 of a second
fourthCannon.write(0); //Swerve the Servo back to original position in preparation for reload
delay(1000); //Wait for 1 second
Serial.println("All cannons fired");
Serial.println("Prepare for reload");
delay(10000);
Serial.println("Reloading Complete. Preparing to fire again")
}
Schema's
Productieproces
- Alleskunner tape: kracht, flexibiliteit en alledaags gebruik
- Cellofaan Tape: Geschiedenis, Productie en Milieueffect
- Bluetooth-gecontroleerde Arduino Spybot bouwen
- FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
- DIY Arduino TV-B-Gone: Universele TV-uit-schakelaar
- Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
- Een reusachtige Lego-minifiguur animatronics Operation-spel bouwen met Arduino
- Find Me: Slimme Item Locator met Arduino en Bluetooth
- SunGlass-BOT: Slimme Zonnebril Die Zichzelf Aanpast Aan Licht
- Geoptimaliseerde Voedingsoplossingen voor Arduino Projecten
- Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing