Sisukord:

Arduino mõistatuskast: 7 sammu
Arduino mõistatuskast: 7 sammu

Video: Arduino mõistatuskast: 7 sammu

Video: Arduino mõistatuskast: 7 sammu
Video: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, Juuni
Anonim
Arduino mõistatuste kast
Arduino mõistatuste kast

Selle projekti jaoks valmistame mõistatuskarbi, mis töötab muusikaga. Selle põhiolemus on see, et kui vajutate nuppu, vabastab see viisi ja Arduino arvutab, milliseid nuppe vajutatakse, nii et ta teab, mis on õige ja mis vale vastus.

Tarvikud

1 x Arduino uno

1 x 1 kΩ takisti

5 x 220 oomi takistid

1 x Piezo summer

5 x nupp 6x6 mm

1 x komplekt Jumper juhtmed

1 x perf/ribaplaat

1 x jootekomplekt

1 x liigend

1 x klamber

1 x väike kummut/puit

1x kuum liimipüstol + liimipulgad

1 x 9v aku + hoidik

natuke muret

värvida

Samm 1:

Pilt
Pilt

Alustuseks peate vajutama oma leivalauale nööpnõelad. Nüüd ühendage analoog 2 juhtmega plaadi nurga külge. Me ühendame sellega kaks takisti reas. Esimene on 10k oomi takisti. Selle takisti teise otsa ühendame juhtme analoogmaandusega. Teine takisti on 220 oomi takisti, mille ühendame esimese nupuga. Kasutage teist sama väärtusega takistit, et ühendada nupu teine avatud külg teise nupuga. Jätkake selliste nuppude ühendamist viimasega. Viimasel võtate juhtmest kinni ja ühendate selle nupu vastava suletud küljega ning ühendate selle järgmisega. Nüüd kordate protsessi, mida tegite takistitega, mida teame ainult tavaliste juhtmetega. Ühendage esimene nupp oma Arduino analoog -3, 3V pordiga. Kokkuvõttes saate mingi ristipatteri, nagu allpool kujutatud.

2. samm:

Seejärel ühendage helisignaal leivaplaadiga ja kinnitage üks külg digitaalse maanduse külge ja teine 12 -porti. Tark on juba järgmine kood oma Arduinosse üles laadida, et saaksite testida, kas kõik töötab õigesti. Kui see on nii, võite hakata komponente kokku jootma. Selleks võtke need leivaplaadist välja ja jootke juhtmed ja ühendused otse kokku. Kui arvate, et vajate nuppude vahel rohkem pikkust, saate takistite vahele lisada lisatraadi. Leivalaud pole praegu enam vajalik.

3. samm:

Pilt
Pilt

Kui kõik on joodetud, on aeg karp ise valmistada. Mina kasutasin oma alusena odavat sahtlikomplekti. Lõikasin lihtsalt pikuti pooleks ja eemaldasin selja ja külje, mille läbi lõikasin. Nüüd peaks teil olema kaks c -kujulist tükki. Lõigake üks neist ühest küljest, et seda kaanena kasutada. Nüüd pöörake üht ülejäänud tükki nii, et need sobiksid kokku nagu kaaneta kast ja liimige need kokku. Kui liim on korralikult tardunud, puurige kasti mõlemasse külge väike auk nuppude jaoks ja suurem kaane sumina jaoks.

4. samm:

Pilt
Pilt
Pilt
Pilt

Nüüd saate hakata kasti värvima. Ma tegin oma BOTW -l põhineva lillekujundusega, kuid saate tõesti valida mis tahes kujunduse. Pärast seda saate nööbid aukudesse panna ja nööbi tagaküljele ning ümbritsevale puidule liimikera panna. Sama põhimõte kehtib sumisti kohta, kuid minu oma sobib ideaalselt auku, muutes selle tarbetuks. Järgmisena haarate töölaua ja kuumutate ning lõigake see väikeste nuppude tegemiseks. Liimige need ettevaatlikult nuppude külge, kuid ärge kasutage liiga palju liimi, sest võite nupud kogemata kinni jääda. Nüüd saate need üle värvida, et need karbiga paremini seguneksid.

5. samm:

Lõpuks liimite või kruvite, klamber ja hinged karbil ja kaanel, mis neid kahte ühendavad.

6. samm:

Nüüd, kui teie kast on valmis, peate vaid panema Arduino ja aku selle sisse ning sulgema kaas.

Samm: kood

// See on Zelda -teemalise pusle/muusikakasti kood.

// see ühendab teie koodi märkmete loendiga teisel vahekaardil

#include "pitchid.h"

// see muutuja tagab, et Arduino näeb nupu pikemat vajutamist vaid ühe vajutusena

int sama = 0;

// siit loeb see teie sisendit

int k = 2;

// see on teie väljundnõel

int kõneleja = 12;

// allpool on lõppmeloodiad

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};

// noodi tavaline kestus

int BEATTIME = 300;

// loendur, mida me jälgime, kui oleme lahenduses

int teller = 0;

tühine seadistus () {

Seriaalne algus (9600);

pinMode (2, INPUT);

pinMode (1, INPUT);

}

void loop () {

// loeb sisendit tihvtidelt

k = analoogLoe (2);

int p = analoogLoe (1);

// kui ühtegi nuppu ei vajutata, ei tohiks tooni olla

kui (teller == 0) {

noTone (12);

}

// kui loetud andmed vastavad parameetritele, käivitage kirjeldatud koodibitt

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

rechts ();

}

//""

muidu kui (k 290) {

lingid ();

}

//""

muidu kui (k> 260 && k <280) {

kootud ();

}

//""

muidu kui (k> 240 && k <260) {

onder ();

}

//""

muidu kui (k> 220 && k <240) {

a ();

}

// kui seda ei tehta (kui ühtegi nuppu ei vajutata), käivitage see kood

muu {

// lähtesta sama, et seda saaks järgmisel nupuvajutusel kasutada

sama = 0;

// kui loendur on teatud arvuni, käivitage kirjeldatud koodibitt

kui (teller == 166) {

zelda ();

}

//""

muidu kui (teller == 386) {

saria ();

}

//""

muidu kui (teller == 266) {

epona ();

}

//""

muidu kui (teller == 999) {

// esita seda tooni vea märkimiseks

toon (kõlar, NOTE_C3, BEATTIME);

// lähtesta loendur 0 -le

teller = 0;

}

}

// viivitus sisendi ja väljundi vahel

viivitus (100);

// prindib jadamonitori sisendi väärtused

Seeria.println (k);

}

// see on esimene meloodia

tühine zelda () {

// see seab loenduri, mis värskendab ennast meloodia esitamise ajal, et see saaks seda lugeda ja peatada, kui peaks

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

// ütleb, kui kaua peaks noot kestma

int ZTime = 1000 / ZeldaTime ;

// genereerib toonid

toon (kõneleja, Zelda , ZTime);

// loob õige viivituse

int paus = ZTime * 1.30;

viivitus (paus);

// lähtestab loenduri

teller = 0;

// prindib jadamonitori sisendi väärtused

Serial.println (teller);

}

}

//""

tühine epona () {

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

int ETime = 1000 / EponaTime ;

toon (kõneleja, Epona , ETime);

int paus = ETime * 1.30;

viivitus (paus);

teller = 0;

Serial.println (teller);

}

}

//""

tühine saria () {

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

int STime = 1000 / SariaTime ;

toon (kõneleja, Saria , STime);

int paus = STime * 1.30;

viivitus (paus);

teller = 0;

Serial.println (teller);

}

}

tühine rets

hts () {

// kui seda pole juba vajutatud

kui (sama == 0) {

// kui loenduril on praegu üks neist väärtustest, lisage see sellele

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

teller = teller + 1;

}

// muidu määrake see 999 -le, nii et kuulete veamüra

muu {

teller = 999;

}

// seada samale ühele, nii et Arduino ei loe pikemaajalisi vajutusi mitme vajutusena

sama = 1;

}

// mängi tooni

muu {

toon (kõlar, NOTE_A4, BEATTIME);

}

// prindib jadamonitori sisendi väärtused

Serial.println (teller); }

//""

tühjad lingid () {

kui (sama == 0) {

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

teller = teller + 11;

}

muidu kui (teller == 0) {

teller = 111;

}

muu {

teller = 999;

}

sama = 1;

} muud {

toon (kõlar, NOTE_B4, BEATTIME);

} Serial.println (teller);

}

//""

void boven () {

kui (sama == 0) {kui (teller == 111 || teller == 144 || teller == 233) {

teller = teller + 21;

}

muidu kui (teller == 0) {

teller = 221;

}

muu {

teller = 999;

}

sama = 1;

}

muu {

toon (kõlar, NOTE_D5, BEATTIME);

Serial.println (teller);

}

}

//""

void onder () {

kui (sama == 0) {

kui (teller == 343) {

teller = teller + 31;

}

muidu kui (teller == 0) {

teller = 331;

} muud {

teller = 999;

} sama = 1;

} muud {

toon (kõlar, NOTE_F4, BEATTIME);

Serial.println (teller);

}

}

//""

tühine a () {

kui (sama == 0) {

kui (teller == 0) {

teller = 461;

}

muu {

teller = 999;

}

sama = 1;

}

toon (kõlar, NOTE_D4, BEATTIME);

Serial.println (teller);

}

Soovitan: