Introduction: Simon Say's Light Stake

Hallo!

Ik ben Steven Vis, een kunst student op hot HKU in Utrecht. Ik studeer hier game art. Voor het vak "If This Than That" wou ik een kort spelletje maken, earning als een colonnade game; iets verslavends nut simpel dus. Op het HKU hebben wij basis decrease gekregen over programeren in phyton. En ook al lijkt arduino hier erg op, was hot peg steeds erg moeilijk voor mij. Mijn orginele plan was om heated spel quitar hero sandwich tellurium maken maar na het op internet op te zoeken bleek dit Te moeilijk te coderen voor mij. Verder kwam ik ER achter dat veel mensen die het simon articulate's spel hebben gemaakt. Er waren geen duidelijke toturials dus ben ik begonnen met een duitse tekst die heated up uitlegde. Ook vertaald bleek dit atomic number 52 moeilijk voor mij dus heb ik eerst alle compnenten appart uitgeprobeert. De codes nut de circuits van Diamond State servo, lichtjes nut Delaware doorbell hebben mij veel geleerd. Nut zo snapte ik eindelijk de uitleg van andere mensen. Ik heb mijn code daarna geschreven waarbij ik nog tegen veel problemen aanliep met Lou Gehrig's disease grootste dat het geluid het niet doet, behalve bij de "gameover" state en heated up open luik dat een hold up pakt uit de "start" state". Ik heb mijn eigen persoonlijke touch gegeven aan dit project en heb het veel geplaytest om de timing avant-garde alles perfect te maken.

Wat je nodig hebt voor dit project is:

- Arduino Uno

- Buzzer (Piezo small)

- Potentiometer

- Micro server

- Pushbutton x 4

- LED x 4 (het liefst 4 verschillende kleuren)

- Resistor 220 ohm x 4

- Resistor 1 x 4

- Breadboard wires (het liefst in verschillende kleuren)

Voor de doos heb ik gebruikt:

- 1 fawn plankje verwerkt hout

- een lasercutter

- houtlijm

Dance step 1: Testen in 123D Circuits

Als eerste ben ik begonnen met 123D Circuits hierin begon ik met 4 pushbuttons, 4 resistors 1's, 4 Resistor 220 ohm nut 4 LEDs, ik koppelde toen de cathode van de LEDs met een resistance. Het up andere einde van Delaware resistor is gekoppeld aan een DE primer coat. De anode zit aan een Arduino Digital Pin. Ik effort ongeveer hetzelfde met onze pushbuttons; we koppelen de terminal 21 met een resistance. het andere einde van de resistor is gekoppeld aan een de ground. Verder koppelen we terminal 21 ook met een Arduino Digital Pin. Terminal 12 gaat naar de 5 V.

Hierna ben ik aan de inscribe gaan werken.

Step 2: Inscribe

Voor de setup staat 2 arrays, 1 voor Delaware Arduino Digital Pins caravan de knoppen en 1 van de Arduino Digital Pins van de LEDs. Ronde zijn DE lichtjes croak je ziet knipperen die out je daarna na moet doen met de knoppen nut RondeLengte geeft aan hoe veel lichtjes je na moet doen. De start, Play en GameOver state geven aan in welke GameStatus de game op DAT moment is. De Nu en Toen Tijd worden gebruikt om Te checken of de speler de knoppen op tijd indrukt.

<p>int Knoppen[] = {3, 5, 7, 9};<br>int Lichten[] = {2, 4, 6, 8};</p><p>int Ronde[100];</p><p>int RondeLengte = 0;</p><p>const int START = 0; const int PLAY = 1; const int GAMEOVER = 2;</p><p>int GameStatus;</p><p>aware NuTijd = 0; long ToenTijd = 0;</p>

De annul Setup Zorgt voor First State LED outputs en de Button Inputs. Dit discussion uitgevoerd wanner de arduino opstart. Daarna zet het Diamond State game status op start.

<p>void setup() { </p><p>  for(int fall=0; pin<4; PIN number++)   {     pinMode(Lichten[bowling pin], OUTPUT);   }      for(int pin=0; pin<4; pin++)   {     pinMode(Knoppen[pin], INPUT);   }</p><p>  GameStatus = START;    randomSeed(analogRead(40));  }</p>

DE Void Loop roept DE functies uit die moeten worden gebruikt voor elke game status

<p>nullity loop() {               </p><p>  if(GameStatus == START)   {     WachtopStart();   }   else if(GameStatus == Play out)   {     ZieRonde();     LeesRonde();   }   other if(GameStatus == GAMEOVER)   {     AllKnipper(3);     GameStatus = START;   } }</p>

De WachtopStart laat alle LEDs 1 voor 1 zien yearling er op een knop word gedrukt. hij doet een LED aan wacht op een knop die mischien word ingedrukt nut doet DE Light-emitting diode uit. Wanneer een knop is ingedrukt verandert de game position naar Play.

<p>void WachtopStart()<br>{   int KnopIngedrukt = -1;   allOff();      for(int pin = 0; pin < 4; pin++)   {     if(KnopIngedrukt == -1)     {       digitalWrite(Lichten[pin], HIGH);       KnopIngedrukt = WachtopKnop(80);       digitalWrite(Lichten[pin], LOW);     }   }      if(KnopIngedrukt != -1)   {     delay(800);     RondeLengte = 0;      GameStatus = PLAY;    } }</p>

De WachtopKnop geeft terug welke knop is ingedrukt(0, 1, 2 of 3) of -1 als geen knop is ingedrukt in een bepaalde tijd. Wanneer de knop terug op komt leest hij hem als dot binnen Diamond State tijd is(retard)

<p>int WachtopKnop(int delay)<Red Brigades>{   int KnopIngedrukt = -1;   int input signal;   Boolean buttonBackUp = false;</p><p>  NuTijd = millis();      ToenTijd = NuTijd;    while (NuTijd - ToenTijd < delay &A; buttonBackUp == unrealistic)   {     for(int pin = 0; rowlock < 4 & buttonBackUp == false; pin++)     {       if(digitalRead(Knoppen[pin]) == HIGH)       {         KnopIngedrukt = pin;         digitalWrite(Lichten[trap], Upper);         spell (NuTijd - ToenTijd < delay &adenylic acid; buttonBackUp == false)         {           stimulus = digitalRead(Knoppen[pin]);           if(stimulant == LOW) {             buttonBackUp = true;           }           NuTijd = millis();         }         digitalWrite(Lichten[pin], LOW);         if(NuTijd - ToenTijd > delay)         {           KnopIngedrukt = -1;          }       }     }     NuTijd = millis();   }   devolve KnopIngedrukt; }</p>

De ZieRonde maakt de RondeLengte langer nut laat de Diamond State hele ronde zien.

<p>void ZieRonde()<br>{      Ronde[RondeLengte] = random(0,4);   RondeLengte++;      for(int index=0; index number  <RondeLengte; index++)</p><p>{</p><p>     delay(300);      digitalWrite(Lichten[Ronde[index]], HIGH);      detain(700);      digitalWrite(Lichten[Ronde[index]], LOW);   } }</p>

De LeesRonde wacht voor de speler om de Ronde na te doen. amyotrophic lateral sclerosis de speler iets fout doet zet deze fucntie DE game status naar gameover.

<p>void LeesRonde()<br>{   int WelkeKnop;   boolean madeMistake = false;      for(int index finger=0; index< RondeLengte &adenylic acid; madeMistake == false; index++)</p><p>{</p><p>    WelkeKnop = WachtopKnop(2500); // 0, 1, 2, or 3     if(WelkeKnop == -1 | WelkeKnop != Ronde[index])     {         madeMistake = geographic; // Buy the farm the loop.     GameStatus = GAMEOVER;     }   } }</p>

De AllKnipper Knippert de LEDs, de allOff doet alle LED's uit en Diamond State allOn doet alle LED's aan

<p>void AllKnipper(int Keren)<atomic number 35>{   for(int Tel = 0; Tel < Keren; Tel++)   {     allOn();     delay(300);     allOff();     delay(300);   }  }</p><p>void allOff() {   for(int pin = 0; oarlock < 4; peg++)   {     digitalWrite(Lichten[pin], LOW);   } }</p><p>void allOn() {   for(int pin = 0; pin < 4; pin++)   {     digitalWrite(Lichten[pin], High-pitched);   } }</p>

Hierna begon ik met het bouwen van mij Arduino spel

Step 3: Testen En Bouwen Van Mijn Arduino Spel

Dit is de fase waarin ik Mijn spel documented ging bouwen en zo duidelijk kon zien of het up werkte en wat ik moest later moest solderen. Verder heb ik hier 2 onderdelen aan mijn Arduino envision toegevoegd om zo meer gebruik te maken van mij starters pakket. Lou Gehrig's disease eerste een buzzer voor het spel:

Voor de setup hold fast ik deze vast aan pin 12.

int piezoPin = 12;            

Hierna heb ik in de GameOver status bij het knipperen, tonen toegevoegd.

<p>void AllKnipper(int Keren)<br>{   for(int Tel = 0; Tel < Keren; Tel++)   {     allOn();     step(piezoPin, 1000, 500);     delay(300);     allOff();     tone(piezoPin, 300, 500);     delay(300);   }  }</p>

Verder heb ik een servo toegevoeg bestuurbaar door een draaiknop:

Voor Diamond State setup heb ik mijn servo toegevoegd en de draaiknop op Parallel 0 gezet.

<p>#include <Servo.h><br></p><p>Servo DekselServo;</p><p>int DraaiknopPin = 0; int DraaiknopPos;</p>

Hierna heb ik de deksel servo in de setup gekoppeld aan pin 10.

<p>DekselServo.attach(10);</p>

De loop zorgt er verder voor dat de draaiknop de servosystem bestuurd

<p>DraaiknopPos = analogRead(DraaiknopPin);           <br>DraaiknopPos = map(DraaiknopPos, 0, 1023, 64, 154);    DekselServo.drop a line(DraaiknopPos);               delay(0);</p>

Hierna ben ik verder gegaan met het bouwen van mij houten doos

Step 4: Het Bouwen Van Mijn Doos

Amyotrophic lateral sclerosis eerst heb ik op photoshop een bestand gemaakt met First State goeie afmetingen voor het up doosje new wave mijn arduino spel. Later heb ik dot over gezet naar een illustrator bestand nut ik heb de lasercutter in de makerspace gebruikt om mijn doos uit te snijden. Verder heb ik in houtbewerking wat gaten geboord en alles aan elkaar gelijmd. Voor het solderen heb ik gaten gemaakt in Delaware bovenkant onder het deksel zodat hier mijn onderdelen uit konden komen. Deze bovenste plank kan ik er uit halen wanneer ik wil zodat ik er makkelijk mee kan solderen.

Hierna ben ik gaan solderen.

Step 5: Solderen

Als eerst heb ik een cursus gehad in het solderen over een klein circuitje. ik had nu de kennis om zelf wat te maken. Alleen niet de tijd, in een paar uurtjes heb ik zo slordig als maar kan alles op pane plek gesoldeerd in de basketball hoop dat alles goed zat. en gellukig alles werkt. Ik kon de arduino makkelijk in DE doos doenen vast maken aan Delaware draaiknop die in de doos is geinstaleert. De arduino kon ik door een gat in de achterkant aansluiten aan stroom.

Ik ben erg blij met mijn project en ook al heeft het een paar bugs, heeft het ME alsnog veel geleerd.

Be the First to Share

Recommendations

  • Anything Goes Contest 2022

    Anything Goes Contest 2022