Turinys:

„Arduino“dėlionės dėžutė: 7 žingsniai
„Arduino“dėlionės dėžutė: 7 žingsniai

Video: „Arduino“dėlionės dėžutė: 7 žingsniai

Video: „Arduino“dėlionės dėžutė: 7 žingsniai
Video: Использование Melexis MLX90614 Инфракрасный термометр с Arduino 2024, Liepa
Anonim
„Arduino“dėlionės dėžutė
„Arduino“dėlionės dėžutė

Šiam projektui mes sukursime dėlionės dėžutę, kuri veikia su muzika. Pagrindinė jo esmė yra ta, kad paspaudus mygtuką jis išleidžia melodiją ir „Arduino“apskaičiuoja, kurie mygtukai yra paspaudžiami, kad žinotų, kas yra teisinga, o kas - neteisingas atsakymas.

Prekės

1 x „Arduino uno“

1 x 1k omo rezistorius

5 x 220 omų rezistoriai

1 x Piezo garsinis signalas

5 x 6x6 mm mygtukai

1 x komplektas jungiamųjų laidų

1 x perforuota/juostelinė lenta

1 x litavimo komplektas

1 x vyriai

1 x spaustukas

1 x maža komoda/mediena

1x karšto klijų pistoletas + klijų lazdelės

1 x 9 V baterija + laikiklis

truputis darbo

dažyti

1 žingsnis:

Vaizdas
Vaizdas

Norėdami pradėti, turite paspausti kaiščius savo duonos lentoje. Dabar prijunkite 2 analogą laidu prie plokštės kampo. Mes ketiname prie jo prijungti du rezistorius linijoje. Pirmasis yra 10 kΩ rezistorius. Prie kito šio rezistoriaus galo prijungiame laidą prie analoginio įžeminimo. Antrasis rezistorius yra 220 omų rezistorius, kurį mes prijungiame prie pirmojo mygtuko. Norėdami sujungti antrą atvirą mygtuko pusę su antruoju mygtuku, naudokite kitą tos pačios vertės rezistorių. Toliau prijunkite tokius mygtukus iki paskutinio. Paskutiniame jūs paimkite laidą ir prijunkite jį prie atitinkamos uždarytos mygtuko pusės ir prijunkite prie kitos eilutės. Dabar jūs kartojate procesą, kurį atlikote su rezistoriais, kuriuos žinote tik paprastais laidais. Prijunkite pirmąjį mygtuką prie analoginio 3, 3 V prievado „Arduino“. Apskritai jūs gausite kryžminį paterną, kaip parodyta žemiau.

2 žingsnis:

Tada prijunkite signalą prie duonos lentos ir vieną pusę pritvirtinkite prie skaitmeninio įžeminimo, o kitą - prie 12 prievado. Protinga jau įkelti šį kodą į „Arduino“, kad galėtumėte patikrinti, ar viskas veikia tinkamai. Jei taip, galite pradėti lituoti komponentus kartu. Padarykite tai, ištraukdami juos iš duonos lentos ir tiesiogiai lituodami laidus ir jungtis. Jei manote, kad tarp mygtukų reikia daugiau ilgio, galite pridėti papildomą laidą tarp rezistorių. Duonos lentos šiuo metu nebereikia.

3 žingsnis:

Vaizdas
Vaizdas

Po to, kai viskas yra sulituota, laikas pasidaryti pačią dėžutę. Aš naudoju pigų stalčių komplektą kaip savo pagrindą. Aš tiesiog perpjoviau išilgai per pusę ir nuėmiau nugarą bei šoną, kurį perpjoviau. Dabar turėtumėte turėti dvi c formos dalis. Nupjaukite vieną jų pusę, kad galėtumėte naudoti kaip dangtį. Dabar pasukite vieną iš likusių dalių taip, kad jos derėtų kaip dėžutė be dangčio ir klijuokite jas kartu. Kai klijai tinkamai sukietėja, kiekvienoje dėžutės pusėje išgręžkite mažą skylutę sagoms ir didesnę skylę dangtelyje.

4 žingsnis:

Vaizdas
Vaizdas
Vaizdas
Vaizdas

Dabar galite pradėti dažyti dėžutę. Aš padariau savo gėlių dizainą, pagrįstą BOTW, bet jūs tikrai galite pasirinkti bet kokį norimą dizainą. Kai tai bus padaryta, galite įkišti mygtukus į skylių vidų ir uždėti klijų rutulį ant mygtuko užpakalinės dalies ir aplinkinės medienos. Tas pats principas galioja ir garso signalui, bet mano puikiai tinka skylėje, todėl jo nereikia. Tada paimkite šiek tiek darbo ir pašildykite ir supjaustykite, kad padarytumėte mažus mygtukus. Atsargiai priklijuokite juos prie mygtukų, tačiau stenkitės nenaudoti daug klijų, nes galite netyčia įstrigti. Dabar galite juos dažyti, kad jie geriau susimaišytų su dėžute.

5 veiksmas:

Galiausiai klijuojate arba užsukite varžtą, spaustuką ir vyriai ant dėžutės ir dangčio, jungiančio abu.

6 žingsnis:

Dabar, kai dėžutė baigta, viskas, ką jums reikia padaryti, yra įdėti „Arduino“ir bateriją į ją ir uždaryti dangtį.

7 žingsnis: kodas

// Tai yra „Zelda“temos dėlionės/muzikos dėžutės kodas.

// tai sujungia jūsų kodą su pastabų sąrašu kitame skirtuke

#įtraukti „pikches.h“

// šis kintamasis užtikrins, kad „Arduino“matytų ilgesnį mygtuko paspaudimą kaip vieną paspaudimą

int tas pats = 0;

// iš čia jis skaitys jūsų įvestį

int k = 2;

// tai yra jūsų išvesties kaištis

int garsiakalbis = 12;

// žemiau yra pabaigos melodijos

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

// įprasta natos trukmė

int BEATTIME = 300;

// skaitiklis, kurį ketiname sekti, jei esame sprendime

int tarėjas = 0;

void setup () {

Serial.begin (9600);

pinMode (2, INPUT);

pinMode (1, INPUT);

}

void loop () {

// skaito įvestį iš kaiščių

k = analogRead (2);

int p = analogRead (1);

// jei nepaspaudžiamas joks mygtukas, neturėtų būti jokio tono

jei (sakytojas == 0) {

noTone (12);

}

// jei nuskaityti duomenys atitinka parametrus, paleiskite aprašytą kodo bitą

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

rechts ();

}

//""

kitaip, jei (k 290) {

nuorodos ();

}

//""

kitaip jei (k> 260 && k <280) {

boven ();

}

//""

kitaip jei (k> 240 && k <260) {

onderis ();

}

//""

kitaip, jei (k> 220 && k <240) {

a ();

}

// jei ne (kai nepaspaudžiamas joks mygtukas), paleiskite šį kodą

Kitas {

// atstatyti tą patį, kad jį būtų galima naudoti kitą kartą paspaudus mygtuką

tas pats = 0;

// jei skaitiklis yra iki tam tikro skaičiaus, paleiskite aprašytą kodo bitą

jei (kasininkas == 166) {

zelda ();

}

//""

kitaip jei (sakytojas == 386) {

sarija ();

}

//""

kitaip jei (sakytojas == 266) {

epona ();

}

//""

kitaip jei (kasininkas == 999) {

// paleiskite šį toną, kad pažymėtumėte klaidą

tonas (garsiakalbis, NOTE_C3, BEATTIME);

// atstatyti skaitiklį į 0

sakytojas = 0;

}

}

// vėlavimas tarp įvesties ir išvesties

vėlavimas (100);

// spausdina jūsų įvesties reikšmes serijiniame monitoriuje

Serijinis.println (k);

}

// tai pirmoji melodija

void zelda () {

// tai nustato skaitiklį, kuris atnaujinamas grojant melodijai, kad galėtų ją perskaityti ir sustabdyti, kai turėtų

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

// nurodo, kiek laiko turėtų trukti pastaba

int ZTime = 1000 / ZeldaTime ;

// generuoja tonus

tonas (garsiakalbis, „Zelda “, „ZTime“);

// sukuria teisingą delsą

int pauzė = ZTime * 1.30;

vėlavimas (pauzė);

// iš naujo nustato skaitiklį

sakytojas = 0;

// spausdina jūsų įvesties reikšmes serijiniame monitoriuje

Serial.println (kasininkas);

}

}

//""

void epona () {

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

int ETime = 1000 / EponaTime ;

tonas (garsiakalbis, „Epona “, „ETime“);

int pauzė = ETime * 1.30;

vėlavimas (pauzė);

sakytojas = 0;

Serial.println (kasininkas);

}

}

//""

void saria () {

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

int STime = 1000 / SariaTime ;

tonas (garsiakalbis, Saria , STime);

int pauzė = STime * 1.30;

vėlavimas (pauzė);

sakytojas = 0;

Serial.println (kasininkas);

}

}

negaliojantis rec

hts () {

// jei tai dar nebuvo paspausta

jei (tas pats == 0) {

// jei skaitiklis šiuo metu turi vieną iš šių verčių, pridėkite tai

jei (kasininkas == 0 || kasininkas == 132 || kasininkas == 165 || kasininkas == 232 || kasininkas == 265 || kasininkas == 331 || kasininkas == 374) {

kasininkas = kasininkas + 1;

}

// kitaip nustatykite jį į 999, kad išgirstumėte klaidos triukšmą

Kitas {

kasininkas = 999;

}

// nustatykite tą patį į vieną, kad „Arduino“neskaitytų ilgo spaudimo kaip kelių paspaudimų

tas pats = 1;

}

// groti tonu

Kitas {

tonas (garsiakalbis, NOTE_A4, BEATTIME);

}

// spausdina jūsų įvesties reikšmes serijiniame monitoriuje

Serial.println (kasininkas); }

//""

tuščios nuorodos () {

jei (tas pats == 0) {

jei (kasininkas == 133 || kasininkas == 254 || kasininkas == 244 || kasininkas == 332 || kasininkas == 375 || kasininkas == 221) {

kasininkas = kasininkas + 11;

}

kitaip jei (sakytojas == 0) {

kasininkas = 111;

}

Kitas {

kasininkas = 999;

}

tas pats = 1;

} Kitas{

tonas (garsiakalbis, NOTE_B4, BEATTIME);

} Serial.println (kasininkas);

}

//""

void boven () {

jei (tas pats == 0) {jei (sakytojas == 111 || kasininkas == 144 || kasininkas == 233) {

kasininkas = kasininkas + 21;

}

kitaip jei (sakytojas == 0) {

kasininkas = 221;

}

Kitas {

kasininkas = 999;

}

tas pats = 1;

}

Kitas {

tonas (garsiakalbis, NOTE_D5, BEATTIME);

Serial.println (kasininkas);

}

}

//""

void onder () {

jei (tas pats == 0) {

jei (sakytojas == 343) {

kasininkas = kasininkas + 31;

}

kitaip jei (sakytojas == 0) {

pasakotojas = 331;

} Kitas {

kasininkas = 999;

} tas pats = 1;

} Kitas {

tonas (garsiakalbis, NOTE_F4, BEATTIME);

Serial.println (kasininkas);

}

}

//""

anuliuoti a () {

jei (tas pats == 0) {

jei (sakytojas == 0) {

kasininkas = 461;

}

Kitas {

kasininkas = 999;

}

tas pats = 1;

}

tonas (garsiakalbis, NOTE_D4, BEATTIME);

Serial.println (kasininkas);

}

Rekomenduojamas: