Satura rādītājs:

Arduino mīklu kaste: 7 soļi
Arduino mīklu kaste: 7 soļi

Video: Arduino mīklu kaste: 7 soļi

Video: Arduino mīklu kaste: 7 soļi
Video: Lesson 22: Using Seven Segment Display with Arduino and Electronic Dice | SunFounder Robojax 2024, Jūlijs
Anonim
Arduino mīklu kaste
Arduino mīklu kaste

Šim projektam mēs izgatavosim mīklu kastīti, kas darbojas ar mūziku. Pamata būtība ir tāda, ka, nospiežot pogu, tiek atskaņota melodija, un Arduino aprēķina, kuras pogas tiek nospiestas, lai zinātu, kas ir pareizs un kas ir nepareiza atbilde.

Piegādes

1 x Arduino uno

1 x 1k omu rezistors

5 x 220 omi rezistori

1 x Piezo skaņas signāls

5 x spiedpoga 6x6 mm

1 x komplekts Jumper vadi

1 x perforācijas/sloksnes dēlis

1 x lodēšanas komplekts

1 x eņģe

1 x skava

1 x maza kumode/koks

1x karstās līmes pistole + līmes spieķi

1 x 9V akumulators + turētājs

mazliet darba

krāsot

1. darbība:

Attēls
Attēls

Lai sāktu ar to, jums ir jānospiež tapas maizes dēļā. Tagad pievienojiet analogo 2 ar vadu tāfeles stūrim. Mēs tam līnijā pievienosim divus rezistorus. Pirmais ir 10k omu rezistors. Šī rezistora otrā galā mēs savienojam vadu ar analogo zemi. Otrais rezistors ir 220 omu rezistors, kuru mēs savienojam ar pirmo pogu. Izmantojiet citu tādas pašas vērtības rezistoru, lai pogas otro atvērto pusi savienotu ar otro pogu. Turpiniet savienot šādas pogas līdz pēdējai. Pēdējā jūs paņemat vadu un pievienojat to attiecīgajai slēgtajai pogas pusei un pievienojat to nākamajai rindā. Tagad jūs atkārtojat procesu, ko veicāt ar rezistoriem, kas zināmi tikai ar vienkāršiem vadiem. Savienojiet pirmo pogu ar Arduino analogo 3, 3V portu. Kopumā jūs saņemsiet sava veida krustojumu, kā parādīts zemāk.

2. darbība:

Tālāk pievienojiet skaņas signālu maizes dēlim un vienu pusi piestipriniet pie digitālās zemes, bet otru - pie 12 porta. Ir prātīgi jau augšupielādēt šo kodu savā Arduino, lai jūs varētu pārbaudīt, vai viss darbojas pareizi. Ja tā ir, varat sākt komponentu lodēšanu kopā. Dariet to, izņemot tos no maizes dēļa un tieši pielodējot vadus un savienojumus. Ja domājat, ka starp pogām ir nepieciešams vairāk garuma, starp rezistoriem varat pievienot papildu vadu. Maizes dēlis šajā brīdī vairs nav nepieciešams.

3. darbība:

Attēls
Attēls

Kad viss ir pielodēts, ir pienācis laiks izgatavot pašu kastīti. Es izmantoju lētu atvilktņu komplektu kā pamatu manai. Vienkārši pārgriezu uz pusēm gareniski un noņēmu muguru un sānu, kuram izgriezu cauri. Tagad jums vajadzētu būt diviem c formas gabaliem. Izgrieziet vienu no tām, lai izmantotu kā vāku. Tagad pagrieziet vienu no atlikušajiem gabaliem, lai tie atbilstu kā kastīte bez vāka, un salīmējiet tos kopā. Kad līme ir kārtīgi sacietējusi, katrā lodziņa pusē urbiet nelielu caurumu pogām un lielāku - vāka skaņas signālam.

4. solis:

Attēls
Attēls
Attēls
Attēls

Tagad jūs varat ķerties pie kastes krāsošanas. Es to izdarīju ar ziedu dizainu, kura pamatā ir BOTW, bet jūs patiešām varat izvēlēties jebkuru vēlamo dizainu. Kad tas ir izdarīts, pogas var ievietot caurumu iekšpusē un pogas aizmugurē un apkārt esošajā kokā uzlikt līmi. Tas pats princips attiecas arī uz skaņas signālu, bet manējais lieliski iederas caurumā, padarot to nevajadzīgu. Tālāk jūs paņemat dažas darba vietas un sasildāt un sagriežat, lai izveidotu dažas mazas pogas. Uzmanīgi pielīmējiet tās uz pogām, taču nelietojiet pārāk daudz līmes, jo pogas var nejauši iestrēgt. Tagad jūs varat tos pārkrāsot, lai tie vairāk sajauktos ar kastīti.

5. darbība:

Visbeidzot, jūs pielīmējat vai skrūvējat, skavu un eņģes uz kastes un vāka, kas savieno abus.

6. darbība

Tagad, kad jūsu kaste ir pabeigta, viss, kas jums jādara, ir ievietot Arduino un akumulatoru tajā un aizvērt vāku.

7. solis: kods

// Šis ir Zelda tēmas mīklas/mūzikas kastes kods.

// tas savieno jūsu kodu ar piezīmju sarakstu citā cilnē

#include "piķi.h"

// šis mainīgais nodrošinās, ka Arduino ilgāku pogas nospiešanu redz tikai vienu nospiešanu

int vienāds = 0;

// no šejienes tas lasīs jūsu ievadīto informāciju

int k = 2;

// šī ir jūsu izejas tapa

int runātājs = 12;

// zemāk ir beigu melodijas

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

// normāls piezīmes ilgums

int BEATTIME = 300;

// skaitītājs, kas sekos, ja mēs atrodamies risinājumā

int teicējs = 0;

void setup () {

Sērijas sākums (9600);

pinMode (2, INPUT);

pinMode (1, INPUT);

}

void loop () {

// nolasa ievadi no tapām

k = analogRead (2);

int p = analogRead (1);

// ja nav nospiesta neviena poga, nedrīkst būt signāla

ja (teicējs == 0) {

noTone (12);

}

// ja nolasītie dati atbilst parametriem, palaidiet aprakstīto koda bitu

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

rechts ();

}

//""

citādi, ja (k 290) {

saites ();

}

//""

citādi, ja (k> 260 && k <280) {

boven ();

}

//""

citādi, ja (k> 240 && k <260) {

onder ();

}

//""

citādi, ja (k> 220 && k <240) {

a ();

}

// ja tā nav (ja netiek nospiesta neviena poga), palaidiet šo kodu

cits {

// atiestatīt to pašu, lai to varētu izmantot nākamreiz, nospiežot pogu

tas pats = 0;

// ja skaitītājs ir līdz noteiktam skaitlim, palaidiet aprakstīto koda bitu

ja (teicējs == 166) {

zelda ();

}

//""

citādi, ja (teicējs == 386) {

Sārija ();

}

//""

citādi, ja (teicējs == 266) {

epona ();

}

//""

citādi, ja (teicējs == 999) {

// atskaņot šo signālu, lai atzīmētu kļūdu

tonis (skaļrunis, NOTE_C3, BEATTIME);

// atiestatīt skaitītāju uz 0

teicējs = 0;

}

}

// aizkave starp ievadi un izvadi

kavēšanās (100);

// izdrukā jūsu ievadītās vērtības seriālajā monitorā

Sērijas.println (k);

}

// šī ir pirmā melodija

void zelda () {

// tas nosaka skaitītāju, kas sevi atjaunina, atskaņojot melodiju, lai tā varētu to izlasīt un apstāties, kad vajadzētu

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

// saka, cik ilgi vajadzētu notis

int ZTime = 1000 / ZeldaTime ;

// ģenerē toņus

tonis (skaļrunis, Zelda , ZTime);

// rada pareizu aizkavi

int pauze = ZTime * 1,30;

kavēšanās (pauze);

// atiestata skaitītāju

teicējs = 0;

// izdrukā jūsu ievadītās vērtības seriālajā monitorā

Serial.println (teicējs);

}

}

//""

void epona () {

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

int ETime = 1000 / EponaTime ;

tonis (skaļrunis, Epona , ETime);

int pauze = ETime * 1,30;

kavēšanās (pauze);

teicējs = 0;

Serial.println (teicējs);

}

}

//""

void saria () {

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

int STime = 1000 / SariaTime ;

tonis (runātājs, Saria , STime);

int pauze = STime * 1,30;

kavēšanās (pauze);

teicējs = 0;

Serial.println (teicējs);

}

}

anulēts rec

hts () {

// ja šis vēl nebija nospiests

ja (tas pats == 0) {

// ja skaitītājam pašlaik ir viena no šīm vērtībām, pievienojiet to

ja (teicējs == 0 || teicējs == 132 || teicējs == 165 || teicējs == 232 || teicējs == 265 || teicējs == 331 || teicējs == 374) {

teicējs = teicējs + 1;

}

// citādi iestatiet to uz 999, lai jūs dzirdētu kļūdas troksni

cits {

teicējs = 999;

}

// iestatiet to pašu uz vienu, lai Arduino nelasītu ilgstošu presi kā vairākas reizes

tas pats = 1;

}

// spēlēt toni

cits {

tonis (skaļrunis, NOTE_A4, BEATTIME);

}

// izdrukā jūsu ievadītās vērtības seriālajā monitorā

Serial.println (teicējs); }

//""

tukšas saites () {

ja (tas pats == 0) {

ja (teicējs == 133 || teicējs == 254 || teicējs == 244 || teicējs == 332 || teicējs == 375 || teicējs == 221) {

teicējs = teicējs + 11;

}

citādi, ja (teicējs == 0) {

teicējs = 111;

}

cits {

teicējs = 999;

}

tas pats = 1;

} vēl {

tonis (skaļrunis, NOTE_B4, BEATTIME);

} Serial.println (teicējs);

}

//""

void boven () {

ja (tas pats == 0) {ja (teicējs == 111 || teicējs == 144 || teicējs == 233) {

teicējs = teicējs + 21;

}

citādi, ja (teicējs == 0) {

teicējs = 221;

}

cits {

teicējs = 999;

}

tas pats = 1;

}

cits {

tonis (skaļrunis, NOTE_D5, BEATTIME);

Serial.println (teicējs);

}

}

//""

void onder () {

ja (tas pats == 0) {

ja (teicējs == 343) {

teicējs = teicējs + 31;

}

citādi, ja (teicējs == 0) {

teicējs = 331;

} vēl {

teicējs = 999;

} tas pats = 1;

} vēl {

tonis (skaļrunis, NOTE_F4, BEATTIME);

Serial.println (teicējs);

}

}

//""

anulēts a () {

ja (tas pats == 0) {

ja (teicējs == 0) {

teicējs = 461;

}

cits {

teicējs = 999;

}

tas pats = 1;

}

tonis (skaļrunis, NOTE_D4, BEATTIME);

Serial.println (teicējs);

}

Ieteicams: