Sadržaj:

Arduino slagalica: 7 koraka
Arduino slagalica: 7 koraka

Video: Arduino slagalica: 7 koraka

Video: Arduino slagalica: 7 koraka
Video: Rubikova kocka 3x3x3: algoritam R'DRD' 2024, Srpanj
Anonim
Arduino kutija slagalica
Arduino kutija slagalica

Za ovaj projekt napravit ćemo slagalicu koja radi s glazbom. Osnovna srž toga je da kada pritisnete gumb, on pušta melodiju, a Arduino izračunava koji su gumbi pritisnuti tako da zna što je ispravno, a što krivo.

Pribor

1 x Arduino uno

1 x 1k Ohm otpornik

Otpornici 5 x 220 Ohm

1 xPiezo zujalica

5 x tipkalo 6x6 mm

1 x postavljene kratkospojne žice

1 x perf/ploča

1 x set za lemljenje

1 x šarke

1 x stezaljka

1 x mala komoda/drvo

1x pištolj za vruće ljepilo + štapići za ljepilo

1 x 9v baterija + držač

malo worbla

boja

Korak 1:

Slika
Slika

Za početak morate pritisnuti iglice na ploču s ploču. Sada spojite analogni 2 žicom s kutom ploče. Na njega ćemo u liniju spojiti dva otpornika. Prvi je otpornik od 10 k Ohma. Na drugi kraj ovog otpornika spojimo žicu na analogno uzemljenje. Drugi otpornik je otpornik od 220 Ohma koji povezujemo s prvim gumbom. Upotrijebite drugi otpornik iste vrijednosti za povezivanje druge otvorene strane gumba s drugom tipkom. Nastavite povezivati ovakve gumbe do posljednjeg. Na posljednjoj zgrabite žicu i spojite je na odgovarajuću zatvorenu stranu gumba i spojite je sa sljedećom u nizu. Sada ponavljate postupak koji ste radili s otpornicima koji su poznati samo običnim žicama. Spojite prvi gumb na analogni 3, 3V priključak na vašem Arduinu. Sve u svemu, dobit ćete neku vrstu križnog uzorka kako je dolje prikazano.

Korak 2:

Zatim priključite zujalicu u matičnu ploču i pričvrstite jednu stranu na digitalno uzemljenje, a drugu na 12 priključak. Pametno je već prenijeti sljedeći kod u svoj Arduino kako biste mogli provjeriti radi li sve ispravno. Ako jeste, možete početi lemiti komponente zajedno. Učinite to tako da ih izvadite iz matične ploče i izravno zalemite žice i spojeve. Ako mislite da vam je potrebna veća duljina između gumba, možete dodati dodatnu žicu između otpornika. Okvir u ovom trenutku više nije potreban.

3. korak:

Slika
Slika

Nakon što je sve zalemljeno, vrijeme je za izradu same kutije. Koristio sam jeftin set ladica kao osnovu za svoju. Jednostavno sam prepolovio po dužini i uklonio stražnju stranu i stranu koju sam prerezao. Sada biste trebali imati dva komada u obliku slova C. Odrežite jednu stranu jednog od njih kako biste ih koristili kao poklopac. Sada okrenite jedan od preostalih komada tako da se uklapaju poput kutije bez poklopca i zalijepite ih zajedno. Nakon što se ljepilo pravilno steglo, izbušite malu rupu na svakoj strani kutije za gumbe i veću za zujalicu u poklopcu.

Korak 4:

Slika
Slika
Slika
Slika

Sada možete pristupiti slikanju kutije. Ja sam svoj napravio s cvjetnim dizajnom temeljenim na BOTW -u, ali zaista možete odabrati bilo koji dizajn koji želite. Nakon što to učinite, gumbe možete staviti u rupe i staviti globus ljepila na stražnju stranu gumba i okolno drvo. Isti princip vrijedi i za zujalicu, ali moja je savršeno pristajala u rupu čineći je nepotrebnom. Zatim uzmete malo worble i zagrijete te je izrežete kako biste napravili neke male gumbe. Pažljivo ih zalijepite na gumbe, ali pazite da ne koristite previše ljepila jer biste mogli slučajno zaglaviti gumbe. Sada ih možete obojiti kako biste se više stopili s kutijom.

5. korak:

Na kraju zalijepite ili zavijte, stezaljku i šarke na kutiji i poklopcu koji ih spajaju.

Korak 6:

Sada kada je vaša kutija potpuna, sve što trebate učiniti je staviti Arduino i bateriju u nju te zatvoriti poklopac.

Korak 7: Kodirajte

// Ovo je kôd za zagonetku/glazbenu kutiju sa temom Zelda.

// ovo povezuje vaš kôd s popisom bilješki na drugoj kartici

#include "parcele.h"

// ova varijabla će osigurati da Arduino vidi dulji pritisak gumba kao samo jedan pritisak

int isto = 0;

// odavde će čitati vaš unos

int k = 2;

// ovo je vaš izlazni pin

int zvučnik = 12;

// ispod su završne melodije

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_5, NOTE_5, NOTE5

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

// normalno trajanje note

int BEATTIME = 300;

// brojač kojeg ćemo pratiti da smo u rješenju

int blagajnik = 0;

void setup () {

Serial.begin (9600);

pinMode (2, INPUT);

pinMode (1, INPUT);

}

void loop () {{100} {101}

// čita ulaz iz pinova

k = analogRead (2);

int p = analogRead (1);

// ako nije pritisnuta niti jedna tipka, ne bi trebalo biti ni tona

if (teller == 0) {

noTone (12);

}

// ako očitani podaci odgovaraju parametrima, pokrenite opisani bit koda

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

rechts ();

}

//""

inače ako (k 290) {

veze ();

}

//""

inace if (k> 260 && k <280) {

boven ();

}

//""

inace if (k> 240 && k <260) {

onder ();

}

//""

inace if (k> 220 && k <240) {

a ();

}

// ako nema (kad se ne pritisne nijedan gumb), pokrenite ovaj kôd

drugo {

// resetirati isto pa se može koristiti sljedeći put kada pritisnete gumb

isto = 0;

// ako je brojač do određenog broja, pokrenite opisani bit koda

if (blagajnik == 166) {

zelda ();

}

//""

inace if (teller == 386) {

saria ();

}

//""

inace if (teller == 266) {

epona ();

}

//""

inace if (teller == 999) {

// pusti ovaj ton za označavanje pogreške

ton (zvučnik, NOTE_C3, BEATTIME);

// resetirati brojač na 0

blagajnik = 0;

}

}

// kašnjenje između ulaza i izlaza

kašnjenje (100);

// ispisuje vrijednosti vašeg unosa na serijskom monitoru

Serijski.println (k);

}

// ovo je prva melodija

void zelda () {

// ovo postavlja brojač koji se ažurira tijekom sviranja melodije kako bi je mogao pročitati i zaustaviti kad treba

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

// kaže koliko bi bilješka trebala trajati

int ZTime = 1000 / ZeldaTime ;

// generira tonove

ton (zvučnik, Zelda , ZTime);

// stvara ispravno kašnjenje

int pause = ZTime * 1,30;

odgoda (stanka);

// resetira brojač

blagajnik = 0;

// ispisuje vrijednosti vašeg unosa na serijskom monitoru

Serial.println (blagajnik);

}

}

//""

void epona () {

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

int ETime = 1000 / EponaTime ;

ton (zvučnik, Epona , ETime);

int pause = ETime * 1,30;

odgoda (stanka);

blagajnik = 0;

Serial.println (blagajnik);

}

}

//""

void saria () {

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

int STime = 1000 / SariaTime ;

ton (govornik, Saria , STime);

int pause = STime * 1,30;

odgoda (stanka);

blagajnik = 0;

Serial.println (blagajnik);

}

}

void rec

hts () {

// ako ovo već nije pritisnuto

ako (isto == 0) {

// ako brojač trenutno ima jednu od ovih vrijednosti, dodajte mu to

if (kazivač == 0 || kazivač == 132 || kazivač == 165 || kazivač == 232 || kazivač == 265 || kazivač == 331 || kazivač == 374) {

kazivač = kazivač + 1;

}

// U suprotnom postavite na 999 tako da čujete šum pogreške

drugo {

blagajnik = 999;

}

// postavi isto na jedan tako da Arduino ne čita dulji tisak kao višestruke pritiske

isto = 1;

}

// pusti ton

drugo {

ton (zvučnik, NOTE_A4, BEATTIME);

}

// ispisuje vrijednosti vašeg unosa na serijskom monitoru

Serial.println (blagajnik); }

//""

void links () {

ako (isto == 0) {

if (kazivač == 133 || kazivač == 254 || kazivač == 244 || kazivač == 332 || kazivač == 375 || kazivač == 221) {

blagajnik = blagajnik + 11;

}

inace if (teller == 0) {

blagajnik = 111;

}

drugo {

blagajnik = 999;

}

isto = 1;

} else {

ton (zvučnik, NOTE_B4, BEATTIME);

} Serial.println (blagajnik);

}

//""

void boven () {

if (isto == 0) {if (teller == 111 || teller == 144 || teller == 233) {

blagajnik = blagajnik + 21;

}

inace if (teller == 0) {

blagajnik = 221;

}

drugo {

blagajnik = 999;

}

isto = 1;

}

drugo {

ton (zvučnik, NOTE_D5, BEATTIME);

Serial.println (blagajnik);

}

}

//""

void onder () {

ako (isto == 0) {

if (teller == 343) {

blagajnik = blagajnik + 31;

}

inace if (teller == 0) {

blagajnik = 331;

} else {

blagajnik = 999;

} isto = 1;

} else {

ton (zvučnik, NOTE_F4, BEATTIME);

Serial.println (blagajnik);

}

}

//""

void a () {

ako (isto == 0) {

if (teller == 0) {

blagajnik = 461;

}

drugo {

blagajnik = 999;

}

isto = 1;

}

ton (zvučnik, NOTE_D4, BEATTIME);

Serial.println (blagajnik);

}

Preporučeni: