Obsah:
Video: Puzzle Box Arduino: 7 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Pro tento projekt budeme vyrábět puzzle box, který pracuje s hudbou. Základní podstatou toho je, že když stisknete tlačítko, uvolní melodii a Arduino vypočítá, která tlačítka jsou stisknuta, aby věděl, co je správné a co špatná odpověď.
Zásoby
1 x Arduino uno
Rezistor 1 x 1k Ohm
Rezistory 5 x 220 ohmů
1 x Piezo bzučák
5 x tlačítko 6x6 mm
1 x sada propojovacích vodičů
1 x deska perf/strip
1 x sada pájek
1 x závěs
1 x svorka
1 x malá komoda/dřevo
1x horká lepicí pistole + lepicí tyčinky
1 x 9v baterie + držák
trochu worbla
malovat
Krok 1:
Nejprve musíte stisknout kolíky na prkénku. Nyní připojte analogový 2 vodičem k rohu desky. Chystáme se k němu připojit dva odpory v řadě. První je odpor 10 kOhm. Na druhý konec tohoto rezistoru připojíme vodič k analogové zemi. Druhý odpor je odpor 220 Ohm, který připojujeme k prvnímu tlačítku. K připojení druhé otevřené strany tlačítka k druhému tlačítku použijte jiný odpor stejné hodnoty. Takto připojujte tlačítka až k poslednímu. U posledního uchopte drát a připojte jej k odpovídající uzavřené straně tlačítka a připojte k dalšímu v řadě. Nyní zopakujete postup, který jste provedli s rezistory, které znáte pouze s obyčejnými dráty. Připojte první tlačítko k analogovému 3, 3V portu na vašem Arduinu. Celkově získáte jakýsi křížový otcovský vzor, jak je znázorněno níže.
Krok 2:
Dále zapojte bzučák do prkénka a zajistěte jednu stranu k digitální zemi a druhou k portu 12. Je chytré již nahrát následující kód do vašeho Arduina, abyste mohli vyzkoušet, zda vše funguje správně. Pokud ano, můžete začít pájet součásti dohromady. Udělejte to tak, že je vyjmete z prkénka a pájíte vodiče a spoje přímo k sobě. Pokud si myslíte, že potřebujete mezi tlačítky větší délku, můžete mezi odpory přidat nějaký další vodič. V tomto bodě již prkénko není nutné.
Krok 3:
Poté, co je vše pájeno, je čas vyrobit krabici samotnou. Jako základ jsem použil levnou sadu zásuvek. Jednoduše jsem podélně rozřízl na polovinu a odstranil záda a stranu, kterou jsem prořízl. Nyní byste měli mít dva kusy ve tvaru písmene c. Uřízněte jednu stranu jedné z nich a použijte ji jako víčko. Nyní otočte jeden ze zbývajících kusů tak, aby do sebe zapadly jako krabice bez víka a slepte je k sobě. Jakmile lepidlo řádně zatuhne, vyvrtejte na každé straně krabičky malý otvor pro knoflíky a větší pro bzučák ve víku.
Krok 4:
Nyní se můžete pustit do malování krabice. Udělal jsem svůj s květinovým designem založeným na BOTW, ale opravdu si můžete vybrat jakýkoli design, který chcete. Poté, co je to hotové, můžete dát knoflíky dovnitř otvorů a na zadní stranu knoflíku a okolní dřevo dát glob lepidla. Stejný princip platí pro bzučák, ale moje se perfektně hodí do otvoru, takže je zbytečný. Dále uchopte worblu a zahřejte ji a nakrájejte, abyste vytvořili malá tlačítka. Opatrně je přilepte na knoflíky, ale ujistěte se, že nepoužíváte příliš mnoho lepidla, protože byste si mohli omylem zaseknout knoflíky. Nyní je můžete vymalovat, aby více splynuly s krabicí.
Krok 5:
Nakonec přilepíte nebo přišroubujete svorku a závěsy na krabici a víku, které je spojují.
Krok 6:
Nyní, když je vaše krabice kompletní, stačí do ní vložit Arduino a baterii a zavřít víko.
Krok 7: Kód
// Toto je kód pro puzzle/hudební skříňku na téma Zelda.
// tím se váš kód spojí se seznamem poznámek na jiné kartě
#include "pitches.h"
// tato proměnná zajistí, že Arduino uvidí delší stisk tlačítka jako jediné stisknutí
int stejné = 0;
// odtud bude číst váš vstup
int k = 2;
// toto je tvůj výstupní pin
int reproduktor = 12;
// níže jsou koncové melodie
int Zelda = {NOTE_B4, NOTE_D5, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_D5, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_D5, NOTE_A5, NOTE_G5, NOTE_D5, NOTE_C5, NOTE_B4, NOTE_A5};
int ZeldaTime = {2, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2};
int Epona = {NOTE_D5, NOTE_B4, NOTE_A4, NOTE_D5, NOTE_B4, NOTE_A4, NOTE_D5, NOTE_B4, NOTE_A4, NOTE_B4, NOTE_A4};
int EponaTime = {4, 4, 1,5, 4, 4, 1,5, 4, 4, 2, 2, 1};
int Saria = {NOTE_F4, NOTE_A4, NOTE_B4, NOTE_F4, NOTE_A4, NOTE_B4, NOTE_F4, NOTE_A4, NOTE_B4, NOTE_E5, NOTE_D5, NOTE_B4, NOTE_C5, NOTE_B4, NOTE_G4, NOTE_E4, NOTE_D4, NOTE_E4, NOTE_G
int SariaTime = {8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 3, 8, 8, 8, 2, 1};
// normální doba trvání poznámky
int BEATTIME = 300;
// počítadlo, které bude sledovat, pokud jsme v řešení
int teller = 0;
neplatné nastavení () {
Serial.begin (9600);
pinMode (2, VSTUP);
pinMode (1, VSTUP);
}
prázdná smyčka () {
// čte vstup z pinů
k = analogRead (2);
int p = analogRead (1);
// pokud není stisknuto žádné tlačítko, neměl by znít žádný tón
if (teller == 0) {
noTone (12);
}
// pokud čtená data odpovídají parametrům, spusťte popsaný bit kódu
if (k> 320 && k <350) {
rechts ();
}
//""
else if (k 290) {
Odkazy();
}
//""
else if (k> 260 && k <280) {
boven ();
}
//""
else if (k> 240 && k <260) {
onder ();
}
//""
else if (k> 220 && k <240) {
A();
}
// pokud ne (když není stisknuto žádné tlačítko), spusťte tento kód
jinak {
// reset stejný, aby jej bylo možné použít při příštím stisknutí tlačítka
stejné = 0;
// pokud je čítač do určitého čísla, spusťte popsaný bit kódu
if (teller == 166) {
zelda ();
}
//""
else if (teller == 386) {
saria ();
}
//""
else if (teller == 266) {
epona ();
}
//""
else if (teller == 999) {
// přehráním tohoto tónu označíte chybu
tón (reproduktor, NOTE_C3, BEATTIME);
// reset počítadla na 0
pokladník = 0;
}
}
// zpoždění mezi vstupem a výstupem
zpoždění (100);
// vytiskne hodnoty vašeho vstupu na sériovém monitoru
Serial.println (k);
}
// toto je první melodie
void zelda () {
// toto nastaví čítač, který se sám aktualizuje při přehrávání melodie, aby ji mohl přečíst a zastavit, když by měl
for (int i = 0; i <sizeof (Zelda); i ++) {
// říká, jak dlouho by měla poznámka trvat
int ZTime = 1000 / ZeldaTime ;
// generuje tóny
tón (reproduktor, Zelda , ZTime);
// vytvoří správné zpoždění
int pauza = ZTime * 1,30;
zpoždění (pauza);
// vynuluje počítadlo
pokladník = 0;
// vytiskne hodnoty vašeho vstupu na sériovém monitoru
Serial.println (pokladník);
}
}
//""
void epona () {
pro (int i = 0; i <sizeof (Epona); i ++) {
int ETime = 1000 / EponaTime ;
tón (reproduktor, Epona , ETime);
int pauza = ETime * 1,30;
zpoždění (pauza);
pokladník = 0;
Serial.println (pokladník);
}
}
//""
void saria () {
for (int i = 0; i <sizeof (Saria); i ++) {
int STime = 1000 / SariaTime ;
tón (reproduktor, Saria , STime);
int pauza = STime * 1,30;
zpoždění (pauza);
pokladník = 0;
Serial.println (pokladník);
}
}
prázdné rec
hts () {
// pokud toto již nebylo stisknuto
if (same == 0) {
// pokud má čítač aktuálně jednu z těchto hodnot, přidejte do ní toto
if (teller == 0 || teller == 132 || teller == 165 || teller == 232 || teller == 265 || teller == 331 || teller == 374) {
teller = teller + 1;
}
// jinak nastavte na 999, abyste slyšeli šum chyb
jinak {
pokladník = 999;
}
// nastavte stejné na jedno, aby Arduino nečetlo delší tisk jako vícenásobné stisknutí
stejný = 1;
}
// zahrajte tón
jinak {
tón (reproduktor, NOTE_A4, BEATTIME);
}
// vytiskne hodnoty vašeho vstupu na sériovém monitoru
Serial.println (pokladník); }
//""
neplatné odkazy () {
if (same == 0) {
if (teller == 133 || teller == 254 || teller == 244 || teller == 332 || teller == 375 || teller == 221) {
teller = teller + 11;
}
else if (teller == 0) {
pokladník = 111;
}
jinak {
pokladník = 999;
}
stejný = 1;
} else {
tón (reproduktor, NOTE_B4, BEATTIME);
} Serial.println (pokladník);
}
//""
void boven () {
if (same == 0) {if (teller == 111 || teller == 144 || teller == 233) {
teller = teller + 21;
}
else if (teller == 0) {
pokladník = 221;
}
jinak {
pokladník = 999;
}
stejný = 1;
}
jinak {
tón (reproduktor, NOTE_D5, BEATTIME);
Serial.println (pokladník);
}
}
//""
void onder () {
if (same == 0) {
if (teller == 343) {
teller = teller + 31;
}
else if (teller == 0) {
pokladník = 331;
} else {
pokladník = 999;
} stejné = 1;
} else {
tón (reproduktor, NOTE_F4, BEATTIME);
Serial.println (pokladník);
}
}
//""
neplatné () {
if (same == 0) {
if (teller == 0) {
pokladník = 461;
}
jinak {
pokladník = 999;
}
stejný = 1;
}
tón (reproduktor, NOTE_D4, BEATTIME);
Serial.println (pokladník);
}
Doporučuje:
WebApp Puzzle LED lampa s ESP32: 5 kroků (s obrázky)
WebApp Puzzle LED lampa s ESP32: Hraji si s LED pásy roky a nedávno jsem se přestěhoval na místo přítele, kde jsem nemohl dělat velké změny, jako je připevnění pásu na stěny, a tak jsem dal dohromady tuto lampu, která má jeden vodič vychází pro napájení a může být umístěn
Crack the Code Game, Arduino Based Puzzle Box: 4 Steps (with Pictures)
Crack the Code Game, Arduino Based Puzzle Box: V tomto Instructable vám ukážu, jak si vytvořit vlastní crack kódovou hru, ve které pomocí otočného ovladače kodéru uhádnete náhodně generovaný kód do trezoru. Na přední straně trezoru je 8 LED diod, které vám řeknou, kolik z
Box Juke pro velmi mladé aka Raspi-Music-Box: 5 kroků
Box Juke pro velmi mladé … Aka Raspi-Music-Box: Inspirován instruktážním robotem „RFID-Music-Robot na bázi Raspberry-Pi-RFID“Když jsem popisoval stavbu hudebního přehrávače ROALDH pro jeho tříleté dítě, rozhodl jsem se postavit juke box pro mé ještě mladší děti. Je to v podstatě krabice se 16 tlačítky a Raspi 2 i
Puzzle Box - Codebreakers a Groundbreakers [UCM]: 7 kroků (s obrázky)
Puzzle Box - Codebreakers and Groundbreakers [UCM]: Laserově řezaná skládací krabice navržená pro dílnu digitálního výrobce v The Fitzwilliam Museum, Cambridge v souvislosti s jejich výstavou Codebreakers a Groundbreakers. Pro workshop bylo tlačítko v logickém boxu připojeno k MakeyMakey a
Box na 20 $ Cheer Box: 5 kroků (s obrázky)
20 $ Holiday Cheer Box: Tento projekt vám ukáže, jak postavit box, který po stisknutí tlačítka přehraje náhodný zvuk. V tomto případě jsem jej použil k vybudování krabice, kterou mohu o prázdninách strategicky rozmístit po kanceláři. Když lidé stisknou tlačítko, uslyší