Stwórz grę Buzz Wire Arduino

  • Michael Fisher
  • 0
  • 2487
  • 575
Reklama

W tym zabawnym projekcie nauczymy się tworzyć buzz wire z Arduino. Wiele potrzebnych części można znaleźć w zestawie startowym (co jest w zestawie startowym Co jest zawarte w zestawie startowym Arduino? [MakeUseOf wyjaśnia] Co zawiera zestaw startowy Arduino? [MakeUseOf wyjaśnia] Wcześniej wprowadziłem Arduino open- źródłowy sprzęt tutaj na MakeUseOf, ale będziesz potrzebować czegoś więcej niż samego Arduino, aby coś z niego zbudować i zacząć. Arduino „zestawy startowe” są…?) i wokół domu. Ten projekt wykorzystuje Arduino, chociaż możesz użyć prawie dowolnego mikrokontrolera, który masz w pobliżu (spójrz na to porównanie między 5 mikrokontrolerami 5 USD Mikrokontrolery 5 USD: Arduino, Raspberry Pi Zero, lub NodeMCU? 5 USD Mikrokontrolery: Arduino, Raspberry Pi Zero, czy NodeMCU? Kiedyś chciałeś kupić komputer, musiałbyś za to przebudować dom, żeby za niego zapłacić. Teraz możesz go kupić za Abrahama Lincolna. Po inspirację).

Sprawdź wynik końcowy - odtwarza nawet muzykę:

Czego potrzebujesz

Oto najważniejsze części potrzebne do ukończenia tego projektu:

  • 1 x Arduino UNO lub podobny.
  • 1 x Wieszak metalowy.
  • Rezystory 2 x 220 omów.
  • 1 x deska do krojenia chleba.
  • 1 x brzęczyk piezoelektryczny.
  • 2 x krokodylki.
  • Różne rurki termokurczliwe.
  • Przewody łączące męskie z męskim.

Oto kilka opcjonalnych części do ulepszenia kompilacji:

  • 1 x dodatkowy brzęczyk piezoelektryczny.
  • 1 x pręt łączący.
  • 1 x Quad siedmiosegmentowy wyświetlacz.
  • Rezystor 1 x 220 omów.
  • 1 x przycisk chwilowy.
  • Przewody łączące kobiety i kobiety.
  • Drewniana deska (do skrzynki).
  • Różne wkręty do drewna.

Prawie każde Arduino będzie działać, pod warunkiem, że ma wystarczającą liczbę pinów. Spójrz na ten przewodnik zakupu Przewodnik zakupu Arduino: Którą deskę powinieneś dostać? Poradnik kupujący Arduino: Którą deskę powinieneś dostać? Jest tak wiele różnych rodzajów tablic Arduino, że wybaczono by ci, że jesteś zdezorientowany. Który powinieneś kupić dla swojego projektu? Pomóż nam, korzystając z tego przewodnika zakupów Arduino! jeśli nie jesteś pewien, czego potrzebujesz.

Plan kompilacji

Choć może to wyglądać na skomplikowane, jest to w rzeczywistości dość prosty projekt. Zacznę od podstawowej gry, a następnie dodam dodatkowe elementy, aby zwiększyć złożoność. Możesz “grymasić” jak chcesz, w zależności od dostępnych komponentów.

Mechanika rdzenia składa się z drutu i pętli na uchwycie. Gracz musi prowadzić pętlę po polu bez dotykania dwóch. Po dwukrotnym dotknięciu obwód jest zakończony i słychać brzęczyk. Oczywiście możliwe jest zbudowanie tego obwodu bez mikrokontrolera, ale gdzie jest w tym zabawa (i jak inaczej posłuchałbyś Monty Pythona “Flying Circus” piosenka przewodnia)?

Kurs

W takim kształcie gracz będzie musiał prowadzić swoją pętlę. To podstawa całej gry, więc zrób to dobrze! Zdecydowałem się na małą kroplę, po której nastąpiła duża wspinaczka. Zegnij metalowy wieszak na wieszaki do pożądanego kształtu. Drut mosiężny lub rura miedziana będą również działać równie dobrze, chociaż wieszak na ubrania może być najtańszy.

Być może będziesz musiał nosić rękawiczki i użyć szczypiec lub młotka, aby wszystko było idealne. Odetnij nadmiar za pomocą nożyc do śrub. Pozostaw dwie pionowe kolumny, aby przepchnąć podstawę. W pewnym sensie chcesz złożyć pilniki dla bezpieczeństwa. Na koniec wytnij dwa kawałki rurki termokurczliwej i umieść nad końcami w następujący sposób:

To zaizoluje pętlę od kursu, zapewniając strefę początkową / końcową lub strefę bezpieczeństwa. Alternatywnie, taśma lub nawet słomka wystarczą, jeśli nie masz żadnych rur termokurczliwych.

Teraz podłącz kabel do jeden koniec Oczywiście. Masz dwie opcje: możesz przylutować lub użyć krokodyla. Krokodyl jest łatwiejszą opcją, ale lutowanie jest bardziej niezawodną i długoterminową opcją. Upewnij się “szorstki” powierzchnia wieszaka najpierw papierem ściernym i użyj dużej ilości topnika. (Nigdy wcześniej nie lutowano? Naucz się tutaj tutaj Naucz się lutować, korzystając z tych prostych wskazówek i projektów Naucz się lutować, korzystając z tych prostych wskazówek i projektów Czy jesteś trochę onieśmielony myślą o gorącym żelazie i stopionym metalu? Jeśli chcesz aby rozpocząć pracę z elektroniką, musisz nauczyć się lutować. Pozwól nam pomóc.)

W zależności od wielkości otworu, który wiercisz w podstawie w następnym kroku, może być konieczne poprowadzenie kabla przez otwór montażowy. Zastosowanie skręconych ze sobą dwóch drutów zwiększy trwałość:


Używanie do tego wiertła bardzo pomaga:

Baza

Czas stworzyć bazę. Służy to do utrzymania kursu w pozycji pionowej, a także zapewnia miejsce do zakotwiczenia elektroniki. Użyłem kawałków sosny, chociaż możesz użyć wszystkiego, co masz w domu - nawet kartonowego pudełka.

Wytnij trzy kawałki, aby utworzyć “n” kształt. Po prostu skręć (lub sklej) te trzy elementy razem. Pamiętaj, aby najpierw wywiercić otwór pilotujący w elementach bocznych, aby zapobiec ich rozszczepieniu. Możesz pogłębić wkręty (szczególnie jeśli będziesz wypełniać, a następnie malować), i bardzo polecam wiertło z pogłębiaczem. Jeśli nie masz narzędzia do pogłębiania lub wiertła, wiertło o większej średnicy załatwi sprawę.

Wywierć dwa otwory wystarczająco daleko od siebie, aby końcówki toru mogły w nich usiąść. Pogłębiaj spód od spodu gotowy do klejenia.

Uchwyt


Teraz nadszedł czas na wykonanie pętli / kontrolera. Przekręć mały kawałek wieszaka na jednym końcu, aby utworzyć pętlę z małym metalowym uchwytem. Upewnij się, że opiłowałeś przyciętą krawędź, a następnie w razie potrzeby przykryj ją taśmą / pianką.


To utworzy drugą połowę obwodu - gdy ta pętla dotknie kursu, zakończy obwód (dokładnie jak przełącznik). Przylutuj (lub użyj krokodyla) kolejny drut do dolnej części tego, dokładnie tak samo jak poprzednio podczas kursu.

Wytnij niewielką długość kołka dla faktycznego uchwytu. Ta metalowa pętla wpasuje się w ten uchwyt. Jeśli nie masz kołka, możesz zaokrąglić kawałek kwadratowego drewna miękkiego za pomocą szlifierki taśmowej lub tarczowej (możesz również użyć papieru ściernego, ale zajęłoby to dużo czasu).

Wywierć otwór przez ten uchwyt. Musi być wystarczająco duży, aby pasował do metalowej pętli i drutu przez:


Można to zrobić na wiertarce słupowej, chociaż jest to trudne. Tokarka doskonale wykona zadanie:

Tak, jestem całkiem świadomy, że jest to metalowa tokarka (dla każdego zainteresowanego jest to tokarka zegarmistrzowska Boley z lat 30. XX wieku. Myślę, że to 3C, ale chciałbym usłyszeć od ciebie, jeśli dowiesz się więcej na ten temat).

Możesz również użyć długopisu ze zdjętym środkiem.

Na koniec użyj gorącego kleju, aby zamocować kabel i pętlę w uchwycie. Gorący klej zapewni mocne (ale nie trwałe) mocowanie, więc jest do tego idealny.

Wykończenie

Włóż prowadnicę drutu do otworów w podstawie. Nie zapomnij najpierw dodać pętli / kontrolera. Ponownie użyj gorącego kleju, aby przymocować kurs do podstawy, wypełniając wpuszczone otwory na spodzie podstawy w następujący sposób:

Obwód

Oto pełny obwód. Nie musisz robić tak skomplikowanego - czytaj dalej, gdy rozkładamy każdą część.


Najpierw podłącz dwa elementy piezo do cyfrowych pinów 10 i 11. Polaryzacja nie ma znaczenia:


Nie musisz używać dwóch piezo - jedynym powodem, dla którego to zrobiłem, jest głośniejsze brzęczenie przy dotknięciu drutów. Podłącz jedną stronę do styku cyfrowego, a drugą do uziemienia.

Teraz podłącz metalowy kurs i uchwyt:


Ponownie nie ma znaczenia, w którą stronę te dwa przewody są połączone. Ta część obwodu jest dokładnie jak przycisk lub przełącznik - odtwarzacz kończy obwód, gdy pętla dotknie pola. Upewnij się, że dołączasz oba oporniki.

Jeden opornik wiąże obwód z masą (zwany rezystorem obniżającym), upewniając się, że tak nie jest “Ruchomy” (pozwala to Arduino wykryć zmianę obwodu). Drugi opornik chroni Arduino. Kiedy dwie części się stykają, + 5V przechodzi w styk cyfrowy. Gdyby ten rezystor nie był obecny, nastąpiłby zwarcie - komputer odłączyłby gniazdo USB, aby pobierać zbyt duży prąd jeśli masz szczęście.

Podłącz przewód sygnałowy (fioletowy, na schemacie) do cyfrowego styku 9.

Następnie podłącz przycisk do cyfrowego styku 2:

Na koniec podłącz siedmiosegmentowy wyświetlacz LED:


Ten konkretny model pochodzi od Seeed. To wykorzystuje TM1637 do sterowania czterema wyświetlaczami - oznacza to, że potrzebne są tylko dwa cyfrowe piny. Połączyć GND do ziemi Arduino i VCC do Arduino + 5 V. Połączyć D10 do cyfrowego styku 13 Arduino i CLK do pinu cyfrowego 12.

Kod

Aby ten projekt działał, potrzebujesz dwóch dodatkowych plików. Pierwszy nazywa się boiska. h. Ten plik po prostu odwzorowuje nazwy nut na ich wartość piezo. To znacznie ułatwia napisanie melodii, jak można po prostu powiedzieć “UWAGA_C3” zamiast “31”, na przykład. To jest w domenie publicznej i jest dostępne na stronie Arduino tutaj. Postępuj zgodnie z instrukcjami, aby utworzyć nowy plik o nazwie boiska. h (alternatywnie wklej kod do istniejącego skryptu).

Następnie potrzebujesz metody odtwarzania nut / melodii na piezo. Ta treść autorstwa Anthony'ego DiGirolamo na Github zawiera potrzebny kod. Skopiuj wszystko pomiędzy “nieważne brzęczenie” i “” i wklej go do głównego pliku. Dla odniesienia, oto:

void buzz (int targetPin, długa częstotliwość, długa długość) / * Przykładowa funkcja Buzzer autorstwa Rob Faludi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 * / long delayValue = 1000000 / częstotliwość / 2; // oblicz wartość opóźnienia między przejściami //// 1 sekunda wartości mikrosekund, podzielona przez częstotliwość, a następnie podzielona na pół, ponieważ //// ma dwa fazy do każdego cyklu długie numCycle = częstotliwość * długość / 1000; // obliczyć liczbę cykli dla prawidłowego taktowania //// pomnożyć częstotliwość, która jest tak naprawdę liczbą cykli na sekundę, przez liczbę sekund, aby //// uzyskać całkowitą liczbę cykli do wytworzenia (długie 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  

Ostatnią potrzebną biblioteką jest sterowanie wyświetlaniem siedmiosegmentowym - możesz pominąć ten krok, jeśli go nie używasz. Ta biblioteka jest nazywana TM1637 i został stworzony przez Seeed, tę samą firmę, która stworzyła kartę sterownika.

W Arduino IDE przejdź do “Zarządzaj bibliotekami” (Naszkicować > Dołącz bibliotekę > Zarządzaj bibliotekami). Spowoduje to wyświetlenie menedżera biblioteki. Odczekaj kilka sekund na aktualizację, a następnie wyszukaj w polu wyszukiwania w prawym górnym rogu “TM1637”. Zostaną znalezione dwie biblioteki - chcesz “TM1637” i nie “TM1637 Wyświetlacz”. Wybierz, a następnie kliknij “zainstalować”.

Ostatnie zadanie z tą biblioteką - nie jest kompletne! W obecnej formie biblioteka może wyświetlać tylko cyfry 0–9 i litery A – F. Jeśli obejmuje to wszystko, co chcesz wyświetlić, możesz pominąć ten krok. Jeśli nie, musisz zmodyfikować kod. Zrelaksować się! To nie jest tak trudne, jak się wydaje, a jeśli możesz pisać kod za pomocą Arduino IDE, możesz to zrobić.

Najpierw otwórz folder biblioteki. To będzie w twoim folderze Arduino. W Mac OS X to jest / Users / Joe / Documents / Arduino / Libraries. Otwórz folder o nazwie TM1637. Będziesz musiał edytować plik o nazwie TM1637.cpp - możesz bezpiecznie zignorować drugi plik z rozszerzeniem .h. Otwórz ten plik w swoim ulubionym edytorze tekstu (dla mnie to Sublime Text 3), Notatniku lub Arduino IDE.

Zmodyfikuj trzeci wiersz kodu z tego:

static 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.

Do tego:

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

Możesz teraz zapisać i zamknąć ten plik. Po każdym elemencie komentarz opisuje, jaki to znak. Następną częścią komentarza jest indeks elementu.

Czas na właściwy kod. Najpierw dołącz dwie wspomniane wcześniej biblioteki:

#include #include 

Teraz utwórz obiekt wyświetlany:

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

Nie martw się, jeśli nie rozumiesz składni - ten wiersz mówi Arduino, że piny 12 i 13 są podłączone do siedmiosegmentowego wyświetlacza i odpowiednio go skonfiguruj.

Piosenka jest przechowywana w melodia i tempo. Zawierają one wszystkie nuty i czas trwania nut dla muzyki. Jeśli chcesz zmienić muzykę, zmodyfikuj te tablice (chociaż nie jest to tak proste jak wklejanie wartości nut, timing jest bardzo ważną częścią muzyki). The songState zmienna po prostu przechowuje pozycję ostatnio odtwarzanej nuty. Dzięki temu melodia jest odtwarzana od początku do końca, zamiast skakać niekonsekwentnie:

int songState = 0; int melody [] = NOTE_F4,… int tempo [] = 8,…

Pamiętaj, że usunąłem zawartość tablic, pełny kod znajduje się poniżej.

Ten kod nie blokuje - oznacza to, że Arduino może wykonywać wiele zadań jednocześnie. Spójrz na to wyjaśnienie Funkcja Opóźnienia Arduino i dlaczego nie powinieneś jej używać Funkcja Opóźnienia Arduino i dlaczego nie powinieneś jej używać Podczas gdy opóźnienie () jest przydatne do podstawowych demonstracji działania Arduino, naprawdę nie powinieneś używając go w prawdziwym świecie. Oto dlaczego i czego powinieneś użyć zamiast tego. po więcej informacji. Oto jak konfigurowane są timery:

unsigned long previousMillis1 = 0; const długi interwał 1 = 1500;

Zmienna previousMillis1 zostanie zaktualizowany na późniejszym etapie w celu zapisania aktualnego czasu. The interwał 1 Zmienna przechowuje czas oczekiwania między wykonaniem kodu - w tym przypadku 1,5 sekundy. Jest zdefiniowany jako const, co oznacza, że ​​jest stały i nigdy się nie zmieni - pozwala to Arduino na dalszą optymalizację kodu.

W środku Ustawiać() funkcja dzieje się kilka rzeczy. Najpierw konfigurowane są wejścia i wyjścia. Należy to zrobić, aby Arduino wiedział, co jest podłączone do każdego z jego pinów:

pinMode (9, WEJŚCIE); // setup pinMode (10, WYJŚCIE); // setup brzęczyk 1 pinMode (11, WYJŚCIE); // setup buzzer 2 pinMode (2, WEJŚCIE); // przycisk konfiguracji

Teraz wyświetlacz wymaga skonfigurowania:

_display-> set (5); // ustaw jasność _display-> point (false); // usuń dwukropek _display-> init (); // rozpocznij wyświetlanie

Metody zestaw, punkt, i w tym są zawarte w _pokaz obiekt. Zamiast kropki wskaźnik (“->”) służy do uzyskania dostępu do nich. Ponownie nie martw się o składnię (chociaż jeśli chcesz dowiedzieć się więcej, poszukaj wskaźników C ++).

Główna pętla ma dwa tryby gry: wyzwanie i darmowa gra. Darmowa gra pozwala graczowi grać nieograniczoną liczbę razy. Tryb Challenge ustawia timer na 20 sekund za pomocą showCountdown metoda. Używa przycisku do uruchamiania i zatrzymywania stopera. obecnie jedynym sposobem zmiany trybów gry jest ręczna edycja zmiennej o nazwie tryb. Sprawdź, czy możesz dodać kolejny przycisk, aby to zrobić i odpowiednio zmodyfikować kod.

The brzęczenie Metoda odtwarza przypisane do niej nuty. Jest to używane w połączeniu z śpiewać. Metoda śpiewu przechodzi przez każdą nutę i odtwarza ją. Ta metoda jest wywoływana regularnie, chociaż odtworzy następną nutę dopiero po upływie wystarczającego czasu od ostatniego grania. Gdy utwór dobiegnie końca, resetuje utwór do wiersza 1 (songState = 14). Możesz ustawić tę wartość na zero, aby rozpocząć utwór na początku, jednak powodem tego jest pominięcie wprowadzenia. Wprowadzenie jest odtwarzane raz po włączeniu Arduino, a następnie nie jest odtwarzane ponownie.

The showFree i showPlay metody po prostu napisz słowa “Darmowy” i “GRAĆ” do wyświetlacza. Zauważ, jak “r” w wolnej jest małe litery, gdy wszystkie pozostałe znaki są wielkie. Jest to jedno z ograniczeń siedmiu wyświetlaczy segmentowych. Nie mogą pokazywać każdej litery alfabetu, a niektóre znaki, które mogą wyświetlać, muszą być pisane wielkimi literami.

The toggleFreePlay Metoda miga na wyświetlaczu pomiędzy “DARMOWY” i “GRAĆ”. Ponownie robi to w sposób nieblokujący.

Inną przydatną metodą jest Pokaż numer. Spowoduje to zapisanie liczby w środkowych dwóch znakach wyświetlacza w następujący sposób:

Wyświetlacz nie jest wystarczająco inteligentny, aby wiedzieć, jak wyświetlać duże liczby, należy wyraźnie powiedzieć, co robić. Ta metoda wykorzystuje prostą logikę, aby pokazać odpowiednią liczbę na każdym znaku.

Wywoływana jest ostateczna metoda showCountdown. To zaczyna licznik od 20 i zmniejsza go o jedną co sekundę. Jeśli osiągnie zero, brzęczy trzy razy, wskazując, że czas się skończył.

Oto cały ten kod razem:

#include // include biblioteka wyświetlania #include // include pitch TM1637 * _display = new TM1637 (12, 13); // utwórz obiekt wyświetlany, 12 = CLK (zegar), 13 = D10 (dane) // music int songState = 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_A_, NOTE 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_A3, NOTE_A3, NOTE_A, 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_G4, NOTE4G, NOTE_G4 NOTE_FS4, NOTE_G4, NOTE_C4, NOTE_B3, NOTE_C4, NOTE_B3, NOTE_C4, 0; int tempo [] = 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; // konfiguracja bez blokowania // darmowa gra niepodpisany długi previousMillis1 = 0; // słowa czasowe ostatnio zmienione const długi interwał 1 = 1500; // przerwa między zmianą // muzyka niepodpisana długi poprzedni Millill2 = 0; // czas ostatniej zmiany const długi interwał2 = 100; // interwał między notatkami int displayStatus = 0; // śledzić, co jest wyświetlane w trybie int = 0; // śledzenie trybu gry - zmień na 0 lub 1 dla różnych trybów odliczanie bool = false; unsigned long previousMillis3 = 0; // czas ostatniej zmiany const długi interwał3 = 1000; // odstęp między odliczaniem int count = 20; // tryb wyzwania timer void setup () // wstaw tutaj swój kod instalacyjny, aby uruchomić raz: pinMode (9, INPUT); // setup pinMode (10, WYJŚCIE); // setup brzęczyk 1 pinMode (11, WYJŚCIE); // setup buzzer 2 pinMode (2, WEJŚCIE); // przycisk konfiguracji _display-> set (5); // ustaw jasność _display-> point (false); // usuń dwukropek _display-> init (); // start display void loop () // wstaw tutaj swój główny kod, aby uruchamiał się wielokrotnie: if (mode == 0) // tryb wyzwania if (digitalRead (2) == HIGH) delay (25); if (digitalRead (2) == HIGH) countdown = true; // zatrzymaj odliczanie else countdown = false; // zatrzymaj odliczanie if (countdown) showCountdown (); // zaawansowane odliczanie else // darmowa gra toggleFreePlay ();  if (digitalRead (10) == HIGH) delay (25); if (digitalRead (10) == HIGH) while (digitalRead (10) == HIGH) buzz (11, NOTE_B0, 1000/24);  else sing ();  void showCountdown () // odliczanie pozostałego czasu bez znaku długi currentMillis = millis (); // aktualny czas if (currentMillis - previousMillis3> = przedział3) previousMillis3 = currentMillis; --liczyć; showNumber (count); if (count == 0) // game over countdown = false; liczba = 20; // zresetowanie odliczania // buzz 3 razy buzz (11, NOTE_B0, 1000/24); opóźnienie (100); brzęczenie (11, NOTE_B0, 1000/24); opóźnienie (100); brzęczenie (11, NOTE_B0, 1000/24);  void showNumber (int number) // pokaż liczby (maksymalnie 99) na wyświetlaczu _display-> display (0, 25); // write - to segment 1 _display-> display (3, 25); // zapisz - do segmentu 4 // zapisz liczbę na środku wyświetlacza jeśli (liczba == 10) _display-> display (1,1); _display-> display (2,0);  else if (numer> 9) _display-> display (1,1); int newVal = liczba - 10; _display-> display (2, newVal);  else _display-> display (1,0); _display-> display (2, number);  void toggleFreePlay () // przewijaj słowa bez blokowania długiego bez znaku currentMillis = millis (); // aktualny czas if (currentMillis - previousMillis1> = przedział1) previousMillis1 = currentMillis; if (displayStatus == 1) showPlay (); else showFree ();  void showPlay () // zapisz „PLAY” na wyświetlaczu _display-> display (0, 21); // zapisz P w segmencie 1 _display-> display (1, 18); // zapisz L do segmentu 2 _display-> display (2, 10); // zapisz A do segmentu 3 _display-> display (3, 4); // zapisz Y do segmentu 4 displayStatus = 2;  void showFree () // zapisz „Free” na wyświetlaczu _display-> display (0, 15); // zapisz F w segmencie 1 _display-> display (1, 23); // zapisz r do segmentu 2 _display-> display (2, 14); // wpisz E do segmentu 3 _display-> display (3, 14); // zapisz E do segmentu 4 displayStatus = 1;  void buzz (int targetPin, długa częstotliwość, długa długość) / * Przykładowa funkcja Buzzer autorstwa Rob Faludi http://www.faludi.com https://gist.github.com/AnthonyDiGirolamo/1405180 * / long delayValue = 1000000 / częstotliwość / 2; // oblicz wartość opóźnienia między przejściami //// 1 sekunda wartości mikrosekund, podzielona przez częstotliwość, a następnie podzielona na pół, ponieważ //// ma dwa fazy do każdego cyklu długie numCycle = częstotliwość * długość / 1000; // obliczyć liczbę cykli dla prawidłowego taktowania //// pomnożyć częstotliwość, która jest tak naprawdę liczbą cykli na sekundę, przez liczbę sekund, aby //// uzyskać całkowitą liczbę cykli do wytworzenia (długie i = 0; i = przedział 2) previousMillis2 = currentMillis; int noteDuration = 1000 / tempo [songState]; buzz (10, melodia [songState], noteDuration); int pauseBetweenNotes = noteDuration; delay (pauseBetweenNotes); // zatrzymaj odtwarzanie tonu: buzz (10, 0, noteDuration); ++ songState; // rozpocznij piosenkę ponownie, jeśli skończysz, jeśli (songState> 79) songState = 14; // Pomiń wstęp   

Zapisz ten plik jako “buzzwire” (Plik> Zapisz jako), a następnie prześlij go na swoją tablicę (Plik> Prześlij). Jeśli nie masz pewności, jak załadować Arduino lub ten kod wygląda trochę przerażająco, zapoznaj się z naszym Przewodnikiem dla początkujących Arduino Rozpoczęcie pracy z Arduino: Przewodnik dla początkujących Rozpoczęcie pracy z Arduino: Przewodnik dla początkujących Arduino to oprogramowanie typu open source elektroniczna platforma prototypowania oparta na elastycznym, łatwym w obsłudze sprzęcie i oprogramowaniu. Jest przeznaczony dla artystów, projektantów, hobbystów i wszystkich zainteresowanych tworzeniem interaktywnych obiektów lub środowisk. . Wszystko dobrze, powinieneś teraz mieć własną grę z buzz wire - cool!

Jeśli zrobiłeś coś fajnego po przeczytaniu tego, chciałbym to zobaczyć - daj mi znać w komentarzach poniżej!




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.