Faceți un joc Buzz cu un arduino

Faceți un joc Buzz cu un arduino / DIY

În acest proiect distractiv, vom învăța cum să faci un joc de sârmă cu Arduino. Multe dintre piesele necesare pot fi găsite într-un kit de pornire (ce se află într-un kit de pornire) Ce este inclus într-un kit de pornire Arduino? [MakeUseOf explică] Ce este inclus într-un kit de pornire Arduino? sursa de hardware aici, pe MakeUseOf, dar vei avea nevoie de ceva mai mult decat Arduino real pentru a construi ceva din ea si de fapt sa incepeti. Arduino "kituri de starter" sunt ... Read More?) si in jurul casei. Acest proiect utilizează un Arduino, deși ar putea fi folosit aproape orice microcontroler pe care îl aveți în jur (aruncați o privire la această comparație între microcontrolerele de $ 5 $ 5 Microcontrolere: Arduino, Zmeura Pi Zero sau NodeMCU? $ 5 Microcontrolere: Arduino, Zero Pi Zero sau NodeMCU? De obicei, dacă ați fi vrut să obțineți un computer, va trebui să vă retortați casa pentru a vă plăti. Acum, puteți obține unul pentru un Abraham Lincoln (Citiți mai mult pentru o inspirație).

Verificați rezultatul final - chiar redă muzică:

De ce ai nevoie

Iată părțile principale de care aveți nevoie pentru a finaliza acest proiect:

  • 1 x Arduino UNO sau similar.
  • 1 x suspendator metalic.
  • Rezistențe 2 x 220 ohmi.
  • 1 x Breadboard.
  • 1 buzzer piezo.
  • 2 x clipuri crocodil.
  • Tuburi asortate termocontractabile.
  • Cabluri de conectare de la bărbați până la bărbați.

Elenco TL-6 set de plumb aligator, 10 piese, 14 inchi Set de plumb Eligco TL-6, 10 piese, 14 inchi Cumpara acum la Amazon $ 5.59

Iată câteva părți opționale pentru a îmbunătăți construirea:

  • 1 x Buzzer piezo suplimentar.
  • 1 x tija de diblu.
  • 1 x Quad șapte segment display.
  • 1 x 220 ohm rezistor.
  • 1 x buton momentan.
  • Cabluri de conectare de la bărbați la femei.
  • Plăci din lemn (pentru caz).
  • Șuruburi asortate din lemn.

Aproape orice Arduino va lucra, cu condiția să aibă suficienți pini. Arduino Ghid de cumpărare: Care ar trebui să obțineți? Arduino Ghidul de cumpărare: care ar trebui să obțineți? Există atât de multe feluri de plăci de arduino, acolo vei fi iertat că ești confuz. Care ar trebui să cumpărați pentru proiectul dvs.? Să ne ajute, cu acest ghid de cumpărare Arduino! Citiți mai multe dacă nu sunteți sigur de ce aveți nevoie.

Planul de construire

Deși acest lucru poate părea complex, este de fapt un proiect simplu. Voi începe cu jocul de bază și apoi adăugați componente suplimentare pentru a crește complexitatea. Poti “alegeți și alegeți” după cum doriți, în funcție de componentele pe care le aveți la dispoziție.

Mecanica de bază constă dintr-o formă de sârmă și o buclă pe un mâner. Jucătorul trebuie să ghideze bucla în jurul cursului fără ca cei doi să atingă. Dacă cele două atingeți, circuitul este terminat și sună semnalul sonor. Este, desigur, posibil să construiți acest circuit folosind nici un microcontroler, dar unde este distractiv în asta (și cum altfel ați putea să ascultați Monty Python's “Circul de zbor” piesă tematică)?

Cursul

Aceasta este forma pe care jucătorul va trebui să-i ghideze. Este baza întregului joc, deci fă bine! Am ales să am o picătură mică, urmată de o urcare mare. Îndoiți un cuier metalic în forma dorită. Sârmă din alamă sau din tub de cupru va funcționa la fel de bine, deși un cuier poate fi cel mai ieftin.

Este posibil să aveți nevoie să purtați mănuși și să folosiți clești sau un ciocan pentru a face lucrurile perfecte. Tăiați orice exces cu tăietori de șuruburi. Lăsați două verticale verticale pentru a împinge baza. În felul în care doriți să depuneți capetele tăiate pentru siguranță. În cele din urmă, tăiați două bucăți de tuburi termocontractabile și puneți-le peste capete după cum urmează:

Aceasta va izola circuitul din curs, asigurând o zonă de început / sfârșit sau siguranță. Alternativ, o bandă sau chiar o paie va face dacă nu aveți tuburi termocontractabile.

Acum atașați un cablu la un capăt a cursului. Aveți două opțiuni aici: fie puteți lipi, fie puteți folosi un clip de crocodil. Un clip de crocodil este opțiunea mai ușoară, dar lipirea este o opțiune mai fiabilă și pe termen lung. Asigura-te ca “urcă” suprafața cuierului de haină mai întâi cu șmirghel și folosiți o cantitate mare de flux. (Nu lipiți niciodată înainte? Aflați cum să învățați aici Cum să lipiți cu aceste sfaturi și proiecte simple Învățați cum să lipiți cu aceste sfaturi și proiecte simple Ești puțin intimidat de gândul unui fier fierbinte și a unui metal topit? pentru a începe să lucrați cu electronice, va trebui să învățați să lipiți.

În funcție de mărimea orificiului pe care îl găuriți în bază în pasul următor, este posibil să fie necesar să introduceți mai întâi cablul prin orificiul de montare. Utilizarea a două fire răsucite împreună va crește durabilitatea:


Folosind un burghiu pentru a face acest lucru ajută foarte mult:

Baza

Este timpul să creați baza. Acest lucru servește pentru a menține cursul într-o poziție verticală, precum și pentru a oferi un loc pentru a ancora dispozitivele electronice. Am folosit niște veneți de pin, deși ai putea folosi tot ce ai în jurul casei - chiar și o cutie de carton.

Taie trei piese pentru a forma un “n” formă. Pur și simplu înșurubați (sau lipiți) aceste trei piese împreună. Amintiți-vă mai întâi să găuriți o gaură pilot în piesele laterale pentru a împiedica despicarea acestora. S-ar putea să doriți să țineți conturul șuruburilor (mai ales dacă veți fi umplut și apoi să pictați) și recomand foarte mult un burghiu de găurire. Dacă nu aveți o sculă sau o gaură de găurit, un burghiu cu diametru mai mare va face truc.

Trageți două găuri suficient de îndepărtate pentru ca capetele cursului să stea. Consemnați partea inferioară gata de lipire.

Mânerul


Acum este timpul să faceți buclă / controler. Rotiți o bucată mică de cuier la un capăt pentru a crea o buclă cu un mâner mic de metal. Asigurați-vă că ați depus marginea tăiată și apoi acoperiți-o cu bandă / spumă, dacă este necesar.


Aceasta va forma cealaltă jumătate a circuitului - când această bucla atinge cursul, va termina circuitul (exact ca un comutator). Lipiți (sau utilizați un clip de crocodil) un alt fir în partea de jos a acestuia, exact la fel cum ați făcut anterior pentru curs.

Tăiați o mică lungime de diblu pentru mânerul real. Această buclă de metal se va introduce în acest mâner. Dacă nu aveți nici un diblu, puteți rotunji o bucată de lemn moale păstrăv folosind o mașină de șlefuit cu curea sau cu disc (puteți utiliza și șmirghel, dar ar dura mult timp).

Trageți o gaură prin acest mâner. Acest lucru trebuie să fie suficient de mare pentru a se potrivi bucla metalică și firul prin:


Acest lucru este posibil pentru a face pe o foraj pilon, deși este dificil. Un strung va face treaba perfect:

Da, sunt destul de conștient de faptul că este un strung metalic (pentru oricine interesat, este un strung Boley de ceasornicărie din anii 1930. Cred că e un 3C, dar mi-ar plăcea să aud de la tine dacă știi mai multe despre el).

De asemenea, puteți utiliza un pix cu centrul înlăturat.

În cele din urmă, utilizați un lipici fierbinte pentru a fixa cablul și bucla în mâner. Adezivul cald va oferi un dispozitiv puternic (dar nu permanent), deci este perfect pentru acest lucru.

Finalizarea opțiunii

Introduceți cursorul în găurile din bază. Nu uitați să adăugați mai întâi bucla / controlerul. Folosiți din nou un adeziv fierbinte pentru a fixa cursul la bază prin umplerea orificiilor găurite în partea inferioară a bazei, după cum urmează:

Circuitul

Iată circuitul complet. Nu trebuie să faceți așa de complexă ca asta - citiți mai departe pe măsură ce descompunem fiecare parte.


Mai întâi, conectați cele două elemente piezoelectrice la știfturile digitale 10 și 11. Polaritatea nu contează:


Nu trebuie să folosiți două piezuri - singurul motiv pentru care am făcut-o este să auzi un sunet mult mai puternic atunci când firele ating. Conectați o parte la pinul digital și celălalt la masă.

Acum conectați cursul de metal și mânerul:


Din nou, nu contează în ce direcție sunt conectate aceste două. Această parte a circuitului este exact ca un buton sau un comutator - jucătorul completează circuitul atunci când bucla atinge cursul. Asigurați-vă că includeți ambele rezistențe.

Un rezistor leagă circuitul la masă (numit rezistor pull-down), asigurându-se că nu este “plutitor” (acest lucru permite ca Arduino să detecteze modificarea circuitului). Celălalt rezistor protejează Arduino. Când atingeți cele două părți, + 5V intră în pinul digital. Dacă acest rezistor nu a fost prezent, ar exista un scurt mort - computerul dvs. ar deconecta soclul USB pentru a atrage prea mult curent dacă aveți noroc.

Conectați cablul de semnal (purpuriu, pe diagramă) la pinul digital 9.

Apoi, conectați un buton la pinul digital 2:

În cele din urmă, conectați ecranul LED cu șapte segmente:


Acest model particular este de la Seeed. Aceasta folosește un TM1637 pentru a conduce patru afișaje - aceasta înseamnă că sunt necesare numai două știfturi digitale. Conectați GND spre terenul Arduino și VCC la Arduino + 5V. Conectați D10 la pinul digital Arduino 13 și CLK la pinul digital 12.

Codul

Pentru a face acest proiect de lucru, veți avea nevoie de două fișiere suplimentare. Primul este numit pitches.h. Acest fișier simplu cartografiază numele de note la valoarea lor piezo. Acest lucru face mult mai ușor pentru a scrie o melodie, așa cum puteți spune pur și simplu “NOTE_C3” Decat “31”, de exemplu. Acesta este în domeniul public și este disponibil pe site-ul Arduino aici. Urmați instrucțiunile pentru a crea un nou fișier numit pitches.h (alternativ, inserați codul în scriptul dvs. existent).

Apoi, aveți nevoie de o metodă de a juca note / melodii pe piezo. Acest conținut al lui Anthony DiGirolamo pe Github conține codul de care aveți nevoie. Copiați totul între “void buzz” și “” și lipiți-o în fișierul principal. Pentru referință, aici este:

void buzz (int targetPin, frecvență lungă, lungime lungă) / * Buzzer exemplu exemplu de Rob Faludi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 * / long delayValue = 1000000 / frecvența / 2; // calcula valoarea întârzierii dintre tranziții //// 1 secundă în valoare de microsecunde, împărțită la frecvență, apoi împărțită în jumătate de la //// există două faze pentru fiecare ciclu lungi numCycles = frecvență * lungime / 1000; // calculul numărului de cicluri pentru calendarul corespunzător //// multiplicarea frecvenței, care este într-adevăr cicluri pe secundă, cu numărul de secunde pentru a obține //// numărul total de cicluri de produs pentru (lung 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  

Ultima bibliotecă de care aveți nevoie este pentru a controla afișarea pe șapte segmente - puteți trece peste acest pas dacă nu utilizați unul. Această bibliotecă este chemată TM1637 și a fost creat de Seeed, aceeași companie care a creat bordul șoferului.

În ID-ul Arduino, mergeți la “Gestionați bibliotecile” (Schiță > Includeți biblioteca > Gestionați bibliotecile). Acest lucru va aduce managerul bibliotecii. Permiteți-i să se actualizeze câteva secunde, apoi căutați în caseta de căutare din dreapta sus “TM1637”. Două biblioteci vor fi găsite - doriți “TM1637” si nu “TM1637Display”. Selectați și apoi faceți clic pe “instalare”.

O ultimă sarcină cu această bibliotecă - nu este completă! În prezent, biblioteca poate afișa numai cifrele 0-9 și literele A-F. Dacă aceasta acoperă tot ceea ce doriți să afișați, puteți trece peste acest pas. Dacă nu, va trebui să modificați codul. Relaxa! Acest lucru nu este la fel de greu ca suna, și dacă puteți scrie codul folosind IDE Arduino, puteți face acest lucru.

Mai întâi, deschideți dosarul bibliotecii. Acesta va fi în dosarul dvs. Arduino. Pe Mac OS X, acesta se află în / Users / Joe / Documente / Arduino / Biblioteci. Deschideți dosarul numit TM1637. Va trebui să editați fișierul numit TM1637.cpp - puteți ignora în siguranță celălalt fișier cu extensia .h. Deschideți acest fișier în editorul dvs. de text preferat (pentru mine, adică Sublime Text 3), Notepad sau Arduino IDE.

Modificați a treia linie de cod de la aceasta:

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

La acest:

static int8_t TubeTab [] = / * implicit * / 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 / * suplimentar * / 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;

Acum puteți salva și închide acest fișier. După fiecare element, comentariul descrie ce caracter este acesta. Următoarea parte a comentariului este indexul elementului.

E timpul pentru codul real. Mai întâi, includeți cele două biblioteci menționate anterior:

#include  #include 

Acum creați obiectul afișat:

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

Nu vă faceți griji dacă nu înțelegeți sintaxa - această linie spune Arduino că pinii 12 și 13 sunt atașați la un ecran cu șapte segmente și să-l configurați în mod corespunzător.

Cântecul este stocat în melodie și tempo. Acestea conțin toate notele și durata notei pentru muzică. Dacă doriți să schimbați muzica, modificați aceste tablouri (deși nu este la fel de simplă ca inserarea în note, timpul este o parte foarte importantă a muzicii). songState variabila stochează pur și simplu poziția ultimei note recepționate. Acest lucru asigură că melodia este redată de la început până la sfârșit, mai degrabă decât sărind în jurul inconsecvent:

int songState = 0; int melodia [] = NOTE_F4, ... int tempo [] = 8, ...

Rețineți că am eliminat conținutul matricelor, vedeți mai jos codul complet.

Acest cod nu este blocat - aceasta înseamnă că Arduino poate efectua simultan mai multe sarcini. Luați o privire la această explicație Funcția de întârziere Arduino și de ce nu ar trebui să o utilizați Funcția de întârziere Arduino și de ce nu ar trebui să o utilizați În timp ce întârzierea () este utilă pentru demonstrații de bază ale modului în care Arduino funcționează, folosind-o în lumea reală. Iată de ce și ce ar trebui să utilizați în schimb. Citiți mai multe pentru mai multe informații. Acesta este modul în care sunt configurate cronometrele:

nesemnate lung anteriorMillis1 = 0; const interval lung1 = 1500;

Variabila previousMillis1 va fi actualizat într-o etapă ulterioară pentru a stoca ora curentă. interval1 stocurile variabile cât timp să așteptați între execuția codului - în acest caz, 1,5 secunde. Acesta este definit ca const, ceea ce înseamnă că este constantă și nu se va schimba niciodată - aceasta permite Arduino să optimizeze în continuare codul.

În interiorul înființat() funcționează câteva lucruri care se întâmplă. În primul rând, intrările și ieșirile sunt configurate. Acest lucru trebuie facut, asa ca Arduino stie ce este conectat la fiecare pin:

pinMode (9, INPUT); // circuitul de configurare pinMode (10, OUTPUT); // configurare buzzer 1 pinMode (11, OUTPUT); // configurare buzzer 2 pinMode (2, INPUT); // butonul de configurare

Acum, afișajul trebuie să configureze:

_display-> set (5); // set luminozitate _display-> punct (false); // eliminati colonul _display-> init (); // începe afișarea

Metodele a stabilit, punct, și init sunt toate conținute în _afişa obiect. În loc de un punct, un pointer (“->”) este utilizat pentru accesarea acestora. Din nou, nu vă faceți griji cu privire la sintaxa (deși, dacă doriți să aflați mai multe, căutați C ++ Pointers).

Bucla principală are două moduri de joc: provocare și joc liber. Jocul gratuit permite jucătorului să joace un număr nelimitat de ori. Modul Challenge setează un cronometru timp de 20 de secunde utilizând funcția showCountdown metodă. Utilizează butonul pentru a porni și opri cronometrul. în prezent, singura modalitate de a schimba modurile de joc este de a edita manual variabila numită mod. Vedeți dacă puteți adăuga un alt buton pentru a face acest lucru și pentru a modifica codul corespunzător.

bâzâit metoda joacă notele date. Acest lucru este utilizat împreună cu cânta. Metoda de cântare trece prin fiecare notă și o joacă. Această metodă este numită în mod regulat, deși va juca următoarea notă după ce a trecut suficient timp de la ultima redare. Odată ce melodia a ajuns la sfârșit, se resetează melodia în versul 1 (songState = 14). Puteți seta acest lucru la zero pentru a începe melodia de la început, totuși motivul pentru a face acest lucru este de a sări peste introducere. Introducerea este redată o singură dată după ce Arduino a pornit și apoi nu este redat.

showFree și showPlay metode scrie pur și simplu cuvintele “Liber” și “JOACA” pe afișaj. Observați cum “r” în liber este mică, când toate celelalte caractere sunt majuscule. Aceasta este una dintre limitările afișărilor pe șapte segmente. Nu pot arăta fiecare literă a alfabetului, iar unele dintre personajele pe care le pot afișa trebuie să fie în caz mixt.

toggleFreePlay metoda intermitentă se afișează între “LIBER” și “JOACA”. Din nou, face acest lucru într-un mod non-blocant.

O altă metodă utilă este showNumber. Acest lucru scrie un număr la mijlocul a două caractere ale afișajului, astfel:

Afișajul nu este suficient de inteligent pentru a ști cum să arătați numere mari, trebuie spus în mod explicit ce să faceți. Această metodă utilizează o anumită logică simplă pentru a afișa numărul corespunzător pentru fiecare caracter.

Se numește metoda finală utilizată showCountdown. Aceasta începe un contor la 20, și o scade cu câte o secundă. Dacă atinge zero, buzzes-ul de trei ori, pentru a indica că timpul a dispărut.

Iată tot codul pus împreună:

#include  // include biblioteca de afișare #include  // include smochinele TM1637 * _display = noi TM1637 (12, 13); // creați obiect afișat, 12 = CLK (ceas), 13 = D10 (date) // music int songState = 0; int melodie [] = NOTĂ_F4, NOTĂ_E4, NOTĂ_D4, NOTĂ_CS4, NOTĂ_C4, NOTĂ_B3, NOTĂ_AS3, NOTĂ_A3, NOTĂ_G3, NOTĂ_A3, NOTE_AS3, NOTE_A3, NOTE_G3, NOTE_C4, 0, NOTE_C4, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_GS3, NOTE_A3, NOTE_F4, NOTĂ_C4, NOTĂ_C4, NOTĂ_A3, NOTĂ_AS3, NOTĂ_AS3, NOTĂ_AS3, NOTĂ_C4, NOTĂ_D4, 0, NOTE_AS3, NOTĂ_G3, NOTĂ_G3, NOTE_G3, NOTE_FS3, NOTE_G3, NOTE_E4, NOTE_D4, NOTE_D4, NOTE_AS3, NOTE_A3, NOTE_A3, NOTE_A3, NOTE_AS3, NOTE_C4, NOTĂ_C4, NOTĂ_A3, NOTĂ_A3, NOTĂ_A3, NOTĂ_GS3, NOTĂ_A3, NOTĂ_A4, NOTĂ_F4, NOTĂ_F4, NOTĂ_C4, NOTĂ_B3, NOTĂ_G4, NOTĂ_G4, NOTE_G4, NOTE_G4, 0, NOTE_G4, NOTE_E4, NOTE_G4, NOTE_G4, NOTE_FS4, NOTE_G4, NOTE_D4, NOTE_G4, NOTE_G4, NOTE_FS4, NOTĂ_G4, NOTĂ_C4, NOTĂ_B3, NOTĂ_C4, NOTĂ_B3, NOTĂ_C4, 0; int tempo [] = 8, 16, 8, 16, 8, 16, 8, 16, 16, 16, 16, 8, 16, 8, 16, 8, 16, 4, 12, 12, 16, 16, 16, 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; // configurare fără blocare // redare gratuită nesemnată lungă anteriorMillis1 = 0; // timpul cuvintelor ultimul schimbat const lung interval1 = 1500; // intervalul dintre schimbare // muzică nesemnată lungă anteriorMillis2 = 0; // timpul trecut modificat const interval lung2 = 100; // interval între note int displayStatus = 0; // urmăriți ce se afișează modul int = 0; // urmăriți modul de joc - schimbați la 0 sau 1 pentru diferite moduri bool countdown = false; nesemnate lung anteriorMillis3 = 0; // timpul trecut modificat const lung interval3 = 1000; // intervalul dintre numărătoarea inversă inversă = 20; // provocare mode timer void setup () // pune codul de instalare aici, pentru a rula o dată: pinMode (9, INPUT); // circuitul de configurare pinMode (10, OUTPUT); // configurare buzzer 1 pinMode (11, OUTPUT); // configurare buzzer 2 pinMode (2, INPUT); // butonul de configurare _display-> set (5); // set luminozitate _display-> punct (false); // eliminati colonul _display-> init (); // start display void loop () // pune codul principal aici, pentru a rula în mod repetat: if (mode == 0) // provocare mode if (digitalRead (2) == HIGH) întârziere (25); dacă (digitalRead (2) == HIGH) countdown = true; // opriți numărătoarea inversă altceva countdown = false; // opriți numărătoarea inversă dacă (numărătoarea inversă) showCountdown (); // advance countdown altceva // free play toggleFreePlay ();  dacă (digitalRead (10) == HIGH) întârziere (25); dacă (digitalRead (10) == HIGH) în timp ce (digitalRead (10) == HIGH) buzz (11, NOTĂ_B0, 1000/24);  altceva canta ();  void showCountdown () // numărătoarea inversă a timpului rămas nesemnificat longMillis = millis (); // timpul curent dacă (currentMillis - anteriorMillis3> = interval3) previousMillis3 = currentMillis; --numara; showNumber (număr); dacă (count == 0) // joc peste countdown = false; număr = 20; // resetarea numărătorii // buzz de 3 ori buzz (11, NOTE_B0, 1000/24); întârziere (100); Buzz (11, NOTĂ_B0, 1000/24); întârziere (100); Buzz (11, NOTĂ_B0, 1000/24);  void showNumber (număr int) // arăta numere (maximum 99) pe afișaj _display-> afișaj (0, 25); // scrie - la segmentul 1 afișaj - afișaj (3, 25); // scrie - la segmentul 4 // scrie numărul în mijlocul afișării dacă (număr == 10) _display-> display (1,1); _display-> afișaj (2,0);  altceva dacă (număr> 9) _display-> display (1,1); int newVal = număr - 10; _display-> afișare (2, newVal);  altceva _display-> display (1,0); _display-> afișaj (2, număr);  void toggleFreePlay () // derulați între cuvinte fără blocarea curentului nesemnat longMillis = millis (); // timpul curent dacă (actualMillis - anteriorMillis1> = interval1) previousMillis1 = currentMillis; dacă (displayStatus == 1) showPlay (); altceva showFree ();  void showPlay () // scrieți "PLAY" pe afișajul _display-> display (0, 21); // scrie P pentru segmentul 1 afișaj - afișaj (1, 18); // scrieți L la segmentul 2 afișaj - afișaj (2, 10); // scrieți A la segmentul 3 afișaj _ (3, 4); // scrie Y la segmentul 4 displayStatus = 2;  void showFree () // scrie "Free" pe afișajul _display-> display (0, 15); // scrieți F pentru a segmenta 1 afișaj - afișaj (1, 23); // scrie r la segmentul 2 _display-> display (2, 14); // scrieți E în segmentul 3 afișaj _ (3, 14); // scrie E la segmentul 4 displayStatus = 1;  void buzz (int targetPin, frecvență lungă, lungime lungă) / * Funcția exemplu Buzzer de Rob Faludi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 * / long delayValue = 1000000 / frecvență / 2; // calcula valoarea întârzierii dintre tranziții //// 1 secundă în valoare de microsecunde, împărțită la frecvență, apoi împărțită în jumătate de la //// există două faze pentru fiecare ciclu lungi numCycles = frecvență * lungime / 1000; // calculul numărului de cicluri pentru calendarul corespunzător //// multiplicarea frecvenței, care este într-adevăr cicluri pe secundă, cu numărul de secunde pentru a obține //// numărul total de cicluri de produs pentru (lung 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   void sing()  // play the song in a non blocking way unsigned long currentMillis = millis(); if (currentMillis - previousMillis2 >= interval2) previousMillis2 = actualMillis; int noteDurație = 1000 / tempo [songState]; buzz (10, melodie [songState], noteDuration); int pauză între note = noteDuration; întârziere (pauseBetweenNotes); // opriți redarea tonului: buzz (10, 0, noteDuration); ++ songState; // începe melodia din nou dacă termină dacă (songState> 79) songState = 14; // sariti peste introducere   

Salvați acest fișier ca “buzzwire” (Fișier> Salvare ca) și apoi încărcați-o în bord (Fișier> Încărcați). Dacă nu sunteți sigur cum să încărcați Arduino sau dacă acest cod pare un pic înfricoșător, aruncați o privire la Ghidul nostru pentru începători Arduino Începeți cu Arduino: Ghidul pentru începători Începeți cu Arduino: Ghidul unui începător Arduino este un open-source platforma de prototipuri electronice bazată pe hardware și software flexibile, ușor de utilizat. Este destinat artiștilor, designerilor, pasionaților și tuturor celor interesați să creeze obiecte sau medii interactive. Citeste mai mult . Totul ar fi bine, acum ar trebui să aveți propriul dvs. joc de sârmă buzz - rece!

Dacă ați făcut ceva rău după ce ați citit acest lucru, mi-ar plăcea să văd - spuneți-mi în comentariile de mai jos!

Aflați mai multe despre: Arduino, Electronics.