Sisällysluettelo:

Arduino -palapelirasia: 7 vaihetta
Arduino -palapelirasia: 7 vaihetta

Video: Arduino -palapelirasia: 7 vaihetta

Video: Arduino -palapelirasia: 7 vaihetta
Video: Драм-секвенсор Arduino: 8 дорожек, 16 шагов на такт, 8 тактов на паттерн 2024, Marraskuu
Anonim
Arduinon palapelirasia
Arduinon palapelirasia

Tätä projektia varten aiomme tehdä palapelirasian, joka toimii musiikin kanssa. Perusajatuksena on, että kun painat painiketta, se vapauttaa virityksen ja Arduino laskee painikkeita, jotta se tietää, mikä on oikea ja mikä on väärä vastaus.

Tarvikkeet

1 x Arduino uno

1 x 1 k ohmin vastus

5 x 220 ohmin vastukset

1 x pietsosummeri

5 x painike 6x6 mm

1 x sarja hyppyjohdot

1 x perf/strip -levy

1 x juotosarja

1 x sarana

1 x puristin

1 x pieni lipasto/puu

1x kuuma liimapistooli + liimapuikot

1 x 9v paristo + pidike

vähän hommaa

maali-

Vaihe 1:

Kuva
Kuva

Aluksi sinun on painettava nastat leipälautaan. Liitä nyt analoginen 2 johdolla kortin kulmaan. Yhdistämme siihen kaksi vastusta rivillä. Ensimmäinen on 10 k ohmin vastus. Tämän vastuksen toiseen päähän liitämme johdon analogiseen maahan. Toinen vastus on 220 ohmin vastus, jonka yhdistämme ensimmäiseen painikkeeseen. Käytä toista samanarvoista vastusta liittääksesi painikkeen toisen avoimen puolen toiseen painikkeeseen. Jatka tällaisten painikkeiden yhdistämistä viimeiseen. Viimeisessä tartut lankaan ja liität sen vastaavaan suljettuun puoleen ja kytket sen seuraavaan. Toistat nyt prosessin, jonka teit vain vastuilla, jotka tiedät vain tavallisilla johtimilla. Liitä ensimmäinen painike Arduinon analogiseen 3, 3 V -porttiin. Kaiken kaikkiaan saat jonkinlaisen ristipatruunan, kuten alla on kuvattu.

Vaihe 2:

Liitä seuraavaksi summeri leipälautaan ja kiinnitä toinen puoli digitaaliseen maahan ja toinen 12 -porttiin. On järkevää ladata seuraava koodi jo Arduinoosi, jotta voit testata, toimiiko kaikki oikein. Jos näin on, voit aloittaa komponenttien juottamisen yhteen. Tee tämä ottamalla ne ulos leipälevyltä ja juottamalla johdot ja liitännät suoraan yhteen. Jos luulet tarvitsevasi enemmän pituutta painikkeiden välissä, voit lisätä ylimääräistä johtoa vastusten väliin. Leipälauta ei ole enää tarpeen tässä vaiheessa.

Vaihe 3:

Kuva
Kuva

Kun kaikki on juotettu, on aika tehdä laatikko itse. Käytin pohjana halpaa laatikkoa. Leikkasin vain puoliksi pituussuunnassa ja poistin selän ja sen sivun, jonka leikkain. Sinulla pitäisi olla nyt kaksi c -muotoista kappaletta. Leikkaa toisesta yksi sivu käytettäväksi kannena. Kierrä nyt yksi jäljellä olevista kappaleista niin, että ne sopivat yhteen kuin kanneton laatikko ja liimaa ne yhteen. Kun liima on kovettunut kunnolla, poraa laatikon kummallekin puolelle pieni reikä painikkeille ja suurempi reikä kannen summerille.

Vaihe 4:

Kuva
Kuva
Kuva
Kuva

Nyt voit maalata laatikon. Tein omani BOTW -pohjaiseen kukkakuvioon, mutta voit todella valita minkä tahansa haluamasi mallin. Kun tämä on tehty, voit laittaa napit reikien sisään ja laittaa liimapalloa napin takaosaan ja ympäröivään puuhun. Sama periaate koskee summeria, mutta omani sopivat täydellisesti reikään, mikä tekee siitä tarpeettoman. Seuraavaksi nappaat worblaa ja lämmität ja leikataan se, jotta voidaan tehdä pieniä painikkeita. Liimaa ne varovasti nappeihin, mutta älä käytä liikaa liimaa, koska saatat vahingossa saada painikkeet kiinni. Nyt voit maalata ne päälle, jotta ne sulautuvat paremmin laatikkoon.

Vaihe 5:

Lopuksi liimaat tai ruuvit, puristin ja saranat laatikossa ja kannessa, jotka yhdistävät nämä kaksi.

Vaihe 6:

Nyt kun laatikkosi on valmis, sinun tarvitsee vain laittaa Arduino ja akku sen sisään ja sulkea kansi.

Vaihe 7: Koodi

// Tämä on Zelda -aiheisen palapelin/musiikkilaatikon koodi.

// tämä yhdistää koodisi muistiinpanojen luetteloon toisessa välilehdessä

#include "pitches.h"

// tämä muuttuja varmistaa, että Arduino näkee painikkeen pidemmän painalluksen vain yhdellä painalluksella

int sama = 0;

// täältä se lukee syötteesi

int k = 2;

// tämä on lähtönasi

int kaiutin = 12;

// alla ovat lopun melodiat

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

// nuotin normaali kesto

int BEATTIME = 300;

// laskuri, jota seurataan, jos olemme ratkaisussa

int kertoja = 0;

void setup () {

Sarja.alku (9600);

pinMode (2, TULO);

pinMode (1, TULO);

}

void loop () {

// lukee syötteen nastoista

k = analoginen (2);

int p = analoginenLue (1);

// jos mitään painiketta ei paineta, äänimerkkiä ei pitäisi olla

jos (kertoja == 0) {

noTone (12);

}

// jos luetut tiedot vastaavat parametreja, suorita kuvattu koodibitti

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

rechts ();

}

//""

muuten jos (k 290) {

linkit ();

}

//""

muuten jos (k> 260 && k <280) {

boven ();

}

//""

muuten jos (k> 240 && k <260) {

onder ();

}

//""

muuten jos (k> 220 && k <240) {

a ();

}

// jos ei, (kun mitään painiketta ei paineta), suorita tämä koodi

muu {

// nollaa sama, jotta sitä voidaan käyttää seuraavan kerran, kun painiketta painetaan

sama = 0;

// jos laskuri on tiettyyn numeroon asti, suorita kuvattu koodibitti

jos (kertoja == 166) {

zelda ();

}

//""

muuten jos (kertoja == 386) {

saria ();

}

//""

muuten jos (teller == 266) {

epona ();

}

//""

muuten jos (teller == 999) {

// toista tämä sävy virheen merkitsemiseksi

ääni (kaiutin, NOTE_C3, BEATTIME);

// nollaa laskuri arvoon 0

kertoja = 0;

}

}

// tulon ja lähdön välinen viive

viive (100);

// tulostaa syöttämäsi arvot sarjamonitorissa

Sarja.println (k);

}

// tämä on ensimmäinen melodia

void zelda () {

// tämä asettaa laskurin, joka päivittää itsensä melodian toiston aikana, jotta se voi lukea sen ja lopettaa sen, kun sen pitäisi

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

// kertoo kuinka kauan muistiinpanon pitäisi kestää

int ZTime = 1000 / ZeldaTime ;

// luo sävyt

ääni (kaiutin, Zelda , ZTime);

// luo oikean viiveen

int tauko = ZTime * 1.30;

viive (tauko);

// nollaa laskurin

kertoja = 0;

// tulostaa syöttämäsi arvot sarjamonitorissa

Serial.println (teller);

}

}

//""

void epona () {

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

int ETime = 1000 / EponaTime ;

ääni (kaiutin, Epona , ETime);

int tauko = ETime * 1.30;

viive (tauko);

kertoja = 0;

Serial.println (teller);

}

}

//""

void saria () {

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

int STime = 1000 / SariaTime ;

ääni (kaiutin, Saria , STime);

int tauko = STime * 1,30;

viive (tauko);

kertoja = 0;

Serial.println (teller);

}

}

mitätön rec

hts () {

// jos tätä ei ole jo painettu

jos (sama == 0) {

// jos laskurilla on tällä hetkellä jokin näistä arvoista, lisää tämä siihen

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

kertoja = teller + 1;

}

// Muussa tapauksessa aseta se 999: ksi, jotta kuulet virhekohinan

muu {

kertoja = 999;

}

// aseta sama yhdeksi, jotta Arduino ei lue pitkää painallusta useina painalluksina

sama = 1;

}

// soita sävy

muu {

ääni (kaiutin, NOTE_A4, BEATTIME);

}

// tulostaa syöttämäsi arvot sarjamonitorissa

Serial.println (teller); }

//""

tyhjät linkit () {

jos (sama == 0) {

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

kertoja = teller + 11;

}

muuten jos (kertoja == 0) {

kertoja = 111;

}

muu {

kertoja = 999;

}

sama = 1;

} muuta {

ääni (kaiutin, NOTE_B4, BEATTIME);

} Sarja.println (kertoja);

}

//""

void boven () {

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

kertoja = teller + 21;

}

muuten jos (kertoja == 0) {

kertoja = 221;

}

muu {

kertoja = 999;

}

sama = 1;

}

muu {

ääni (kaiutin, NOTE_D5, BEATTIME);

Serial.println (teller);

}

}

//""

void onder () {

jos (sama == 0) {

jos (kertoja == 343) {

kertoja = teller + 31;

}

muuten jos (kertoja == 0) {

kertoja = 331;

} muuta {

kertoja = 999;

} sama = 1;

} muuta {

ääni (kaiutin, NOTE_F4, BEATTIME);

Serial.println (teller);

}

}

//""

mitätön a () {

jos (sama == 0) {

jos (kertoja == 0) {

kertoja = 461;

}

muu {

kertoja = 999;

}

sama = 1;

}

ääni (kaiutin, NOTE_D4, BEATTIME);

Serial.println (teller);

}

Suositeltava: