INHOUDSOPGAWE:

Arduino Puzzle Box: 7 stappe
Arduino Puzzle Box: 7 stappe

Video: Arduino Puzzle Box: 7 stappe

Video: Arduino Puzzle Box: 7 stappe
Video: How type Circled Numbers in Word 2024, November
Anonim
Arduino legkaart boks
Arduino legkaart boks

Vir hierdie projek gaan ons 'n raaisel boks maak wat met musiek werk. Die hoofdoel daarvan is dat as u op 'n knoppie druk, 'n deuntjie vrygestel word en die Arduino bereken watter knoppies ingedruk word, sodat hy weet wat die regte en die verkeerde antwoord is.

Voorrade

1 x Arduino uno

1 x 1k Ohm weerstand

5 x 220 Ohm weerstande

1 x Piezo -gonser

5 x drukknop 6x6 mm

1 x stel draaddrade

1 x perf/strookbord

1 x solderset

1 x skarnier

1 x klem

1 x laaikas/hout

1x warm lijmpistool + gomstokkies

1 x 9v battery + houer

bietjie worbla

verf

Stap 1:

Beeld
Beeld

Om mee te begin, moet u u penne in u broodbord druk. Koppel nou analoog 2 met 'n draad aan die hoek van die bord. Ons gaan twee weerstande in 'n lyn daaraan koppel. Die eerste is 'n 10k Ohm -weerstand. Aan die ander kant van hierdie weerstand verbind ons draad met die analoog aarde. Die tweede weerstand is 'n 220 Ohm -weerstand wat ons aan die eerste knoppie koppel. Gebruik 'n ander weerstand van dieselfde waarde om die tweede oop kant van die knoppie met die tweede knoppie te verbind. Verbind die knoppies soos hierdie tot die laaste een. By die laaste een gryp u 'n draad en koppel dit aan die ooreenstemmende geslote kant van die knoppie en koppel dit aan die volgende in die ry. U herhaal nou die proses wat u gedoen het met die weerstande wat u slegs met gewone drade ken. Koppel die eerste knoppie aan die analoge 3, 3V -poort op u Arduino. Al met al kry u 'n soort kruispatroon soos hieronder getoon.

Stap 2:

Steek dan die gonser in die broodbord en maak die een kant vas aan die digitale grond en die ander aan die 12 -poort. Dit is slim om die volgende kode reeds in u Arduino op te laai, sodat u kan toets of alles reg werk. As dit die geval is, kan u begin om die komponente saam te soldeer. Doen dit deur hulle uit die broodbord te haal en die drade en verbindings direk saam te soldeer. As u dink dat u meer lengte tussen die knoppies benodig, kan u 'n ekstra draad tussen die weerstande voeg. Die broodbord is op hierdie stadium nie meer nodig nie.

Stap 3:

Beeld
Beeld

Nadat alles gesoldeer is, is dit tyd om die boks self te maak. Ek het 'n goedkoop stel laaie as 'n basis vir myne gebruik. Ek het eenvoudig in die lengte in die helfte gesny en die agterkant en die kant wat ek deurgesny het, verwyder. U behoort nou twee stukke in c -vorm te hê. Sny een kant daarvan om as deksel te gebruik. Draai nou een van die oorblywende stukke sodat dit soos 'n deksellose boks bymekaar pas en plak dit vas. Sodra die gom reg is, boor u 'n klein gaatjie aan elke kant van die boks vir die knoppies en 'n groter vir die gonser in die deksel.

Stap 4:

Beeld
Beeld
Beeld
Beeld

Nou kan u die boks skilder. Ek het myne gedoen met 'n blomme -ontwerp gebaseer op BOTW, maar u kan regtig enige ontwerp kies wat u wil. Nadat u dit gedoen het, kan u die knoppies in die gate plaas en 'n bol gom op die agterkant van die knoppie en die omliggende hout plaas. Dieselfde beginsel geld vir die gonser, maar myne pas perfek in die gat, wat dit onnodig maak. Gryp dan 'n worbla en verhit en sny dit om 'n paar klein knoppies te maak. Plak dit versigtig op die knoppies vas, maar sorg dat u nie te veel gom gebruik nie, aangesien u die knoppies per ongeluk kan vassteek. Nou kan u dit oorskilder om meer by die boks te pas.

Stap 5:

Laastens gom of skroef u die klem en die skarniere op die boks en die deksel wat die twee verbind.

Stap 6:

Noudat u boks voltooi is, hoef u net die Arduino en die battery daarin te sit en die deksel toe te maak.

Stap 7: Kode

// Dit is die kode vir 'n legkaart-/musiekboks met 'n Zelda -tema.

// dit koppel u kode aan die lys notas op die ander oortjie

#sluit "pitches.h" in

// hierdie veranderlike sal verseker dat die Arduino 'n langer druk op die knoppie as net een druk

int dieselfde = 0;

// van hier af lees dit u insette

int k = 2;

// dit is jou uitvoerpen

int spreker = 12;

// hieronder is die eindmelodieë

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

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

int SariaTime = {8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 3, 8, 8, 8, 2, 1};

// die normale duur van 'n nota

int SLAGTYD = 300;

// die toonbank wat ons sal byhou as ons in die oplossing is

int teller = 0;

ongeldige opstelling () {

Serial.begin (9600);

pinMode (2, INVOER);

pinMode (1, INVOER);

}

leemte -lus () {

// lees die insette van die penne

k = analogRead (2);

int p = analogRead (1);

// as daar geen knoppie gedruk word nie, behoort daar geen toon te wees nie

as (teller == 0) {

noTone (12);

}

// as die geleesdata ooreenstem met die parameters, voer die beskrywe stukkie kode uit

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

regs ();

}

//""

anders as (k 290) {

skakels ();

}

//""

anders as (k> 260 && k <280) {

boven ();

}

//""

anders as (k> 240 && k <260) {

onder ();

}

//""

anders as (k> 220 && k <240) {

a ();

}

// as dit nie die geval is nie (as daar geen knoppie ingedruk word nie), voer hierdie kode uit

anders {

// herstel dieselfde sodat dit gebruik kan word die volgende keer dat 'n knoppie gedruk word

dieselfde = 0;

// as die teller tot 'n sekere getal is, voer die beskrywe stukkie kode uit

as (teller == 166) {

zelda ();

}

//""

anders as (teller == 386) {

saria ();

}

//""

anders as (teller == 266) {

epona ();

}

//""

anders as (teller == 999) {

// speel hierdie toon om die fout te merk

toon (spreker, NOTE_C3, BEATTIME);

// stel die toonbank terug op 0

teller = 0;

}

}

// die vertraging tussen invoer en uitset

vertraging (100);

// druk die waardes van u invoer in die seriële monitor af

Serial.println (k);

}

// dit is die eerste melodie

void zelda () {

// dit stel 'n toonbank in wat homself opdateer terwyl die melodie gespeel word, sodat dit dit kan lees en kan stop wanneer dit moet

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

// sê hoe lank 'n noot moet hou

int ZTime = 1000 / ZeldaTime ;

// genereer die toon

toon (spreker, Zelda , ZTime);

// skep die korrekte vertraging

int pouse = ZTime * 1,30;

vertraging (pouse);

// stel toonbank terug

teller = 0;

// druk die waardes van u invoer in die seriële monitor af

Serial.println (teller);

}

}

//""

leegte epona () {

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

int ETime = 1000 / EponaTime ;

toon (spreker, Epona , ETime);

int pouse = ETime * 1,30;

vertraging (pouse);

teller = 0;

Serial.println (teller);

}

}

//""

void saria () {

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

int STime = 1000 / SariaTime ;

toon (spreker, Saria , STime);

int pouse = STime * 1,30;

vertraging (pouse);

teller = 0;

Serial.println (teller);

}

}

leegte rec

hts () {

// as dit nog nie ingedruk is nie

as (dieselfde == 0) {

// as die teller tans een van hierdie waardes het, voeg dit by

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

teller = teller + 1;

}

// anders stel dit op 999 sodat u die foutgeruis hoor

anders {

teller = 999;

}

// stel dieselfde op een sodat die Arduino nie 'n lang pers as 'n paar keer druk nie

dieselfde = 1;

}

// speel die toon

anders {

toon (spreker, NOTE_A4, BEATTIME);

}

// druk die waardes van u invoer in die seriële monitor af

Serial.println (teller); }

//""

nietige skakels () {

as (dieselfde == 0) {

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

teller = teller + 11;

}

anders as (teller == 0) {

teller = 111;

}

anders {

teller = 999;

}

dieselfde = 1;

} anders {

toon (spreker, NOTE_B4, BEATTIME);

} Serial.println (teller);

}

//""

void boven () {

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

teller = teller + 21;

}

anders as (teller == 0) {

teller = 221;

}

anders {

teller = 999;

}

dieselfde = 1;

}

anders {

toon (spreker, NOTE_D5, BEATTIME);

Serial.println (teller);

}

}

//""

ongeldig onder () {

as (dieselfde == 0) {

as (teller == 343) {

teller = teller + 31;

}

anders as (teller == 0) {

teller = 331;

} anders {

teller = 999;

} dieselfde = 1;

} anders {

toon (spreker, NOTE_F4, BEATTIME);

Serial.println (teller);

}

}

//""

nietig a () {

as (dieselfde == 0) {

as (teller == 0) {

teller = 461;

}

anders {

teller = 999;

}

dieselfde = 1;

}

toon (spreker, NOTE_D4, BEATTIME);

Serial.println (teller);

}

Aanbeveel: