Taula de continguts:

Arduino Puzzle Box: 7 passos
Arduino Puzzle Box: 7 passos

Vídeo: Arduino Puzzle Box: 7 passos

Vídeo: Arduino Puzzle Box: 7 passos
Vídeo: mind blowing arduino puzzle box (with electronics) 2024, De novembre
Anonim
Arduino Puzzle Box
Arduino Puzzle Box

Per a aquest projecte farem una caixa de trencaclosques que funcioni amb la música. L’essencial bàsic és que quan premeu un botó allibera una melodia i l’Arduino calcula quins botons es premen perquè sàpiga què és correcte i quina és la resposta equivocada.

Subministraments

1 x Arduino uno

Resistència 1 x 1k Ohm

Resistències de 5 x 220 Ohm

1 xPiezo Buzzer

5 x polsador de 6x6 mm

1 x establir cables de pont

1 x tauler de perf / strip

1 x soldadura

1 x frontissa

1 x pinça

1 x petit calaixera / fusta

1 pistola de cola calenta + pals de cola

1 x bateria de 9v + suport

una mica de worbla

pintura

Pas 1:

Imatge
Imatge

Per començar, heu de prémer els pins a la taula de treball. Ara connecteu l'analògic 2 amb un cable a la cantonada de la placa. Anem a connectar-hi dues resistències en una línia. El primer és una resistència de 10 k Ohm. A l’altre extrem d’aquesta resistència connectem el cable a la terra analògica. La segona resistència és una resistència de 220 Ohm que connectem al primer botó. Utilitzeu una altra resistència del mateix valor per connectar el segon costat obert del botó amb el segon botó. Seguiu connectant els botons així fins a l'últim. A la darrera agafeu un cable i el connecteu al costat tancat corresponent del botó i el connecteu al següent de la línia. Ara repetiu el procés que heu fet amb les resistències que només coneixeu amb cables simples. Connecteu el primer botó al port analògic de 3, 3V del vostre Arduino. Amb tot, obtindreu una mena de patern creuat, tal com es mostra a continuació.

Pas 2:

A continuació, connecteu el zumbador a la placa de fixació i fixeu un costat a la terra digital i l'altre al port 12. És intel·ligent carregar el següent codi al vostre Arduino perquè pugueu provar si tot funciona correctament. Si és així, podeu començar a soldar els components junts. Feu-ho traient-los de la taula de pa i soldant directament els cables i les connexions. Si creieu que necessiteu més longitud entre els botons, podeu afegir un cable addicional entre les resistències. En aquest moment, la taula de treball ja no és necessària.

Pas 3:

Imatge
Imatge

Després de soldar-se tot, és hora de fer la caixa mateixa. Vaig utilitzar un calaix barat com a base per a la meva. Simplement he tallat per la meitat al llarg de la longitud i he tret la part posterior i el costat que he tallat. Hauríeu de tenir dues peces en forma de c ara. Talleu un costat d’un d’ells per fer-lo servir com a tapa. Ara gireu una de les peces restants perquè encaixin com una caixa sense tapa i enganxeu-les. Un cop la cola s'hagi fixat correctament, practiqueu un petit forat a cada costat de la caixa per als botons i un altre més gran per al brunzidor de la tapa.

Pas 4:

Imatge
Imatge
Imatge
Imatge

Ara podeu començar a pintar la caixa. Vaig fer el meu amb un disseny de flors basat en BOTW, però realment podeu triar qualsevol disseny que vulgueu. Un cop fet això, podeu posar els botons dins dels forats i posar un globus de cola a la part posterior del botó i la fusta que l'envolta. El mateix principi s'aplica al timbre, però el meu s'adapta perfectament al forat, cosa que fa que sigui innecessari. A continuació, agafeu una mica de worbla i escalfeu-la i la talleu per fer uns botons petits. Enganxeu-los amb cura als botons, però assegureu-vos de no utilitzar-ne massa, ja que és possible que accidentalment enganxeu els botons. Ara podeu pintar-los per tal que es combinin més amb la caixa.

Pas 5:

Per últim, enganxeu o cargoleu, la pinça i les frontisses de la caixa i la tapa que uneixen les dues.

Pas 6:

Ara que la vostra caixa està completa, tot el que heu de fer és posar-hi l’Arduino i la bateria i tancar la tapa.

Pas 7: Codi

// Aquest és el codi per a una caixa de música / trencaclosques amb temàtica Zelda.

// connecta el vostre codi a la llista de notes de l'altra pestanya

#include "pitches.h"

// aquesta variable assegurarà que l'Arduino vegi una pulsació més llarga del botó amb només prémer-la

int mateix = 0;

// des d’aquí llegirà la vostra entrada

int k = 2;

// aquest és el vostre pin de sortida

int speaker = 12;

// a continuació es mostren les melodies finals

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

// la durada normal d’una nota

int BEATTIME = 300;

// el comptador que farem un seguiment de si estem en la solució

int caixer = 0;

configuració nul·la () {

Serial.begin (9600);

pinMode (2, INPUT);

pinMode (1, INPUT);

}

bucle buit () {

// llegeix l'entrada dels pins

k = Llegir analògic (2);

int p = analogRead (1);

// si no hi ha cap botó premut, no hi haurà cap to

if (caixer == 0) {

noTone (12);

}

// si les dades llegides corresponen als paràmetres, executeu el bit de codi descrit

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

rechts ();

}

//""

altrament si (k 290) {

links ();

}

//""

altrament si (k> 260 && k <280) {

boven ();

}

//""

altrament si (k> 240 && k <260) {

onder ();

}

//""

altrament si (k> 220 && k <240) {

a ();

}

// si no ho fa (quan no es prem cap botó), executeu aquest codi

més {

// restableix el mateix perquè es pugui utilitzar la propera vegada que es prem un botó

igual = 0;

// si el comptador és fins a un nombre determinat, executeu el bit de codi descrit

if (caixer == 166) {

zelda ();

}

//""

else if (caixer == 386) {

saria ();

}

//""

else if (caixer == 266) {

epona ();

}

//""

else if (caixer == 999) {

// toca aquest to per marcar l’error

to (altaveu, NOTE_C3, BEATTIME);

// restableix el comptador a 0

caixer = 0;

}

}

// el retard entre l'entrada i la sortida

retard (100);

// imprimeix els valors de la vostra entrada al monitor sèrie

Serial.println (k);

}

// aquesta és la primera melodia

void zelda () {

// estableix un comptador que s'actualitza a si mateix mentre toca la melodia perquè pugui llegir-la i aturar-se quan ho faci

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

// diu quant de temps ha de durar una nota

int ZTime = 1000 / ZeldaTime ;

// genera els tons

to (altaveu, Zelda , ZTime);

// crea el retard correcte

int pause = ZTime * 1,30;

retard (pausa);

// restableix el comptador

caixer = 0;

// imprimeix els valors de la vostra entrada al monitor sèrie

Serial.println (caixer);

}

}

//""

void epona () {

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

int ETime = 1000 / EponaTime ;

to (altaveu, Epona , ETime);

int pause = ETime * 1,30;

retard (pausa);

caixer = 0;

Serial.println (caixer);

}

}

//""

void saria () {

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

int STime = 1000 / SariaTime ;

to (altaveu, Saria , STime);

int pause = STime * 1,30;

retard (pausa);

caixer = 0;

Serial.println (caixer);

}

}

rec nul

hts () {

// si encara no es premia

if (igual == 0) {

// si el comptador té actualment un d'aquests valors, afegiu-hi

if (caixer == 0 || caixer == 132 || caixer == 165 || caixer == 232 || caixer == 265 || caixer == 331 || caixer == 374) {

caixer = caixer + 1;

}

// en cas contrari, configureu-lo a 999 perquè sentiu el soroll d'error

més {

caixer = 999;

}

// Estableix el mateix a un perquè l'Arduino no llegeixi una premsa prolongada com a premsa múltiple

igual = 1;

}

// toca el to

més {

to (altaveu, NOTE_A4, BEATTIME);

}

// imprimeix els valors de la vostra entrada al monitor sèrie

Serial.println (caixer); }

//""

enllaços buits () {

if (igual == 0) {

if (caixer == 133 || caixer == 254 || caixer == 244 || caixer == 332 || caixer == 375 || caixer == 221) {

caixer = caixer + 11;

}

else if (caixer == 0) {

caixer = 111;

}

més {

caixer = 999;

}

igual = 1;

} més {

to (altaveu, NOTE_B4, BEATTIME);

} Serial.println (caixer);

}

//""

void boven () {

if (igual == 0) {if (caixer == 111 || caixer == 144 || caixer == 233) {

caixer = caixer + 21;

}

else if (caixer == 0) {

caixer = 221;

}

més {

caixer = 999;

}

igual = 1;

}

més {

to (altaveu, NOTE_D5, BEATTIME);

Serial.println (caixer);

}

}

//""

void onder () {

if (igual == 0) {

if (caixer == 343) {

caixer = caixer + 31;

}

else if (caixer == 0) {

caixer = 331;

} més {

caixer = 999;

} igual = 1;

} més {

to (altaveu, NOTE_F4, BEATTIME);

Serial.println (caixer);

}

}

//""

buida a () {

if (igual == 0) {

if (caixer == 0) {

caixer = 461;

}

més {

caixer = 999;

}

igual = 1;

}

to (altaveu, NOTE_D4, BEATTIME);

Serial.println (caixer);

}

Recomanat: