Tartalomjegyzék:

Arduino puzzle doboz: 7 lépés
Arduino puzzle doboz: 7 lépés

Videó: Arduino puzzle doboz: 7 lépés

Videó: Arduino puzzle doboz: 7 lépés
Videó: JOCUMENTAR - film documentar despre jocurile de societate 2024, Július
Anonim
Arduino puzzle doboz
Arduino puzzle doboz

Ehhez a projekthez egy rejtvénydobozt készítünk, amely zenével működik. A lényeg az, hogy amikor megnyom egy gombot, egy dallamot ad ki, és az Arduino kiszámítja, hogy mely gombokat kell megnyomni, hogy tudja, mi a helyes és mi a rossz válasz.

Kellékek

1 x Arduino uno

1 x 1 k ohmos ellenállás

5 x 220 Ohm ellenállás

1 x piezo zümmögő

5 x 6x6 mm -es nyomógomb

1 db Jumper vezeték

1 x perf/szalag tábla

1 x forrasztókészlet

1 x zsanér

1 x bilincs

1 x kis komód/fa

1x forró ragasztópisztoly + ragasztópálca

1 x 9V elem + tartó

egy kis worbla

festék

1. lépés:

Kép
Kép

Kezdésként be kell nyomnia a csapokat a kenyértáblába. Most csatlakoztassa az analóg 2 -t egy vezetékkel a tábla sarkához. Két ellenállást fogunk csatlakoztatni hozzá egy sorban. Az első egy 10 k ohmos ellenállás. Ennek az ellenállásnak a másik végéhez csatlakoztatjuk a vezetéket az analóg földhöz. A második ellenállás egy 220 ohmos ellenállás, amelyet az első gombhoz csatlakoztatunk. Használjon másik azonos értékű ellenállást, hogy a gomb második nyitott oldalát a második gombbal kösse össze. Csatlakoztassa az ilyen gombokat az utolsóhoz. Az utolsónál megragad egy vezetéket, és a gomb megfelelő zárt oldalához csatlakoztatja, és a sorban következőhöz csatlakoztatja. Most ismételje meg azt a folyamatot, amelyet az ellenállásokkal csak sima vezetékeknél tud. Csatlakoztassa az első gombot az Arduino analóg 3, 3 V -os portjához. Összességében kapsz egyfajta keresztapát, amint az alább látható.

2. lépés:

Ezután csatlakoztassa a zümmögőt a kenyértáblához, és rögzítse egyik oldalát a digitális földhöz, a másikat pedig a 12 -es porthoz. Bölcs dolog már feltölteni az alábbi kódot az Arduino -ba, hogy tesztelhesse, hogy minden megfelelően működik -e. Ha igen, elkezdheti az alkatrészek forrasztását. Ehhez vegye ki őket a kenyértáblából, és közvetlenül forrasztja össze a vezetékeket és csatlakozásokat. Ha úgy gondolja, hogy több hosszra van szüksége a gombok között, akkor adjon hozzá egy kis vezetéket az ellenállások közé. A kenyértáblára ekkor már nincs szükség.

3. lépés:

Kép
Kép

Miután minden felforrasztott, ideje elkészíteni a dobozt. Egy olcsó fiókkészletet használtam az enyém alapjául. Egyszerűen hosszában félbevágtam, és eltávolítottam a hátát és az oldalt, amelyet átvágtam. Most két c alakú darabot kell kapnia. Vágja le egyikük egyik oldalát fedőként. Most forgassa el az egyik fennmaradó darabot úgy, hogy fedetlen dobozként illeszkedjenek egymáshoz, és ragassza össze őket. Miután a ragasztó megfelelően megszilárdult, fúrjon egy kis lyukat a doboz mindkét oldalára a gombokhoz, és egy nagyobbat a fedélben lévő zümmögőhöz.

4. lépés:

Kép
Kép
Kép
Kép

Most elkezdheti festeni a dobozt. Az enyémet a BOTW -n alapuló virágmintával készítettem, de valóban választhat bármilyen formatervezést. Miután ez megtörtént, a gombokat a lyukakba helyezheti, és ragasztógömböt helyezhet a gomb hátoldalára és a környező fára. Ugyanez az elv vonatkozik a zümmögőre is, de az enyém tökéletesen illeszkedik a lyukba, így szükségtelenné válik. Ezután megragad egy kis munkalapot és felmelegíted, és apró gombokat készítesz. Óvatosan ragasztja őket a gombokra, de ügyeljen arra, hogy ne használjon túl sok ragasztót, mert véletlenül elakadhatnak a gombok. Most átfestheti őket, hogy jobban illeszkedjenek a dobozba.

5. lépés:

Végül ragasztja vagy csavarozza, a bilincset és a csuklópántokat a dobozon és a fedélen, amelyek összekötik a kettőt.

6. lépés:

Most, hogy a doboza kész, mindössze annyit kell tennie, hogy behelyezi az Arduino -t és az akkumulátort, és becsukja a fedelet.

7. lépés: Kód

// Ez a Zelda témájú rejtvény/zenei doboz kódja.

// ez összekapcsolja a kódot a jegyzetek listájával a másik lapon

#include "pitchches.h"

// ez a változó biztosítja, hogy az Arduino a gomb hosszabb megnyomását egyetlen megnyomásnak látja

int azonos = 0;

// innen olvassa be az Ön bevitelét

int k = 2;

// ez a kimeneti pin

int hangszóró = 12;

// alább a végső dallamok

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_4, int SariaTime = {8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 3, 8, 8, 8, 2, 1};

// a hang normális időtartama

int BEATTIME = 300;

// a számláló, amelyet nyomon követünk, ha a megoldásban vagyunk

int teller = 0;

void setup () {

Sorozat.kezdet (9600);

pinMode (2, BEMENET);

pinMode (1, BEMENET);

}

void loop () {

// beolvassa a bemenetet a csapokból

k = analóg (2);

int p = analógOlvasás (1);

// ha nincs gomb megnyomva, akkor nem lehet hangjelzés

ha (mondó == 0) {

noTone (12);

}

// ha az olvasott adatok megfelelnek a paramétereknek, futtassa a leírt kódbitet

if (k> 320 && k <350) {

rechts ();

}

//""

különben ha (k 290) {

linkek ();

}

//""

különben ha (k> 260 && k <280) {

boven ();

}

//""

különben ha (k> 240 && k <260) {

onder ();

}

//""

különben ha (k> 220 && k <240) {

a ();

}

// ha nem (ha nincs gomb megnyomva), futtassa ezt a kódot

más {

// alaphelyzetbe állítás, így a következő gombnyomásra használható

azonos = 0;

// ha a számláló egy bizonyos számig tart, futtassa a leírt kódbitet

ha (mondó == 166) {

zelda ();

}

//""

különben ha (teller == 386) {

saria ();

}

//""

különben ha (mondó == 266) {

epona ();

}

//""

különben ha (teller == 999) {

// ezt a hangot játssza le a hiba megjelölésére

hang (hangszóró, NOTE_C3, BEATTIME);

// állítsa vissza a számlálót 0 -ra

mondó = 0;

}

}

// a bemenet és a kimenet közötti késleltetés

késleltetés (100);

// kinyomtatja a bemenet értékeit a soros monitoron

Soros.println (k);

}

// ez az első dallam

void zelda () {

// ez beállít egy számlálót, amely frissíti magát a dallam lejátszása közben, hogy el tudja olvasni és leálljon, amikor kell

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

// azt mondja, hogy egy jegyzetnek mennyi ideig kell tartania

int ZTime = 1000 / ZeldaTime ;

// generálja a hangokat

hangszín (hangszóró, Zelda , ZTime);

// létrehozza a megfelelő késleltetést

int szünet = ZTime * 1.30;

késleltetés (szünet);

// visszaállítja a számlálót

mondó = 0;

// kinyomtatja a bemenet értékeit a soros monitoron

Serial.println (teller);

}

}

//""

void epona () {

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

int ETime = 1000 / EponaTime ;

hangszín (hangszóró, Epona , ETime);

int szünet = ETime * 1,30;

késleltetés (szünet);

mondó = 0;

Serial.println (teller);

}

}

//""

void saria () {

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

int STime = 1000 / SariaTime ;

hang (hangszóró, Saria , STime);

int szünet = STime * 1,30;

késleltetés (szünet);

mondó = 0;

Serial.println (teller);

}

}

void rec

hts () {

// ha ezt még nem nyomták meg

ha (ugyanaz == 0) {

// ha a számláló jelenleg rendelkezik ezen értékek egyikével, adja hozzá ezt

ha (teller == 0 || teller == 132 || teller == 165 || teller == 232 || teller == 265 || teller == 331 || teller == 374) {

teller = teller + 1;

}

// egyébként állítsa 999 -re, így hibazajt hall

más {

teller = 999;

}

// állítsa ugyanazt egyre, így az Arduino nem olvassa el a hosszan tartó nyomást többszöri megnyomásként

azonos = 1;

}

// játszani a hangot

más {

hang (hangszóró, NOTE_A4, BEATTIME);

}

// kinyomtatja a bemenet értékeit a soros monitoron

Serial.println (teller); }

//""

void links () {

ha (ugyanaz == 0) {

ha (teller == 133 || teller == 254 || teller == 244 || teller == 332 || teller == 375 || teller == 221) {

teller = teller + 11;

}

különben ha (mondó == 0) {

elbeszélő = 111;

}

más {

teller = 999;

}

azonos = 1;

} más{

hangszín (hangszóró, NOTE_B4, BEATTIME);

} Sorozat.println (elbeszélő);

}

//""

void boven () {

ha (ugyanaz == 0) {ha (teller == 111 || teller == 144 || teller == 233) {

teller = teller + 21;

}

különben ha (mondó == 0) {

elbeszélő = 221;

}

más {

teller = 999;

}

azonos = 1;

}

más {

hang (hangszóró, NOTE_D5, BEATTIME);

Serial.println (teller);

}

}

//""

void onder () {

ha (ugyanaz == 0) {

ha (mondó == 343) {

teller = teller + 31;

}

különben ha (mondó == 0) {

elbeszélő = 331;

} más {

teller = 999;

} azonos = 1;

} más {

hang (hangszóró, NOTE_F4, BEATTIME);

Serial.println (teller);

}

}

//""

void a () {

ha (ugyanaz == 0) {

ha (mondó == 0) {

elbeszélő = 461;

}

más {

teller = 999;

}

azonos = 1;

}

hang (hangszóró, NOTE_D4, BEATTIME);

Serial.println (teller);

}

Ajánlott: