Obsah:
Video: Puzzle Box Arduino: 7 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
Pre tento projekt budeme vyrábať puzzle box, ktorý bude pracovať s hudbou. Základom je, že keď stlačíte tlačidlo, vydá melódiu a Arduino vypočíta, ktoré tlačidlá sú stlačené, aby vedel, čo je správne a čo je nesprávna odpoveď.
Zásoby
1 x Arduino č
Rezistor 1 x 1k Ohm
Rezistory 5 x 220 ohmov
1 x Piezo bzučiak
5 x tlačidlo 6x6 mm
1 x sada prepojovacích káblov
1 x doska perf/strip
1 x súprava vojakov
1 x záves
1 x svorka
1 x malá komoda/drevo
1x horúca lepiaca pištoľ + lepiace tyčinky
1 x 9v batéria + držiak
trochu worbla
farba
Krok 1:
Na začiatku musíte stlačiť svoje kolíky na doske. Teraz pripojte analóg 2 pomocou drôtu k rohu dosky. Chystáme sa k nemu pripojiť dva odpory v rade. Prvým je odpor 10 kOhm. Na druhý koniec tohto rezistora pripojíme vodič k analógovej zemi. Druhý odpor je odpor 220 Ohm, ktorý pripájame k prvému tlačidlu. Na prepojenie druhej otvorenej strany tlačidla s druhým tlačidlom použite iný odpor rovnakej hodnoty. Pokračujte v pripájaní týchto tlačidiel až k poslednému. V poslednom chytíte drôt a pripojíte ho k zodpovedajúcej zatvorenej strane tlačidla a prepojíte s ďalším v poradí. Teraz zopakujte postup, ktorý ste urobili s odpormi, ktoré poznáte iba z obyčajných drôtov. Pripojte prvé tlačidlo k analógovému 3, 3V portu na vašom Arduino. Celkovo získate nejaký krížový otcovský vzor, ako je to znázornené nižšie.
Krok 2:
Potom zapojte bzučiak do doštičky a jednu stranu pripevnite k digitálnej zemi a druhú k portu 12. Je múdre už nahrať nasledujúci kód do vášho Arduina, aby ste si mohli vyskúšať, či všetko funguje správne. Ak je, môžete začať spájkovať komponenty dohromady. Vykonajte to tak, že ich vyberiete z doštičky a priamo spájkujete vodiče a spojenia. Ak si myslíte, že medzi tlačidlami potrebujete väčšiu dĺžku, môžete medzi odpory pridať ďalší vodič. V tejto chvíli už doska na chlieb nie je potrebná.
Krok 3:
Potom, čo je všetko spájkované, je čas urobiť samotnú škatuľu. Ako základ som použil lacnú sadu zásuviek. Jednoducho som skrátil pozdĺžne na polovicu a odstránil som chrbát a stranu, ktorou som prestrihol. Teraz by ste mali mať dva kusy v tvare c. Jednému z nich odstrihnite jednu stranu, aby ste ho mohli použiť ako veko. Teraz otočte jeden zo zvyšných kúskov tak, aby do seba zapadali ako krabica bez veka, a prilepte ich k sebe. Akonáhle lepidlo dobre stuhne, vyvŕtajte na každej strane škatule malý otvor pre gombíky a väčší pre bzučiak vo veku.
Krok 4:
Teraz sa môžete pustiť do maľovania škatule. Urobil som svoj s kvetinovým dizajnom založeným na BOTW, ale môžete si skutočne vybrať ľubovoľný dizajn, ktorý chcete. Potom môžete gombíky vložiť do otvorov a na zadnú stranu gombíka a okolité drevo naniesť gulôčku lepidla. Ten istý princíp platí pre bzučiak, ale môj dokonale zapadá do otvoru, takže nie je potrebný. Ďalej uchopte worblu a zahrejte ju a nakrájajte, aby ste vytvorili malé gombíky. Opatrne ich prilepte na gombíky, ale dávajte pozor, aby ste nepoužili veľa lepidla, pretože by ste sa mohli omylom zaseknúť. Teraz ich môžete namaľovať, aby viac splynuli s krabicou.
Krok 5:
Nakoniec prilepte alebo priskrutkujte svorku a závesy na škatuli a veku, ktoré ich spájajú.
Krok 6:
Teraz, keď je vaša škatuľka kompletná, stačí do nej vložiť Arduino a batériu a zavrieť veko.
Krok 7: Kód
// Toto je kód pre puzzle/hudobný box s tematikou Zeldy.
// toto spojí váš kód so zoznamom poznámok na ďalšej karte
#include "pitches.h"
// táto premenná zabezpečí, že Arduino bude dlhšie stlačenie tlačidla vnímať len ako jedno stlačenie
int same = 0;
// odtiaľto bude čítať váš vstup
int k = 2;
// toto je tvoj výstupný pin
int reproduktor = 12;
// nižšie sú koncové melódie
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álne trvanie poznámky
int BEATTIME = 300;
// počítadlo, ktoré bude sledovať, ak sme v riešení
int teller = 0;
neplatné nastavenie () {
Serial.begin (9600);
pinMode (2, VSTUP);
pinMode (1, VSTUP);
}
prázdna slučka () {
// číta vstup z pinov
k = analógové Čítanie (2);
int p = analógové Čítanie (1);
// ak nie je stlačené žiadne tlačidlo, nemal by byť žiadny tón
if (teller == 0) {
noTone (12);
}
// ak načítané údaje zodpovedajú parametrom, spustite popísaný bit kódu
ak (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 ();
}
// ak nie (keď nie je stlačené žiadne tlačidlo), spustite tento kód
inak {
// reset to isté, aby ho bolo možné použiť pri nasledujúcom stlačení tlačidla
rovnaké = 0;
// ak je počítadlo do určitého čísla, spustite popísaný bit kódu
if (teller == 166) {
zelda ();
}
//""
else if (teller == 386) {
saria ();
}
//""
else if (teller == 266) {
epona ();
}
//""
else if (teller == 999) {
// hrou označte chybu
tón (reproduktor, NOTE_C3, BEATTIME);
// vynulujte počítadlo na 0
pokladník = 0;
}
}
// oneskorenie medzi vstupom a výstupom
oneskorenie (100);
// vytlačí hodnoty vášho vstupu na sériový monitor
Serial.println (k);
}
// toto je prvá melódia
void zelda () {
// toto nastaví počítadlo, ktoré sa samo aktualizuje počas prehrávania melódie, aby ju mohlo čítať a zastaviť, keď by malo
for (int i = 0; i <sizeof (Zelda); i ++) {
// hovorí, ako dlho by mala poznámka trvať
int ZTime = 1000 / ZeldaTime ;
// generuje tóny
tón (reproduktor, Zelda , ZTime);
// vytvára správne oneskorenie
int pauza = ZTime * 1,30;
oneskorenie (pauza);
// vynuluje počítadlo
pokladník = 0;
// vytlačí hodnoty vášho vstupu na sériový monitor
Serial.println (pokladník);
}
}
//""
void epona () {
pre (int i = 0; i <sizeof (Epona); i ++) {
int ETime = 1000 / EponaTime ;
tón (reproduktor, Epona , ETime);
int pauza = ETime * 1,30;
oneskorenie (pauza);
pokladník = 0;
Serial.println (pokladník);
}
}
//""
void saria () {
pre (int i = 0; i <sizeof (Saria); i ++) {
int STime = 1000 / SariaTime ;
tón (reproduktor, Saria , STime);
int pauza = STime * 1,30;
oneskorenie (pauza);
pokladník = 0;
Serial.println (pokladník);
}
}
prázdny rec
hts () {
// ak toto ešte nebolo stlačené
ak (to isté == 0) {
// ak má počítadlo aktuálne jednu z týchto hodnôt, pridajte k tomu toto
if (teller == 0 || teller == 132 || teller == 165 || teller == 232 || teller == 265 || teller == 331 || teller == 374) {
pokladník = pokladník + 1;
}
// inak nastavte na 999, aby ste počuli hluk z chýb
inak {
pokladník = 999;
}
// nastavte rovnakú hodnotu na jednu, aby Arduino nečítalo predĺžené stlačenie ako viacnásobné stlačenie
rovnaké = 1;
}
// zahrajte tón
inak {
tón (reproduktor, NOTE_A4, BEATTIME);
}
// vytlačí hodnoty vášho vstupu na sériový monitor
Serial.println (pokladník); }
//""
neplatné odkazy () {
ak (to isté == 0) {
if (teller == 133 || teller == 254 || teller == 244 || teller == 332 || teller == 375 || teller == 221) {
teller = teller + 11;
}
else if (teller == 0) {
pokladník = 111;
}
inak {
pokladník = 999;
}
rovnaké = 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;
}
inak {
pokladník = 999;
}
rovnaké = 1;
}
inak {
tón (reproduktor, NOTE_D5, BEATTIME);
Serial.println (pokladník);
}
}
//""
void onder () {
ak (to isté == 0) {
if (teller == 343) {
pokladník = pokladník + 31;
}
else if (teller == 0) {
pokladník = 331;
} else {
pokladník = 999;
} rovnaké = 1;
} else {
tón (reproduktor, NOTE_F4, BEATTIME);
Serial.println (pokladník);
}
}
//""
neplatné () {
ak (to isté == 0) {
if (teller == 0) {
pokladník = 461;
}
inak {
pokladník = 999;
}
rovnaké = 1;
}
tón (reproduktor, NOTE_D4, BEATTIME);
Serial.println (pokladník);
}
Odporúča:
WebApp Puzzle LED lampa s ESP32: 5 krokov (s obrázkami)
WebApp Puzzle LED lampa s ESP32: Hrám sa s LED pásmi už roky a nedávno som sa presťahoval k priateľovi, kde som nemohol robiť veľké zmeny, ako napríklad pripevniť pás na steny, a tak som dal dohromady túto lampu, ktorá má jeden vodič vychádzajúci z napájania a môže byť umiestnený
Scratch Maze Puzzle: 5 krokov
Scratch Maze Puzzle: Dnes si vytvoríme jednoduché, ale tvrdé bludisko pomocou Scratch. Scratch je vizuálny programovací jazyk založený na blokoch. Na začiatok sú potrebné veci: Zariadenie, na ktorom môžete spustiť ScratchLet's go
Escape the Sheet (Excel Puzzle): 5 krokov (s obrázkami)
Escape the Sheet (Excel Puzzle): Escape the sheet je malá excelovská hra, ktorú som zostavil pred niekoľkými rokmi, aby som skupinu kolegov naučil pokročilejšie znalosti Excelu a zároveň si užil zábavu s hlavolamy Trivia a Logic, dve veci, ktoré milujem! hra je kombináciou excelu pre
Juke Box pre veľmi mladých alias Raspi-Music-Box: 5 krokov
Box Juke pre veľmi mladých … Aka Raspi-Music-Box: Inšpirovaný inštruovateľným robotom „RFID-Music-Robot na báze maliny-Pi-založené“opisujúc stavbu hudobného prehrávača ROALDH pre jeho 3-ročné dieťa, rozhodol som sa postaviť juke box pre moje ešte mladšie deti. Je to v podstate krabica so 16 tlačidlami a Raspi 2 i
Puzzle Box - Codebreakers and Groundbreakers [UCM]: 7 krokov (s obrázkami)
Puzzle Box - Codebreakers and Groundbreakers [UCM]: Súprava puzzle boxov laserom rezaná pre dielňu digitálnych výrobcov v The Fitzwilliam Museum, Cambridge v súvislosti s ich výstavou Codebreakers and Groundbreakers. Na workshope bolo tlačidlo v logickom boxe spojené s výrobkom MakeyMakey