Lav et Buzz Wire-spil med en Arduino

  • Owen Little
  • 0
  • 3423
  • 521
Reklame

I dette sjove projekt lærer vi, hvordan man laver et buzz wire-spil med Arduino. Mange af de nødvendige dele findes i et startkit (hvad findes i et startkit Hvad er der inkluderet i et Arduino Starter Kit? [MakeUseOf Explains] Hvad er inkluderet i et Arduino Starter Kit? [MakeUseOf Explains] Jeg har tidligere introduceret Arduino open- kildehardware her på MakeUseOf, men du har brug for mere end bare den faktiske Arduino for at bygge noget ud af det og faktisk komme i gang. Arduino "starter sæt" er ...?) og omkring huset. Dette projekt bruger en Arduino, selvom du kunne bruge næsten en hvilken som helst mikrokontroller, du har rundt (se på denne sammenligning mellem $ 5 mikrokontrollere $ 5 Mikrocontrollere: Arduino, Raspberry Pi Zero, eller NodeMCU? $ 5 Microcontrollers: Arduino, Raspberry Pi Zero, or NodeMCU? Det plejede at være tilfældet, at hvis du ønskede at få en computer, skulle du remortgage dit hus for at betale for det. Nu kan du få en til en Abraham Lincoln. For noget inspiration).

Tjek slutresultatet - det spiller endda musik:

Hvad du har brug for

Her er de vigtigste dele, du har brug for for at gennemføre dette projekt:

  • 1 x Arduino UNO eller lignende.
  • 1 x metalbelægningsophæng.
  • 2 x 220 ohm-modstande.
  • 1 x Breadboard.
  • 1 x Piezo summer.
  • 2 x krokodilleklip.
  • Assorteret varmekrympeslange.
  • Han-til-mand tilslutningsledninger.

Her er nogle valgfri dele til forbedring af bygningen:

  • 1 x Ekstra piezo-summer.
  • 1 x Dowel rod.
  • 1 x Quad syv segment display.
  • 1 x 220 ohm modstand.
  • 1 x øjeblikkelig knap.
  • Han-til-kvindelige tilslutningsledninger.
  • Træplade (til sag).
  • Assorterede treskruer.

Næsten enhver Arduino fungerer, forudsat at den har nok stifter. Se på denne købsguide Arduino Købsguide: Hvilket bord skal du få? Arduino Købsvejledning: Hvilket bord skal du få? Der er så mange forskellige slags Arduino-tavler derude, du vil blive tilgitt for at blive forvirret. Hvilket skal du købe til dit projekt? Lad os hjælpe med denne Arduino-købsguide! hvis du ikke er sikker på, hvad du har brug for.

Byggeplanen

Selvom dette kan se kompliceret ud, er det faktisk et ganske enkelt projekt. Jeg starter med det grundlæggende spil og tilføjer derefter yderligere komponenter for at øge kompleksiteten. Du kan “vælg og vælg” som du vil, afhængigt af de komponenter, du har til rådighed.

Kernemekanikeren består af en trådform og en løkke på et håndtag. Spilleren skal lede løkken rundt om banen uden at de to rører hinanden. Hvis de to berører, er kredsløbet afsluttet, og summeren lyder. Det er selvfølgelig muligt at bygge dette kredsløb ved hjælp af ingen mikrocontroller, men hvor er det sjove i det (og hvordan ellers ville du komme til at lytte til Monty Pythons “Flying Circus” kendingsmelodi)?

Kurset

Dette er den form, som spilleren bliver nødt til at lede deres loop rundt. Det er grundlaget for hele spillet, så gør det godt! Jeg valgte at have et lille fald efterfulgt af en stor stigning. Bøj en metalbelægningsophæng til den form, du har brug for. Messingtråd eller kobberrør fungerer lige så godt, selvom en frakkehænger muligvis er den billigste.

Du skal muligvis bære handsker og bruge en tang eller en hammer for at få tingene perfekte. Skær alt overskud af med boltskærer. Efterlad to lodrette lodrette linjer for at skubbe gennem basen. Du vil gerne arkivere klippeaggregaterne for sikkerhed. Skær til sidst to stykker varmekrympeslange og placer over enderne som følger:

Dette isolerer løkken fra banen og giver en start / ende eller en sikkerhedszone. Alternativt gør tape eller endda et halm, hvis du ikke har noget varmekrympeslange.

Tilslut nu et kabel til den ene ende af kurset. Du har to muligheder her: Du kan enten lodde eller bruge en krokodilleklip. Et krokodilleklip er den lettere mulighed, men lodning er en mere pålidelig og langsigtet mulighed. Sørg for at “ru op” overfladen på pelsbøjlen først med sandpapir, og brug masser af flux. (Aldrig loddet før? Lær hvordan du her Lær hvordan man loddes med disse enkle tip og projekter Lær hvordan man loddes med disse enkle tip og projekter Er du lidt skræmt af tanken om et varmt jern og smeltet metal? Hvis du vil For at begynde at arbejde med elektronik skal du lære at lodde. Lad os hjælpe.)

Afhængig af størrelsen på det hul, du borer i basen på næste trin, skal du muligvis først føre kablet gennem monteringshullet. Brug af to ledninger, der er snoet sammen, øger holdbarheden:


Brug af en bore til at gøre dette hjælper meget:

Basen

Det er tid til at oprette basen. Dette tjener til at holde kursen i en lodret position samt give et sted at forankre elektronikken til. Jeg brugte nogle fyrretræer, selvom du kunne bruge, hvad du har i huset - endda en papkasse.

Skær tre stykker for at danne en “n” form. Skru (eller lim) disse tre stykker sammen. Husk først at bore et pilothul i sidestykkerne for at forhindre, at de splittes. Det kan være en god ide at sænke skruerne ned (især hvis du skal fylde og derefter male), og jeg kan varmt anbefale en nedsænk boremaskine. Hvis du ikke har et forsænkningsværktøj eller borehul, vil en bor med større diameter gøre susen.

Bor to huller langt nok fra hinanden til, at kursets ender kan sidde i. Forsænk undersiden klar til limning.

Håndtaget


Nu er det tid til at lave loop / controller. Drej et lille stykke af pelsbøjlen i den ene ende for at skabe en løkke med et lille metalhåndtag. Sørg for, at du arkiverer skåret kant, og dæk det derefter om nødvendigt med tape / skum.


Dette vil danne den anden halvdel af kredsløbet - når denne løkke berører banen, afslutter den kredsløbet (nøjagtigt som en switch). Lodde (eller brug en krokodilleklip) en anden ledning i bunden af ​​dette, nøjagtigt det samme som du gjorde tidligere på kurset.

Klip en lille længde med dyvel til det faktiske håndtag. Denne metalsløjfe sidder fast i dette håndtag. Hvis du ikke har nogen dyvel, kan du afrunde et stykke firkantet blødt træ ved hjælp af et bælte eller skivebånd (du kan også bruge sandpapir, men det vil tage lang tid).

Bor et hul gennem dette håndtag. Dette skal være stort nok til at passe metalsløjfen og ledningen igennem:


Dette er muligt at gøre på en søjlebor, selvom det er vanskeligt. En drejebænk vil gøre jobbet perfekt:

Ja, jeg er helt opmærksom på, at dette er en metal drejebænk (for alle interesserede, det er en Boley urmakebænk fra 1930'erne. Jeg tror, ​​det er en 3C, men jeg vil meget gerne høre fra dig, hvis du ved mere om det).

Du kan også bruge en kuglepen med midten fjernet.

Til sidst skal du bruge varm lim til at fastgøre kablet og løkken i håndtaget. Varm lim vil give en stærk (men ikke permanent) armatur, så den er perfekt til dette.

Efterbehandling

Indsæt wirekurset i hullerne i basen. Glem ikke at tilføje loop / controller først. Brug varm lim igen for at fastgøre banen til basen ved at udfylde de forsænkede huller på undersiden af ​​basen som følger:

Kredsløbet

Her er hele kredsløbet. Du behøver ikke at gøre din så kompleks som denne - læs videre, når vi nedbryder hver del.


Forbind først de to piezo-elementer til digitale stifter 10 og 11. Polariteten betyder ikke noget:


Du behøver ikke at bruge to piezoer - den eneste grund til, at jeg har gjort det, er at have en meget højere brumlyd, når ledningerne rører ved. Forbind den ene side til den digitale pin, og den anden til jorden.

Tilslut nu metalforløbet og håndtaget:


Igen, det betyder ikke noget, hvilken vej disse to er tilsluttet. Denne del af kredsløbet er nøjagtigt som en knap eller switch - afspilleren afslutter kredsløbet, når loopen berører banen. Sørg for, at du inkluderer begge modstande.

En modstand binder kredsløbet til jorden (kaldet en pull-down modstand), hvilket sikrer, at det ikke er tilfældet “flydende” (dette gør det muligt for Arduino at opdage kredsløb, der skifter). Den anden modstand beskytter Arduino. Når de to dele berører, går + 5V ind i den digitale pin. Hvis denne modstand ikke var til stede, ville der være en død kort - din computer kobler USB-stikket ud for at trække for meget strøm hvis du er heldig.

Tilslut signalledningen (lilla på diagrammet) til den digitale pin 9.

Tilslut derefter en trykknap til den digitale pin 2:

Tilslut tilsluttes syv-segmentet LED-display:


Denne særlige model er fra Seeed. Dette bruger en TM1637 til at drive fire skærme - det betyder, at der kun er behov for to digitale stifter. Opret forbindelse GND til Arduino jorden og VCC til Arduino + 5V. Opret forbindelse D10 til Arduino digital pin 13 og CLK til digital pin 12.

Koden

For at få dette projekt til at fungere har du brug for to yderligere filer. Den første kaldes pitches.h. Denne fil kortlægger blot notenavne til deres piezo-værdi. Dette gør det meget lettere at skrive en melodi, som du bare kan sige “NOTE_C3” hellere end “31”, for eksempel. Dette er i det offentlige rum og er tilgængeligt på Arduino-webstedet her. Følg instruktionerne for at oprette en ny fil, der kaldes pitches.h (alternativt indsæt koden i dit eksisterende script).

Dernæst har du brug for en metode til faktisk at spille noter / melodier på piezo. Denne kerne af Anthony DiGirolamo på Github indeholder den kode, du har brug for. Kopier alt imellem “tomt brummer” og “” og indsæt den i din hovedfil. Som reference er det her:

void buzz (int targetPin, lang frekvens, lang længde) / * Summereksempel-funktion af Rob Faludi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 * / lang forsinkelsesværdi = 1000000 / frekvens / 2; // beregne forsinkelsesværdien mellem overgange /// 1 sekunds værdi af mikrosekunder, divideret med frekvensen, derefter opdelt i halvdel, da // // der er to faser til hver cyklus lange numCykler = frekvens * længde / 1000; // beregne antallet af cyklusser for korrekt timing //// multiplicer frekvens, som virkelig er cyklusser pr. sekund, med antallet af sekunder til // // få det samlede antal cykler, der skal produceres for (lang i = 0; i < numCycles; i++) // for the calculated length of time… digitalWrite(targetPin,HIGH); // write the buzzer pin high to push out the diaphragm delayMicroseconds(delayValue); // wait for the calculated delay value digitalWrite(targetPin,LOW); // write the buzzer pin low to pull back the diaphragm delayMicroseconds(delayValue); // wait again for the calculated delay value  

Det sidste bibliotek, du har brug for, er at kontrollere visningen af ​​syv segmenter - du kan springe dette trin over, hvis du ikke bruger et. Dette bibliotek kaldes TM1637 og blev oprettet af Seeed, det samme firma, der oprettede drivertavlen.

Gå til Arduino IDE “Administrer biblioteker” (Skitse > Inkluder bibliotek > Administrer biblioteker). Dette bringer bibliotekschefen op. Tillad det et par sekunder at opdatere og søg derefter i øverste højre søgefelt “TM1637”. To biblioteker findes - du vil “TM1637” og ikke “TM1637Display”. Vælg og klik derefter på “installere”.

En sidste opgave med dette bibliotek - det er ikke komplet! Som det står, kan biblioteket kun vise tal 0-9 og bogstaver A-F. Hvis dette dækker alt, hvad du gerne vil have vist, kan du springe dette trin over. Hvis ikke, skal du ændre koden. Slap af! Dette er ikke så hårdt, som det lyder, og hvis du kan skrive kode ved hjælp af Arduino IDE, kan du gøre dette.

Åbn først din biblioteksmappe. Dette vil være i din Arduino-mappe. På Mac OS X er dette i / Brugere / Joe / Dokumenter / Arduino / Biblioteker. Åbn den kaldte mappe TM1637. Du skal redigere den kaldte fil TM1637.cpp - Du kan sikkert ignorere den anden fil med udvidelsen .h. Åbn denne fil i din foretrukne teksteditor (for mig, det er Sublime Text 3), Notepad eller Arduino IDE.

Rediger den tredje kodelinje fra dette:

statisk int8_t TubeTab [] = 0x3f, 0x06,0x5b, 0x4f, 0x66,0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77,0x7c, 0x39,0x5e, 0x79,0x71; // 0 ~ 9, A, b, C, d, E, F

Til dette:

statisk int8_t TubeTab [] = / * standardindstillinger * / 0x3f, // 0 0x06, // 1 0x5b, // 2 0x4f, // 3 0x66, // 4 0x6d, // 5 0x7d, // 6 0x07, / / 7 0x7f, // 8 0x6f, // 9 0x77, // A - 10 0x7c, // b - 11 0x39, // C - 12 0x5e, // d - 13 0x79, // E - - 14 0x71, // F - 15 / * yderligere * / 0x174, // h - 16 0x176, // H - 17 0x138, // L - 18 0x15, // M - 19 0x137, / / n - 20 0x73, // P - 21 0x67, // q - 22 0x131, // r - 23 0x78, // t - 24 0x240 // - 25;

Du kan nu gemme og lukke denne fil. Efter hvert element beskriver kommentaren, hvilken karakter dette er. Den næste del af kommentaren er indekset for elementet.

Det er tid til den faktiske kode. Først skal du medtage de to tidligere nævnte biblioteker:

#include #include 

Opret nu visningsobjektet:

TM1637 * _display = ny TM1637 (12, 13);

Bare rolig, hvis du ikke forstår syntaksen - denne linje fortæller Arduino, at stifterne 12 og 13 er knyttet til en syv segmentskærm, og for at konfigurere den korrekt.

Sangen er gemt i melodi og tempo. Disse indeholder alle noterne og notens varighed for musikken. Hvis du gerne vil ændre musikken, skal du redigere disse arrays (skønt det ikke er så simpelt som at indsætte i noteværdierne, timing er en meget vigtig del af musikken). Det songState variabel gemmer simpelthen placeringen af ​​den sidst spillede note. Dette sikrer, at melodien spilles fra start til slut, snarere end at hoppe rundt inkonsekvent:

int sangState = 0; int melody [] = NOTE_F4, ... int tempo [] = 8, ...

Bemærk, at jeg har fjernet indholdet af arrays, se nedenfor for den fulde kode.

Denne kode blokeres ikke - det betyder, at Arduino kan udføre flere opgaver samtidig. Se på denne forklaring Arduino Delay-funktion, og hvorfor du ikke bør bruge den Arduino Delay-funktion, og hvorfor du ikke bør bruge den Mens forsinkelse () er praktisk til grundlæggende demonstrationer af, hvordan Arduino fungerer, burde du virkelig ikke være bruger det i den virkelige verden. Her er hvorfor, og hvad du skal bruge i stedet. for mere information. Sådan konfigureres timerne:

usigneret længe tidligereMillis1 = 0; konst lang interval1 = 1500;

Variablen previousMillis1 opdateres på et senere tidspunkt for at gemme det aktuelle tidspunkt. Det interval1 variabel gemmer, hvor længe man skal vente mellem eksekvering af kode - i dette tilfælde 1,5 sekunder. Det er defineret som konst, hvilket betyder, at det er konstant og aldrig vil ændre sig - dette gør det muligt for Arduino at optimere koden yderligere.

Inde i Opsætning() funktion der er et par ting, der sker. Først er input og output konfigureret. Dette skal gøres, så Arduino ved, hvad der er forbundet med hver af sine stifter:

pinMode (9, INPUT); // opsætningskreds pinMode (10, OUTPUT); // setup summer 1 pinMode (11, OUTPUT); // setup buzzer 2 pinMode (2, INPUT); // opsætningsknap

Nu skal skærmen konfigureres:

_display-> set (5); // indstille lysstyrke _display-> punkt (falsk); // fjern kolon _display-> init (); // startvisning

Metoderne sæt, punkt, og i det er alle indeholdt i _Skærm objekt. I stedet for en prik, en markør (“->”) bruges til at få adgang til disse. Igen, skal du ikke bekymre dig om syntaksen (selvom, hvis du gerne vil lære mere, skal du slå C ++ Pointers op).

Hovedsløjfen har to spiltilstande: udfordring og gratis spil. Gratis spil giver spilleren mulighed for at spille et ubegrænset antal gange. Udfordringstilstand indstiller en timer i 20 sekunder ved hjælp af showCountdown metode. Den bruger knappen til at starte og stoppe timeren. i øjeblikket er den eneste måde at ændre spiltilstande på manuelt at redigere den kaldte variabel mode. Se om du kan tilføje en anden knap for at gøre dette og ændre koden korrekt.

Det summen metoden spiller de noter, der er givet til det. Dette bruges sammen med synge. Singmetoden går gennem hver note og spiller den. Denne metode kaldes regelmæssigt, selvom den kun spiller den næste note, når der er gået nok tid siden sidst spillede. Når sangen er nået til slut, nulstiller den sangen til vers 1 (sangstat = 14). Du kan indstille dette til nul for at starte sangen i begyndelsen, men grunden til at gøre dette er at springe introduktionen over. Introduktionen spilles en gang efter at Arduino er slået til, og derefter afspilles den ikke igen.

Det showFree og showPlay metoder skriv blot ordene “Ledig” og “SPILLE” til displayet. Bemærk, hvordan “r” i fri er små bogstaver, når alle de andre tegn er store. Dette er en af ​​begrænsningerne for syv segmentskærme. De kan ikke vise hvert bogstav i alfabetet, og nogle af de tegn, de kan vise, skal være i blandet bogstav.

Det toggleFreePlay metode blinker displayet imellem “LEDIG” og “SPILLE”. Igen gør det dette på en ikke-blokerende måde.

En anden nyttig metode er Vis nummer. Dette skriver et tal til de midterste to tegn på skærmen på denne måde:

Displayet er ikke smart nok til at vide, hvordan man viser et stort antal, det skal eksplicit fortælles, hvad man skal gøre. Denne metode bruger nogle enkle logikker til at vise det passende tal på hvert tegn.

Den endelige anvendte metode kaldes showCountdown. Dette starter en tæller ved 20 og reducerer den med et hvert sekund. Hvis dette når nul, brummer det tre gange for at indikere, at tiden er løbet ud.

Her er alt, hvad koden er sammensat:

#include // include displaybibliotek #include // include pitches TM1637 * _display = new TM1637 (12, 13); // Opret displayobjekt, 12 = CLK (ur), 13 = D10 (data) // musik int sangState = 0; int melody [] = NOTE_F4, NOTE_E4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_G3, NOTE_A3, NOTE_AS3, NOTE_A3, NOTE_G3, NOTE_C4, 0, NOTE_C4, NOTE_A3, NOTE_A3_ NOTE, 3 NOTE_C4, NOTE_C4, NOTE_A3, NOTE_AS3, NOTE_AS3, NOTE_AS3, NOTE_C4, NOTE_D4, 0, NOTE_AS3, NOTE_G3, NOTE_G3, NOTE_G3, NOTE_FS3, NOTE_G3, NOTE_E4, NOTE_D4, NOTE_D4, NOTE_AS3, NOTE_33 NOTE_C4, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_GS3, NOTE_A3, NOTE_A4, NOTE_F4, NOTE_F4, NOTE_C4, NOTE_B3, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_G4, 0, NOTE_G4, NOTE_E4, NOTE_G4, NOTE_4 Note NOTE_FS4, NOTE_G4, NOTE_C4, NOTE_B3, NOTE_C4, NOTE_B3, NOTE_C4, 0; intempo [] = 8, 16, 8, 16, 8, 16, 8, 16, 16, 16, 16, 8, 16, 8, 3, 12, 16, 16, 16, 8, 16, 8, 16, 8, 16, 8, 16, 8, 16, 4, 12, 12, 16, 16, 16, 8, 16, 8, 16, 8, 16, 8, 16, 8, 16, 4, 12, 12, 16, 16, 16, 8, 16, 8, 16, 8, 16, 8, 16, 8, 16, 4, 16, 12, 17, 17, 17, 8, 12, 17, 17, 17, 8, 16, 8, 16, 8, 16, 8, 1; // ikke-blokerende opsætning // gratis spil usigneret længe tidligereMillis1 = 0; // tidsord sidst ændret const lang interval1 = 1500; // interval mellem ændring af // musik usigneret længe tidligereMillis2 = 0; // tid sidst ændret const lang interval2 = 100; // interval mellem noter int displayStatus = 0; // holde styr på, hvad der vises int-tilstand = 0; // holde styr på spiltilstand - skift til 0 eller 1 for forskellige tilstande bool nedtælling = falsk; usigneret længe forrigeMillis3 = 0; // tid sidst ændret const lang interval3 = 1000; // interval mellem nedtællingsintælling = 20; // udfordringstilstand timer ugyldig opsætning () // læg din opsætningskode her for at køre en gang: pinMode (9, INPUT); // opsætningskreds pinMode (10, OUTPUT); // setup summer 1 pinMode (11, OUTPUT); // setup buzzer 2 pinMode (2, INPUT); // setup-knap _display-> sæt (5); // indstille lysstyrke _display-> punkt (falsk); // fjern kolon _display-> init (); // start display void loop () // læg din hovedkode her, for at køre gentagne gange: if (mode == 0) // Challenge mode if (digitalRead (2) == HIGH) forsinkelse (25); if (digitalRead (2) == HØJ) countdown = true; // stop nedtællingen andet nedtælling = falsk; // stop nedtællingen if (nedtælling) showCountdown (); // forhåndsnedtælling andet // gratis spil toggleFreePlay ();  if (digitalRead (10) == HIGH) forsinkelse (25); if (digitalRead (10) == HIGH) while (digitalRead (10) == HIGH) buzz (11, NOTE_B0, 1000/24);  ellers synger ();  void showCountdown () // nedtælling af den resterende tid, der ikke er signeret lang strømMillis = millis (); // aktuelle tid hvis (nuværendeMillis - forrigeMillis3> = interval3) forrigeMillis3 = nuværendeMillis; --tælle; showNumber (count); if (count == 0) // game over countdown = falsk; tælling = 20; // nulstil nedtælling // buzz 3 gange buzz (11, NOTE_B0, 1000/24); forsinkelse (100); brummer (11, NOTE_B0, 1000/24); forsinkelse (100); brummer (11, NOTE_B0, 1000/24);  ugyldigt showNummer (int-nummer) // vis numre (maks. 99) på displayet _display-> display (0, 25); // skriv - til segment 1 _display-> display (3, 25); // skriv - til segment 4 // skriv nummer til midten af ​​displayet hvis (nummer == 10) _display-> display (1,1); _display-> display (2,0);  ellers hvis (nummer> 9) _display-> display (1,1); int newVal = antal - 10; _display-> display (2, newVal);  andet _display-> display (1,0); _display-> display (2, nummer);  void toggleFreePlay () // rulle mellem ord uden at blokere usigneret lang strømMillis = millis (); // aktuelle tid hvis (nuværendeMillis - forrigeMølis1> = interval1) forrigeMølis1 = nuværendeMillis; if (displayStatus == 1) showPlay (); andet showFree ();  ugyldigt showPlay () // skriv "PLAY" til displayet _display-> display (0, 21); // skriv P til segment 1 _display-> display (1, 18); // skriv L til segment 2 _display-> display (2, 10); // skriv A til segment 3 _display-> display (3, 4); // skriv Y til segment 4 displayStatus = 2;  ugyldigt showFree () // skriv "Gratis" til displayet _display-> display (0, 15); // skriv F til segment 1 _display-> display (1, 23); // skriv r til segment 2 _display-> display (2, 14); // skriv E til segment 3 _display-> display (3, 14); // skriv E til segment 4 displayStatus = 1;  void buzz (int targetPin, lang frekvens, lang længde) / * Summereksempel-funktion af Rob Faludi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 * / lang forsinkelsesværdi = 1000000 / frekvens / 2; // beregne forsinkelsesværdien mellem overgange /// 1 sekunds værdi af mikrosekunder, divideret med frekvensen, derefter opdelt i halvdel, da // // der er to faser til hver cyklus lange numCykler = frekvens * længde / 1000; // beregne antallet af cyklusser for den korrekte timing //// multiplicer frekvens, som virkelig er cyklusser pr. sekund, med antallet af sekunder til // // få det samlede antal cykler, der skal produceres for (lang i = 0; i = interval2) previousMillis2 = currentMillis; int noteDuration = 1000 / tempo [sangState]; brummer (10, melodi [sangstat], noteDuration); int pauseBetweenNotes = noteDuration; forsinkelse (pauseBetweenNotes); // standse den tone, der spilles: brummer (10, 0, noteDuration); ++ songState; // start sang igen, hvis den er færdig, hvis (songState> 79) songState = 14; // spring intro

Gem denne fil som “buzzwire” (Fil> Gem som) og upload det derefter til dit bord (Fil> Upload). Hvis du ikke er sikker på, hvordan du uploader Arduino, eller den kode ser lidt skræmmende ud, kan du tage et kig på vores Arduino Beginners Guide Kom godt i gang med Arduino: En begynderguide Kom godt i gang med Arduino: En begynderguide Arduino er en open source elektronikprototypeplatform baseret på fleksibel, brugervenlig hardware og software. Det er beregnet til kunstnere, designere, hobbyister og enhver der er interesseret i at skabe interaktive objekter eller miljøer. . Alt sammen, skal du nu have dit eget buzz wire-spil - sejt!

Hvis du lavede noget cool efter at have læst dette, ville jeg meget gerne se - fortæl mig det i kommentarerne herunder!




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.