Spisu treści:

Pudełko z łamigłówkami Arduino: 7 kroków
Pudełko z łamigłówkami Arduino: 7 kroków

Wideo: Pudełko z łamigłówkami Arduino: 7 kroków

Wideo: Pudełko z łamigłówkami Arduino: 7 kroków
Wideo: Can you solve the Lox in box puzzle? #shorts 2024, Listopad
Anonim
Pudełko z puzzlami Arduino
Pudełko z puzzlami Arduino

Na potrzeby tego projektu zamierzamy stworzyć pudełko z puzzlami, które będzie współpracowało z muzyką. Sednem tego jest to, że po naciśnięciu przycisku zwalnia melodię, a Arduino oblicza, które przyciski są wciśnięte, aby wiedzieć, co jest prawidłowe, a jaka jest zła.

Kieszonkowe dzieci

1 x Arduino

Rezystor 1 x 1 k Ohm

Rezystory 5 x 220 Ohm

1 x brzęczyk piezoelektryczny

5 x przycisk 6x6 mm

1 x zestaw przewodów połączeniowych

1 x deska perf/stripboard

1 x zestaw lutowniczy

1 x zawias

1 x zacisk

1 x mała komoda/drewno

1x pistolet do klejenia na gorąco + klej w sztyfcie

1x bateria 9 v + uchwyt;

trochę worbla

farba

Krok 1:

Obraz
Obraz

Na początek musisz wcisnąć szpilki w płytkę stykową. Teraz podłącz analog 2 przewodem do rogu płytki. Podłączymy do niego linią dwa rezystory. Pierwszy to rezystor 10k Ohm. Do drugiego końca tego rezystora podłączamy przewód do masy analogowej. Drugi rezystor to rezystor 220 Ohm, który podłączamy do pierwszego przycisku. Użyj innego rezystora o tej samej wartości, aby połączyć drugą otwartą stronę przycisku z drugim przyciskiem. Kontynuuj podłączanie takich przycisków aż do ostatniego. Na ostatnim łapiesz przewód i łączysz go z odpowiednią zamkniętą stroną przycisku i łączysz go z następnym w linii. Teraz powtarzasz proces, który wykonałeś z rezystorami znanymi tylko ze zwykłymi przewodami. Podłącz pierwszy przycisk do portu analogowego 3, 3V w Arduino. W sumie otrzymasz rodzaj krzyża, jak pokazano poniżej.

Krok 2:

Następnie podłącz brzęczyk do płytki stykowej i przymocuj jedną stronę do uziemienia cyfrowego, a drugą do portu 12. Sprytnie jest już przesłać następujący kod do Arduino, dzięki czemu można przetestować, czy wszystko działa poprawnie. Jeśli tak, możesz zacząć lutować elementy razem. Zrób to, wyjmując je z płytki stykowej i lutując bezpośrednio ze sobą przewody i połączenia. Jeśli uważasz, że potrzebujesz większej długości między przyciskami, możesz dodać dodatkowy przewód między rezystorami. Płytka prototypowa nie jest już potrzebna w tym momencie.

Krok 3:

Obraz
Obraz

Po zlutowaniu wszystkiego nadszedł czas na wykonanie samego pudełka. Użyłem taniego zestawu szuflad jako podstawy dla mojej. Po prostu przeciąłem na pół wzdłuż i usunąłem tył i bok, przez które przeciąłem. Powinieneś mieć teraz dwa kawałki w kształcie litery C. Odetnij jedną stronę jednego z nich, aby użyć go jako pokrywki. Teraz obróć jeden z pozostałych elementów tak, aby pasowały do siebie jak pudełko bez pokrywki i sklej je razem. Po prawidłowym związaniu kleju wywierć mały otwór z każdej strony pudełka na przyciski i większy na brzęczyk w pokrywie.

Krok 4:

Obraz
Obraz
Obraz
Obraz

Teraz możesz zabrać się do malowania pudełka. Zrobiłem mój z projektem kwiatowym opartym na BOTW, ale naprawdę możesz wybrać dowolny wzór. Po wykonaniu tej czynności możesz umieścić guziki w otworach i nałożyć kulkę kleju na tył guzika i otaczające drewno. Ta sama zasada dotyczy brzęczyka, ale mój idealnie mieści się w otworze, przez co jest niepotrzebny. Następnie łapiesz trochę worbla, podgrzewasz i kroisz na małe guziki. Ostrożnie przyklej je do przycisków, ale pamiętaj, aby nie używać zbyt dużo kleju, ponieważ możesz przypadkowo zablokować przyciski. Teraz możesz je pomalować, aby lepiej komponowały się z pudełkiem.

Krok 5:

Na koniec sklejasz lub przykręcasz zacisk i zawiasy na pudełku i pokrywie łączące oba.

Krok 6:

Teraz, gdy pudełko jest gotowe, wystarczy włożyć do niego Arduino i baterię oraz zamknąć pokrywę.

Krok 7: Kod

// To jest kod łamigłówki/pozytywki o tematyce Zeldy.

// to łączy twój kod z listą notatek w innej zakładce

#include "smoły.h"

// ta zmienna zapewni, że Arduino będzie widział dłuższe naciśnięcie przycisku jako jedno naciśnięcie

wewn. to samo = 0;

// stąd odczyta twoje wejście

int k = 2;

//to jest twój pin wyjściowy

wewn mówca = 12;

// poniżej melodie końcowe

int Zelda = {UWAGA_B4, UWAGA_D5, UWAGA_A4, UWAGA_G4, UWAGA_A4, UWAGA_B4, UWAGA_D5, UWAGA_A4, UWAGA_G4, UWAGA_A4, UWAGA_B4, UWAGA_D5, UWAGA_A5, UWAGA_G5, UWAGA_D5, UWAGA_C5, UWAGA_B4, UWAGA_A5};

int ZeldaTime = {2, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2};

int Epona = {UWAGA_D5, NOTA_B4, NOTA_A4, NOTA_D5, NOTA_B4, NOTA_A4, NOTA_D5, NOTA_B4, NOTA_A4, NOTA_B4, NOTA_A4};

int Czas Epona = {4, 4, 1,5, 4, 4, 1,5, 4, 4, 2, 2, 1};

int Saria = {UWAGA_F4, UWAGA_A4, UWAGA_B4, UWAGA_F4, UWAGA_A4, UWAGA_B4, UWAGA_F4, UWAGA_A4, UWAGA_B4, UWAGA_E5, UWAGA_D5, UWAGA_B4, UWAGA_C5, UWAGA_B4, UWAGA_G4, UWAGA_E4, UWAGA_D4, UWAGA_E4, UWAGA_G4, UWAGA_E4};

int CzasSaria = {8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 3, 8, 8, 8, 2, 1};

// normalny czas trwania nuty

int CZAS BEATU = 300;

// licznik, który będzie śledzić, czy jesteśmy w rozwiązaniu

int kasjer = 0;

pusta konfiguracja () {

Serial.początek(9600);

pinMode(2, WEJŚCIE);

pinMode(1, WEJŚCIE);

}

pusta pętla () {

// odczytuje wejście z pinów

k = odczyt analogowy(2);

int p = odczyt analogowy(1);

//jeśli nie jest wciśnięty żaden przycisk, nie powinno być żadnego dźwięku

jeśli (kasjer == 0) {

brak Dźwięku(12);

}

//jeżeli odczytane dane są zgodne z parametrami uruchom opisany bit kodu

jeśli (k > 320 && k < 350) {

rechts();

}

//""

inaczej, jeśli (k 290) {

spinki do mankietów();

}

//""

inaczej jeśli (k > 260 && k < 280) {

boven();

}

//""

inaczej jeśli (k> 240 && k < 260) {

dalej();

}

//""

inaczej jeśli (k > 220 && k < 240) {

a();

}

// jeśli nie (gdy żaden przycisk nie jest wciśnięty), uruchom ten kod

w przeciwnym razie {

// zresetuj to samo, aby można było go użyć przy następnym naciśnięciu przycisku

to samo = 0;

// jeśli licznik jest do określonej liczby uruchom opisany bit kodu

jeśli (kasjer == 166) {

zelda();

}

//""

inaczej, jeśli (mówiący == 386) {

saria();

}

//""

inaczej, jeśli (mówiący == 266) {

epona();

}

//""

inaczej, jeśli (kasjer == 999) {

//odtwórz ten dźwięk, aby zaznaczyć błąd

ton(głośnik, NOTE_C3, BEATTIME);

//zresetuj licznik do 0

kasjer = 0;

}

}

//opóźnienie między wejściem a wyjściem

opóźnienie (100);

// wyświetla wartości twojego wejścia w monitorze szeregowym

Serial.println(k);

}

// to jest pierwsza melodia

nieważne zelda () {

//to ustawia licznik, który aktualizuje się podczas odtwarzania melodii, aby mógł ją odczytać i zatrzymać się, kiedy powinien

for (int i = 0; i < sizeof(Zelda); i++) {

//mówi, jak długo powinna trwać notatka

int ZTime = 1000 / ZeldaTime;

//generuje dźwięki

ton (głośnik, Zelda, ZTime);

//tworzy poprawne opóźnienie

int pauza = ZTime * 1,30;

opóźnienie(pauza);

//resetuje licznik

kasjer = 0;

// wyświetla wartości twojego wejścia w monitorze szeregowym

Serial.println(kasjer);

}

}

//""

nieważne epona() {

for (int i = 0; i < sizeof(Epona); i++) {

int ETime = 1000 / EponaTime;

ton (głośnik, Epona, ETime);

int pauza = E Czas * 1,30;

opóźnienie(pauza);

kasjer = 0;

Serial.println(kasjer);

}

}

//""

pusta saria () {

for (int i = 0; i < sizeof(Saria); i++) {

int STime = 1000 / SariaTime;

ton (głośnik, Saria, STime);

int pauza = SCzas * 1,30;

opóźnienie(pauza);

kasjer = 0;

Serial.println(kasjer);

}

}

nieważne rec

hts() {

// jeśli to nie zostało już naciśnięte

jeśli (tak samo == 0) {

// jeśli licznik aktualnie ma jedną z tych wartości, dodaj to do niego

jeśli (kasjer == 0 || kasjer == 132 || kasjer == 165 || kasjer == 232 || kasjer == 265 || kasjer == 331 || kasjer == 374) {

kasjer = kasjer + 1;

}

// w przeciwnym razie ustaw go na 999, aby usłyszeć dźwięk błędu

w przeciwnym razie {

kasjer = 999;

}

// ustaw to samo na jeden, aby Arduino nie czytało przedłużonego naciśnięcia jako wielokrotnych naciśnięć

to samo = 1;

}

// zagraj dźwięk

w przeciwnym razie {

ton(głośnik, NOTE_A4, BEATTIME);

}

// wyświetla wartości twojego wejścia w monitorze szeregowym

Serial.println(kasjer); }

//""

nieważne linki () {

jeśli (tak samo == 0) {

jeśli (kasjer == 133 || kasjer == 254 || kasjer == 244 || kasjer == 332 || kasjer == 375 || kasjer == 221) {

kasjer = kasjer + 11;

}

inaczej, jeśli (mówiący == 0) {

kasjer = 111;

}

w przeciwnym razie {

kasjer = 999;

}

to samo = 1;

} w przeciwnym razie{

ton(głośnik, NOTE_B4, BEATTIME);

} Serial.println(kasjer);

}

//""

nieważne boven () {

jeśli (to samo == 0) {jeśli (kasjer == 111 || kasjer == 144 || kasjer == 233) {

kasjer = kasjer + 21;

}

inaczej, jeśli (mówiący == 0) {

kasjer = 221;

}

w przeciwnym razie {

kasjer = 999;

}

to samo = 1;

}

w przeciwnym razie {

ton(głośnik, NOTE_D5, BEATTIME);

Serial.println(kasjer);

}

}

//""

nieważne dalej () {

jeśli (tak samo == 0) {

jeśli (kasjer == 343) {

kasjer = kasjer + 31;

}

inaczej, jeśli (mówiący == 0) {

kasjer = 331;

} w przeciwnym razie {

kasjer = 999;

} to samo = 1;

} w przeciwnym razie {

ton(głośnik, NOTE_F4, BEATTIME);

Serial.println(kasjer);

}

}

//""

nieważne a() {

jeśli (tak samo == 0) {

jeśli (kasjer == 0) {

kasjer = 461;

}

w przeciwnym razie {

kasjer = 999;

}

to samo = 1;

}

ton(głośnik, NOTE_D4, BEATTIME);

Serial.println(kasjer);

}

Zalecana: