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, Juli
Anonim
Arduino slagalica
Arduino slagalica

Za ovaj projekt napravit ćemo slagalicu koja radi s muzikom. Osnovna suština je u tome da kada pritisnete dugme, pušta melodiju, a Arduino izračunava koja su dugmad pritisnuta tako da zna šta je pravi, a šta pogrešan odgovor.

Supplies

1 x Arduino uno

1 x 1k Ohm otpornik

5 x 220 Ohm otpornici

1 xPiezo zujalica

5 x dugme 6x6 mm

1 x postavljene kratkospojne žice

1 x perf/ploča

1 x set za lemljenje

1 x šarka

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:

Image
Image

Za početak morate pritisnuti igle u matičnu 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 drugim gumbom. Nastavite povezivati ovakve tipke do posljednjeg. Na posljednjoj zgrabite žicu i spojite je na odgovarajuću zatvorenu stranu gumba i povežite je sa sljedećom u nizu. Sada ponavljate postupak koji ste izveli s otpornicima samo s običnim žicama. Spojite prvo dugme na analogni 3, 3V port na vašem Arduinu. Sve u svemu, dobit ćete neku vrstu križne slike 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 direktno zalemite žice i veze. Ako mislite da vam je potrebno više duljine između gumba, možete dodati dodatnu žicu između otpornika. Okvir u ovom trenutku više nije potreban.

Korak 3:

Image
Image

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 presjekao. 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 učvrsti, izbušite malu rupu na svakoj strani kutije za gumbe i veću za zujalicu u poklopcu.

Korak 4:

Image
Image
Image
Image

Sada možete pristupiti slikanju kutije. Ja sam napravio svoj sa cvjetnim dizajnom na bazi BOTW -a, 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 dugmeta i okolno drvo. Isti princip vrijedi i za zujalicu, ali moja se savršeno uklapa u rupu čineći je nepotrebnom. Zatim uzmite malo worble i zagrijte pa je izrežite kako biste napravili neke male dugmad. Pažljivo ih zalijepite na dugmad, ali pazite da ne koristite previše ljepila jer biste mogli slučajno zaglaviti dugmad. Sada ih možete obojiti kako biste se više stopili s kutijom.

Korak 5:

Na kraju zalijepite ili zašrafite 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 i zatvoriti poklopac.

Korak 7: Kodirajte

// Ovo je kod za zagonetku/muzičku kutiju sa temom Zelda.

// ovo povezuje vaš kôd sa listom bilješki na drugoj kartici

#include "pitches.h"

// ova varijabla će osigurati da Arduino vidi dulji pritisak na gumb 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

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 teller = 0;

void setup () {

Serial.begin (9600);

pinMode (2, INPUT);

pinMode (1, INPUT);

}

void loop () {{100} {101}

// čita ulaz sa pinova

k = analogRead (2);

int p = analogRead (1);

// ako nije pritisnuto nijedno dugme, ne bi trebalo biti ni tona

if (teller == 0) {

noTone (12);

}

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

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

rechts ();

}

//""

inace if (k 290) {

linkovi ();

}

//""

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

boven ();

}

//""

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

onder ();

}

//""

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

a ();

}

// ako ne radi (kad se ne pritisne nijedno dugme), pokrenite ovaj kod

else {

// resetira isto tako da se može koristiti sljedeći put kada pritisnete dugme

isto = 0;

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

if (teller == 166) {

zelda ();

}

//""

inace if (teller == 386) {

saria ();

}

//""

inace if (teller == 266) {

epona ();

}

//""

inače if (teller == 999) {

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

ton (zvučnik, NOTE_C3, BEATTIME);

// resetira brojač na 0

blagajnik = 0;

}

}

// kašnjenje između ulaza i izlaza

kašnjenje (100);

// ispisuje vrijednosti vašeg unosa na serijskom monitoru

Serial.println (k);

}

// ovo je prva melodija

void zelda () {

// ovo postavlja brojač koji se ažurira tokom sviranja melodije kako bi je mogao pročitati i zaustaviti kada 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;

kašnjenje (pauza);

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

kašnjenje (pauza);

blagajnik = 0;

Serial.println (blagajnik);

}

}

//""

void saria () {

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

int STime = 1000 / SariaTime ;

ton (govornik, Saria , STime);

int pause = STime * 1,30;

kašnjenje (pauza);

blagajnik = 0;

Serial.println (blagajnik);

}

}

void rec

hts () {

// ako ovo već nije pritisnuto

if (isto == 0) {

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

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

blagajnik = šalter + 1;

}

// U suprotnom postavite na 999 da biste čuli šum greške

else {

blagajnik = 999;

}

// postavi isto na jedan tako da Arduino ne čita duže štampanje kao više pritiska

isto = 1;

}

// pusti ton

else {

ton (zvučnik, NOTE_A4, BEATTIME);

}

// ispisuje vrijednosti vašeg unosa na serijskom monitoru

Serial.println (blagajnik); }

//""

void links () {

if (isto == 0) {

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

šalter = šalter + 11;

}

inače if (teller == 0) {

blagajnik = 111;

}

else {

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) {

šalter = šalter + 21;

}

inace if (teller == 0) {

blagajnik = 221;

}

else {

blagajnik = 999;

}

isto = 1;

}

else {

ton (zvučnik, NOTE_D5, BEATTIME);

Serial.println (blagajnik);

}

}

//""

void onder () {

if (isto == 0) {

if (teller == 343) {

blagajnik = blagajnik + 31;

}

inače if (teller == 0) {

blagajnik = 331;

} else {

blagajnik = 999;

} isto = 1;

} else {

ton (zvučnik, NOTE_F4, BEATTIME);

Serial.println (blagajnik);

}

}

//""

void a () {

if (isto == 0) {

if (teller == 0) {

blagajnik = 461;

}

else {

blagajnik = 999;

}

isto = 1;

}

ton (zvučnik, NOTE_D4, BEATTIME);

Serial.println (blagajnik);

}

Preporučuje se: