Innholdsfortegnelse:
Video: Arduino Puzzle Box: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
For dette prosjektet skal vi lage en puslespillboks som fungerer med musikk. Den grunnleggende kjernen i det er at når du trykker på en knapp, slipper den en melodi, og Arduino beregner hvilke knapper som trykkes slik at den vet hva som er riktig og hva som er feil svar.
Rekvisita
1 x Arduino uno
1 x 1k Ohm motstand
5 x 220 Ohm motstander
1 x Piezo -summer
5 x trykknapp 6x6 mm
1 x sett jumper ledninger
1 x perf/stripebrett
1 x loddesett
1 x hengsel
1 x klemme
1 x liten kommode/tre
1x varm limpistol + limpinner
1 x 9v batteri + holder
litt worbla
maling
Trinn 1:
Til å begynne med må du trykke pinnene i brødbrettet. Koble nå analog 2 med en ledning til hjørnet av brettet. Vi skal koble to motstander til det på en linje. Den første er en 10k Ohm motstand. I den andre enden av denne motstanden kobler vi ledningen til den analoge bakken. Den andre motstanden er en 220 Ohm motstand vi kobler til den første knappen. Bruk en annen motstand av samme verdi for å koble den andre åpne siden av knappen til den andre knappen. Fortsett å koble knappene slik til den siste. I den siste tar du en ledning og kobler den til en tilsvarende lukket side av knappen og kobler den til den neste i rekken. Du gjentar nå prosessen du gjorde med motstandene som du bare kjenner med vanlige ledninger. Koble den første knappen til den analoge 3, 3V -porten på Arduino. Alt i alt får du et slags kryssmønster som vist nedenfor.
Steg 2:
Deretter kobler du summeren til brødbrettet og fester den ene siden til den digitale bakken og den andre til 12 -porten. Det er smart å allerede laste opp følgende kode til Arduino slik at du kan teste om alt fungerer som det skal. Hvis det er det, kan du begynne å lodde komponentene sammen. Gjør dette ved å ta dem ut av brødbrettet og lodde ledningene og forbindelsene direkte sammen. Hvis du tror du trenger mer lengde mellom knappene, kan du legge til en ekstra ledning mellom motstandene. Brettbrettet er ikke lenger nødvendig på dette tidspunktet.
Trinn 3:
Etter at alt er loddet er det på tide å lage boksen selv. Jeg brukte et billig sett med skuffer som en base for min. Jeg kuttet ganske enkelt i to på langs og fjernet baksiden og siden jeg skar gjennom. Du bør ha to c -formede stykker nå. Skjær den ene siden av en av dem for å bruke som lokk. Roter nå en av de gjenværende bitene slik at de passer sammen som en lokk uten lokk og lim dem sammen. Når limet har satt seg ordentlig, borer du et lite hull i hver side av esken for knappene og et større for summeren i lokket.
Trinn 4:
Nå kan du male boksen. Jeg gjorde mitt med et blomsterdesign basert på BOTW, men du kan virkelig velge hvilket design du vil. Etter at dette er gjort kan du sette knappene inne i hullene og legge en klump lim på baksiden av knappen og det omkringliggende treverket. Det samme prinsippet gjelder summeren, men min passer perfekt i hullet, noe som gjør det unødvendig. Deretter tar du tak i litt worbla og varme og kutte den for å lage noen små knapper. Lim dem forsiktig på knappene, men pass på at du ikke bruker for mye lim fordi du ved et uhell kan sette knappene fast. Nå kan du male dem over for å få dem til å blande seg inn i esken mer.
Trinn 5:
Til slutt limer eller skruer du klemmen og hengslene på esken og lokket som forbinder de to.
Trinn 6:
Nå som esken er ferdig, er det bare å sette Arduino og batteriet i den og lukke lokket.
Trinn 7: Kode
// Dette er koden for et puslespill/musikkboks med Zelda -tema.
// dette kobler koden din til listen over notater i den andre fanen
#inkludere "pitches.h"
// denne variabelen vil sikre at Arduino ser et lengre trykk på knappen som bare ett trykk
int same = 0;
// herfra vil den lese innspillene dine
int k = 2;
// dette er utgangspinnen din
int høyttaler = 12;
// nedenfor er sluttmelodiene
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};
// den normale varigheten av et notat
int BEATTIME = 300;
// telleren som kommer til å holde styr på hvor vi er i løsningen
int teller = 0;
ugyldig oppsett () {
Serial.begin (9600);
pinMode (2, INNGANG);
pinMode (1, INNGANG);
}
void loop () {
// leser inngangen fra pinnene
k = analogRead (2);
int p = analogRead (1);
// hvis det ikke er trykket på noen knapp, bør det ikke være noen tone
hvis (teller == 0) {
noTone (12);
}
// hvis lesedataene samsvarer med parameterne, kjør den beskrevne koden
hvis (k> 320 && k <350) {
rechts ();
}
//""
annet hvis (k 290) {
lenker ();
}
//""
annet hvis (k> 260 && k <280) {
boven ();
}
//""
annet hvis (k> 240 && k <260) {
onder ();
}
//""
annet hvis (k> 220 && k <240) {
en();
}
// hvis den ikke gjør det (når ingen knapp trykkes), kjør denne koden
annet {
// tilbakestill det samme slik at det kan brukes neste gang du trykker på en knapp
samme = 0;
// hvis telleren er opp til et visst tall, kjør den beskrevne koden
hvis (teller == 166) {
zelda ();
}
//""
annet hvis (teller == 386) {
saria ();
}
//""
annet hvis (teller == 266) {
epona ();
}
//""
annet hvis (teller == 999) {
// spill denne tonen for å markere feilen
tone (høyttaler, NOTE_C3, BEATTIME);
// nullstill telleren til 0
teller = 0;
}
}
// forsinkelsen mellom inngang og utgang
forsinkelse (100);
// skriver ut verdiene for inngangen din i den serielle skjermen
Serial.println (k);
}
// dette er den første melodien
void zelda () {
// dette setter en teller som oppdaterer seg selv mens du spiller melodien, slik at den kan lese den og stoppe når den skal
for (int i = 0; i <sizeof (Zelda); i ++) {
// sier hvor lenge en lapp skal vare
int ZTime = 1000 / ZeldaTime ;
// genererer tonene
tone (høyttaler, Zelda , ZTime);
// oppretter riktig forsinkelse
int pause = ZTime * 1,30;
forsinkelse (pause);
// tilbakestiller telleren
teller = 0;
// skriver ut verdiene for inngangen din i den serielle skjermen
Serial.println (teller);
}
}
//""
void epona () {
for (int i = 0; i <sizeof (Epona); i ++) {
int ETime = 1000 / EponaTime ;
tone (høyttaler, Epona , ETime);
int pause = ETime * 1,30;
forsinkelse (pause);
teller = 0;
Serial.println (teller);
}
}
//""
void saria () {
for (int i = 0; i <sizeof (Saria); i ++) {
int STime = 1000 / SariaTime ;
tone (høyttaler, Saria , STime);
int pause = STime * 1,30;
forsinkelse (pause);
teller = 0;
Serial.println (teller);
}
}
ugid rec
hts () {
// hvis dette ikke allerede var trykket
hvis (samme == 0) {
// hvis telleren for øyeblikket har en av disse verdiene, legg denne til den
hvis (teller == 0 || teller == 132 || teller == 165 || teller == 232 || teller == 265 || teller == 331 || teller == 374) {
teller = teller + 1;
}
// ellers sett den til 999 slik at du hører feilstøy
annet {
teller = 999;
}
// sett det samme til en slik at Arduino ikke leser en lang trykk som flere trykk
samme = 1;
}
// spill tonen
annet {
tone (høyttaler, NOTE_A4, BEATTIME);
}
// skriver ut verdiene for inngangen din i den serielle skjermen
Serial.println (teller); }
//""
ugyldige lenker () {
hvis (samme == 0) {
if (teller == 133 || teller == 254 || teller == 244 || teller == 332 || teller == 375 || teller == 221) {
teller = teller + 11;
}
annet hvis (teller == 0) {
teller = 111;
}
annet {
teller = 999;
}
samme = 1;
} annet {
tone (høyttaler, NOTE_B4, BEATTIME);
} Serial.println (teller);
}
//""
void boven () {
if (same == 0) {if (teller == 111 || teller == 144 || teller == 233) {
teller = teller + 21;
}
annet hvis (teller == 0) {
teller = 221;
}
annet {
teller = 999;
}
samme = 1;
}
annet {
tone (høyttaler, NOTE_D5, BEATTIME);
Serial.println (teller);
}
}
//""
void onder () {
hvis (samme == 0) {
hvis (teller == 343) {
teller = teller + 31;
}
annet hvis (teller == 0) {
teller = 331;
} annet {
teller = 999;
} samme = 1;
} annet {
tone (høyttaler, NOTE_F4, BEATTIME);
Serial.println (teller);
}
}
//""
ugyldig a () {
hvis (samme == 0) {
hvis (teller == 0) {
teller = 461;
}
annet {
teller = 999;
}
samme = 1;
}
tone (høyttaler, NOTE_D4, BEATTIME);
Serial.println (teller);
}
Anbefalt:
Crack the Code Game, Arduino Based Puzzle Box: 4 Steps (med bilder)
Crack the Code Game, Arduino Based Puzzle Box: I denne instruksen skal jeg vise deg hvordan du bygger ditt eget crack -kodespill der du bruker en roterende encoder -skive for å gjette den tilfeldig genererte koden til safen. Det er 8 lysdioder foran på safen for å fortelle deg hvor mange av
Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Puzzle - Arduino: 7 Steps
Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino: INTRODUKSJON Neste side vil lære deg hvordan du lager et Arduino -prosjekt, som har to hovedfunksjoner - vanlig dekorasjon med belysning og folkemusikkoppgavespill, som inneholder feltene geografi, geometri , kart, FN og
Heroes of Hammerwatch Puzzle på en Arduino: 4 trinn
Heroes of Hammerwatch Puzzle on an Arduino: Hei alle sammen, dette er mitt første ufruktbare og engelsk er ikke mitt førstespråk, så vær fri til å rette meg der jeg tar feil.I denne instruksjonsfulle vil jeg vise deg hvordan du lager et puslespill fra spillet Hammerur ved bruk av arduino
PUZZLE - Arduino Logic Game: 3 trinn
PUZZLE - Arduino Logic Game: Hei. Jeg vil gjerne fortelle deg om historien til å lage et enkelt puslespill " Puzzle " ved hjelp av Arduino UNO og TFT-Shield. For å lage spillet trengte jeg følgende komponenter: Arduino UNO strømadapter (AC-DC) 6-12V for Arduino UNO Micro
Puzzle Box - Codebreakers and Groundbreakers [UCM]: 7 trinn (med bilder)
Puzzle Box - Codebreakers and Groundbreakers [UCM]: Et laserskåret puslespillesett designet for et digitalt makerverksted på Fitzwilliam Museum, Cambridge i forbindelse med utstillingen Codebreakers and Groundbreakers. For verkstedet var knappen i puslespillboksen koblet til en MakeyMakey en