Kazalo:

Arduino sestavljanka: 7 korakov
Arduino sestavljanka: 7 korakov

Video: Arduino sestavljanka: 7 korakov

Video: Arduino sestavljanka: 7 korakov
Video: ПЕРВАЯ СХЕМА НА АРДУИНО [Уроки Arduino #4] 2024, Julij
Anonim
Arduino škatla s sestavljankami
Arduino škatla s sestavljankami

Za ta projekt bomo izdelali sestavljanko, ki deluje z glasbo. Osnovni bistvo tega je, da ob pritisku na gumb sprosti melodijo in Arduino izračuna, kateri gumbi so pritisnjeni, tako da ve, kaj je pravi in kaj napačen odgovor.

Zaloge

1 x Arduino uno

1 x 1k ohmski upor

5 x 220 ohmski upori

1 x zvočnik Piezo

5 x gumb 6x6 mm

1 x nastavljene mostične žice

1 x perf/deska

1 x set za spajkanje

1 x tečaj

1x sponka

1 x majhna komoda/les

1x pištola za vroče lepilo + lepilne palice

1 x 9v baterija + držalo

malo worbla

barve

Korak 1:

Slika
Slika

Za začetek morate pritisniti zatiče na ploščo. Zdaj povežite analog 2 z žico na vogal plošče. Na to bomo v linijo priključili dva upora. Prvi je 10k ohmski upor. Na drugi konec tega upora priključimo žico na analogno ozemljitev. Drugi upor je 220 ohmski upor, ki ga povežemo s prvim gumbom. Za povezavo druge odprte strani gumba z drugim gumbom uporabite drug upor iste vrednosti. Povežite takšne gumbe do zadnjega. Na zadnjem primete žico in jo povežete z ustrezno zaprto stranjo gumba ter jo povežete z naslednjo v vrsti. Zdaj ponovite postopek, ki ste ga izvedli z upori, ki jih poznate le z navadnimi žicami. Prvi gumb povežite z analognimi 3, 3V vrati na vašem Arduinu. Vse skupaj boste dobili nekakšno križno podobo, kot je prikazano spodaj.

2. korak:

Nato priključite zvočni signal na ploščo in pritrdite eno stran na digitalno ozemljitev, drugo pa na vrata 12. Pametno je, da naslednjo kodo že naložite v svoj Arduino, da lahko preizkusite, ali vse deluje pravilno. Če je tako, lahko začnete spajkati komponente skupaj. To naredite tako, da jih vzamete iz plošče in žice in povezave neposredno spajkate. Če menite, da med gumbi potrebujete več dolžine, lahko med upore dodate nekaj dodatne žice. Okvir na tej točki ni več potreben.

3. korak:

Slika
Slika

Ko je vse spajkano, je čas za izdelavo same škatle. Za podlago sem uporabil poceni komplet predalov. Preprosto sem prerezal na pol po dolžini in odstranil hrbet in stran, ki sem jo prerezal. Zdaj bi morali imeti dva kosa v obliki črke c. Odrežite eno stran enega od njih, da ga uporabite kot pokrov. Zdaj zavrtite enega od preostalih kosov, tako da se prilegajo skupaj kot škatla brez pokrovov, in jih zlepite skupaj. Ko se lepilo pravilno strdi, izvrtajte majhno luknjo na vsaki strani škatle za gumbe in večjo za zvočni signal v pokrovu.

4. korak:

Slika
Slika
Slika
Slika

Zdaj lahko začnete slikati škatlo. Jaz sem naredil svoj s cvetličnim dizajnom, ki temelji na BOTW, vendar lahko resnično izberete poljuben dizajn. Ko to storite, lahko gumbe vstavite v luknje in nalepite globino lepila na zadnjo stran gumba in les v okolici. Enako načelo velja za zvočni signal, vendar se moj popolnoma prilega luknji, zaradi česar ni potreben. Nato vzamete nekaj worble in segrejte ter ga razrežite, da naredite nekaj majhnih gumbov. Previdno jih prilepite na gumbe, vendar pazite, da ne uporabite preveč lepila, ker se vam lahko gumbi pomotoma zataknejo. Sedaj jih lahko pobarvate, da se bodo bolj zlili s škatlo.

5. korak:

Na koncu lepite ali privijte objemko in tečaje na škatli in pokrovu, ki povezuje oba.

6. korak:

Zdaj, ko je škatla končana, morate vstaviti Arduino in baterijo v notranjost ter zapreti pokrov.

7. korak: Koda

// To je koda za uganko/glasbeno skrinjico na temo Zelda.

// to poveže vašo kodo s seznamom beležk na drugem zavihku

#include "pitches.h"

// ta spremenljivka bo zagotovila, da Arduino vidi daljši pritisk gumba kot samo en pritisk

int enako = 0;

// tukaj bo prebral vaš vnos

int k = 2;

// to je vaš izhodni pin

int zvočnik = 12;

// spodaj so zaključ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_ NOTE_ NOTE_ 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 zapiska

int BEATTIME = 300;

// števec, ki ga bomo spremljali, če smo v rešitvi

int števec = 0;

void setup () {

Serial.begin (9600);

pinMode (2, INPUT);

pinMode (1, INPUT);

}

void loop () {

// bere vnos iz zatičev

k = analogRead (2);

int p = analogRead (1);

// če ni pritisnjen noben gumb, ne sme biti tona

če (teller == 0) {

noTone (12);

}

// če odčitani podatki ustrezajo parametrom, zaženite opisani bit kode

če (k> 320 && k <350) {

rechts ();

}

//""

sicer če (k 290) {

povezave ();

}

//""

sicer če (k> 260 && k <280) {

boven ();

}

//""

sicer če (k> 240 && k <260) {

onder ();

}

//""

sicer če (k> 220 && k <240) {

a ();

}

// če se ne (ko ni pritisnjen noben gumb), zaženite to kodo

drugače {

// ponastavi isto, tako da jo lahko uporabite naslednjič, ko pritisnete gumb

enako = 0;

// če je števec do določenega števila, zaženite opisani bit kode

če (teller == 166) {

zelda ();

}

//""

sicer če (teller == 386) {

saria ();

}

//""

sicer če (teller == 266) {

epona ();

}

//""

sicer če (teller == 999) {

// predvajamo ta ton, da označimo napako

ton (zvočnik, NOTE_C3, BEATTIME);

// ponastavimo števec na 0

blagajnik = 0;

}

}

// zakasnitev med vhodom in izhodom

zamuda (100);

// natisne vrednosti vašega vnosa na serijskem monitorju

Serial.println (k);

}

// to je prva melodija

void zelda () {

// s tem nastavimo števec, ki se med predvajanjem melodije posodobi, tako da jo lahko prebere in ustavi, ko se mora

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

// pove, kako dolgo naj traja zapisek

int ZTime = 1000 / ZeldaTime ;

// ustvarja tone

ton (zvočnik, Zelda , ZTime);

// ustvari pravilno zakasnitev

int pause = ZTime * 1,30;

zamuda (premor);

// ponastavi števec

blagajnik = 0;

// natisne vrednosti vašega vnosa na serijskem monitorju

Serial.println (blagajnik);

}

}

//""

void epona () {

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

int ETime = 1000 / EponaTime ;

ton (zvočnik, Epona , ETime);

int pause = ETime * 1,30;

zamuda (premor);

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;

zamuda (premor);

blagajnik = 0;

Serial.println (blagajnik);

}

}

void rec

hts () {

// če to še ni bilo pritisnjeno

če (enako == 0) {

// če števec trenutno vsebuje eno od teh vrednosti, mu to dodajte

če (teller == 0 || teller == 132 || teller == 165 || teller == 232 || teller == 265 || teller == 331 || bančnik == 374) {

blagajnik = števec + 1;

}

// drugače nastavite na 999, da slišite hrup napake

drugače {

blagajnik = 999;

}

// nastavite enako na eno, tako da Arduino ne bere daljšega tiska kot večkratnih pritiskov

enako = 1;

}

// predvajajte ton

drugače {

ton (zvočnik, NOTE_A4, BEATTIME);

}

// natisne vrednosti vašega vnosa na serijskem monitorju

Serial.println (blagajnik); }

//""

void links () {

če (enako == 0) {

če (teller == 133 || teller == 254 || teller == 244 || teller == 332 || teller == 375 || bančnik == 221) {

blagajnik = blagajnik + 11;

}

sicer če (teller == 0) {

blagajnik = 111;

}

drugače {

blagajnik = 999;

}

enako = 1;

} drugo {

ton (zvočnik, NOTE_B4, BEATTIME);

} Serial.println (blagajnik);

}

//""

void boven () {

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

blagajnik = blagajnik + 21;

}

sicer če (teller == 0) {

blagajnik = 221;

}

drugače {

blagajnik = 999;

}

enako = 1;

}

drugače {

ton (zvočnik, NOTE_D5, BEATTIME);

Serial.println (blagajnik);

}

}

//""

void onder () {

če (enako == 0) {

če (teller == 343) {

blagajnik = blagajnik + 31;

}

sicer če (teller == 0) {

blagajnik = 331;

} drugo {

blagajnik = 999;

} enako = 1;

} drugo {

ton (zvočnik, NOTE_F4, BEATTIME);

Serial.println (blagajnik);

}

}

//""

void a () {

če (enako == 0) {

če (teller == 0) {

blagajnik = 461;

}

drugače {

blagajnik = 999;

}

enako = 1;

}

ton (zvočnik, NOTE_D4, BEATTIME);

Serial.println (blagajnik);

}

Priporočena: