Geautomatiseerde Lego Shooter
Componenten en benodigdheden
| × | 1 | ||||
| × | 4 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 1 |
Benodigde gereedschappen en machines
|
Apps en online services
|
Over dit project
Dit project gaat over het automatisch laten schieten van Lego Cannons. Ik speel graag met lego's en ik gebruik graag Arduino's, dus besloot ik dit project in mijn vrije tijd te doen. De servomotoren, met hun hoorns eraan bevestigd, draaien rond, raken de hendel en schieten op het kanon. Een geweldig eerste, tweede of derde project voor beginners!
Dit is een stapsgewijze handleiding voor het maken ervan.
Stap 1:De hardware
Stap 1 Deel 1: Hardware Basis
Begin met 5V naar de positief geladen rij en GRND 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 gleuf in de DIGITAL (PWM ~), de rode (Power) gaat naar VIN (dat is een pin in de positieve rij), en de zwart/bruine draad (GRND) gaat naar de negatief geladen rij die is aangesloten op de GRND-pin op de Uno. De digitale pin die ik gebruikte voor mijn eerste servo is 7. Hier is hoe het schema eruit ziet wanneer de eerste servo is aangesloten -
Stap 1 Deel 3:De rest van de servo's aansluiten
Als je het eenmaal onder de knie hebt met de servo's, zou de rest een makkie moeten zijn. Een ding om op te merken is echter:je moet consistent blijven met de digitale pinnen die je met je servo in de code hebt bevestigd.
De code (die u onderaan de pagina kunt vinden), zegt bijvoorbeeld-
secondCannon.attach(8);
Daarom moet de tweede servo worden aangesloten op de digitale pin 8.
Op dezelfde manier moet de derde servo worden bevestigd aan de digitale pin 6 en de vierde aan de negende digitale pin.
Deze kunnen echter worden gewijzigd zodat ze in elke gewenste volgorde staan. Zorg ervoor dat u zowel hardware als software wijzigt voor consistentie, anders werkt de code niet.
Om te draaien met de code onderaan, dit is hoe het schema eruit zou moeten zien-
Gefeliciteerd! U hebt het hardwaregedeelte van dit project officieel voltooid.
Stap 2:De software
Kopieer en plak nu de code onderaan de pagina op een Arduino-schets en upload deze. Zorg ervoor dat je de Servo-bibliotheek hebt voordat je de code uploadt, anders werkt het niet! Hieronder vindt u een stapsgewijze handleiding waarin de code wordt uitgelegd en wat deze betekent wanneer u het programma uitvoert.
#include //Inclusief de bibliotheek voor de ServosServo firstCannon; // Het eerste kanon definiëren als een tweede kanon ServoServo; // Het tweede kanon definiëren als een ServoServo derde kanon; // Het derde kanon definiëren als een ServoServo vierde kanon; //Het vierde kanon definiëren als een servo
Deze code stelt de Servo.h
. in bibliotheek, die een fundamentele rol zal spelen in de code. Dit kan worden aangetoond door de volgende regels, waarbij de bibliotheek wordt gebruikt om vier kanonnen als servo's te definiëren, of motoren die 180 graden kunnen worden gedraaid.
void setup() { //Setup code, of code die maar één keer wordt uitgevoerd Serial.begin(9600); //Start de seriële communicatie Serial.println ("Verdedig de klonen! Stel de verdediging in!") // Drukt iets af in de seriële monitor firstCannon.attach(7); //Bevestig Digital Pin 7 aan First Cannon secondCannon.attach (8); //Bevestig Digital Pin 8 aan Second Cannon thirdCannon.attach (6); // Bevestig digitale pin 6 aan derde kanon, fourCannon.attach (9); //Bevestig digitale pin 9 aan vierde kanon}
De ongeldige setup()
code wordt gebruikt in bijna elk Arduino-project en het is code die maar één keer wordt uitgevoerd. In dit geval starten we de newline Serial Communication op 9600 baud. Vervolgens drukken we dingen af in de seriële monitor. Om de servo's te programmeren, moeten we hun namen verbinden met hun respectievelijke digitale pinnen. Dit is het doel van de .attach()
stukje code.
void loop() { //Loop-code, of code die een oneindig aantal keren wordt uitgevoerd Serial.println("Beginningsvolgorde") //Druk iets af in de seriële monitor firstCannon.write(180); // Zwenk de eerste servo 180 graden, waardoor de eerste kanonvertraging (100) wordt geactiveerd; //Wacht op 1/10 van een tweede firstCannon.write(0); // Zwaai de servo terug naar de oorspronkelijke positie ter voorbereiding op herlaadvertraging (1000); //Wacht 1 seconde secondeCannon.write (180); // Zwenk de tweede servo 180 graden, waardoor de tweede kanonvertraging (100) wordt geactiveerd; //Wacht 1/10 van een seconde secondCannon.write(0); // Zwaai de servo terug naar de oorspronkelijke positie ter voorbereiding op herlaadvertraging (1000); //Wacht 1 seconde derdeCannon.write(180); // Zwenk de derde servo 180 graden, waardoor de derde kanonvertraging (100) wordt geactiveerd; //Wacht op 1/10 van een tweede derdeCannon.write(0); // Zwaai de servo terug naar de oorspronkelijke positie ter voorbereiding op herlaadvertraging (1000); //Wacht 1 seconde vierdeCannon.write (180); // Zwenk de eerste vierde 180 graden uit, waardoor de vierde kanonvertraging (100) wordt geactiveerd; //Wacht op 1/10 van een tweede vierdeCannon.write(0); // Zwaai de servo terug naar de oorspronkelijke positie ter voorbereiding op herlaadvertraging (1000); //Wacht 1 seconde Serial.println ("Alle kanonnen afgevuurd"); Serial.println("Bereid je voor op herladen"); vertraging (10000); Serial.println("Herladen voltooid. Voorbereiding om opnieuw te vuren")}
Dit is het laatste stukje code, met de void
loop()
functie waarmee de volgende code een oneindig aantal keren kan worden uitgevoerd. Dan printen we in de Serial Monitor dat de kanonnen op het punt staan te vuren. De servo's voor elk kanon moeten 180 graden draaien en vervolgens één voor één terugdraaien naar de oorspronkelijke positie. Daarna moet er 10 seconden (herlaadtijd) zijn voordat het proces zich opnieuw herhaalt.
Als je andere problemen hebt bij het uploaden van de code, kun je reageren in het opmerkingengedeelte en ik zal zo snel mogelijk reageren. Als het werkt, ga dan verder met de volgende stap.
Stap 3:Installatie
De laatste stap vereist de lego-kanonnen en wat ouderwetse gewone tape. Het legokanon ziet er zo uit -
Voer de code uit. Kijk in welke richting de servo draait. Plak de servo op het lego-kanon, zodat de baan hem op een ramkoers zet met de hendel bovenop het kanon in de afbeelding hierboven.
Goed gedaan! Je hebt dit project officieel afgerond. Zoals ik al zei, reageer in het onderstaande gedeelte als je vragen hebt.
Als je dit project leuk vond, bekijk dan 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 Gun Shooter-code
Lego Gun Shooter-codeC/C++
Plak dit in Arduino IDE#include//Inclusief de bibliotheek voor de ServosServo firstCannon; // Het eerste kanon definiëren als een tweede kanon ServoServo; // Het tweede kanon definiëren als een ServoServo derde kanon; // Het derde kanon definiëren als een ServoServo vierde kanon; // Het vierde kanon definiëren als een Servooid setup () { // Setup-code, of code die slechts eenmaal wordt uitgevoerd Serial.begin (9600); //Start de seriële communicatie Serial.println("Verdedig de klonen! Stel de verdediging in!") //Druk iets af in de seriële monitor firstCannon.attach(7); //Bevestig Digital Pin 7 aan First Cannon secondCannon.attach (8); //Bevestig Digital Pin 8 aan Second Cannon thirdCannon.attach (6); // Bevestig digitale pin 6 aan derde kanon, fourCannon.attach (9); //Bevestig Digital Pin 9 aan Fourth Cannon}void loop() { //Loop-code, of code die een oneindig aantal keren wordt uitgevoerd Serial.println("Begin afvuren") //Druk eerst iets af in de seriële monitor Cannon. schrijven(180); // Zwenk de eerste servo 180 graden, waardoor de eerste kanonvertraging (100) wordt geactiveerd; //Wacht op 1/10 van een tweede firstCannon.write(0); // Zwaai de servo terug naar de oorspronkelijke positie ter voorbereiding op herlaadvertraging (1000); //Wacht 1 seconde secondeCannon.write (180); // Zwenk de tweede servo 180 graden, waardoor de tweede kanonvertraging (100) wordt geactiveerd; //Wacht 1/10 van een seconde secondCannon.write(0); // Zwaai de servo terug naar de oorspronkelijke positie ter voorbereiding op herlaadvertraging (1000); //Wacht 1 seconde derdeCannon.write(180); // Zwenk de derde servo 180 graden, waardoor de derde kanonvertraging (100) wordt geactiveerd; //Wacht op 1/10 van een tweede derdeCannon.write(0); // Zwaai de servo terug naar de oorspronkelijke positie ter voorbereiding op herlaadvertraging (1000); //Wacht 1 seconde vierdeCannon.write (180); // Zwenk de eerste vierde 180 graden uit, waardoor de vierde kanonvertraging (100) wordt geactiveerd; //Wacht op 1/10 van een tweede vierdeCannon.write(0); // Zwaai de servo terug naar de oorspronkelijke positie ter voorbereiding op herlaadvertraging (1000); //Wacht 1 seconde Serial.println ("Alle kanonnen afgevuurd"); Serial.println("Bereid je voor op herladen"); vertraging (10000); Serial.println("Herladen voltooid. Voorbereiding om opnieuw te vuren")}
Schema's
Productieproces