Tabla de contenido:

Caja de rompecabezas Arduino: 7 pasos
Caja de rompecabezas Arduino: 7 pasos

Video: Caja de rompecabezas Arduino: 7 pasos

Video: Caja de rompecabezas Arduino: 7 pasos
Video: DON'T TOUCH BOX !!! - Useless box with arduino - DIY 2024, Noviembre
Anonim
Caja de rompecabezas Arduino
Caja de rompecabezas Arduino

Para este proyecto vamos a hacer una caja de rompecabezas que funcione con música. La esencia básica de esto es que cuando presiona un botón, libera una melodía y el Arduino calcula qué botones se presionan para que sepa cuál es la respuesta correcta y cuál es la incorrecta.

Suministros

1 x Arduino uno

Resistencia de 1 x 1k Ohm

5 resistencias de 220 ohmios

1 x zumbador piezo

5 x pulsador 6x6 mm

1 x juego de cables de puente

1 x tablero de perfilado / tira

1 x juego de soldaduras

1 x bisagra

1 x abrazadera

1 x cómoda pequeña / madera

1x pistola de pegamento caliente + barras de pegamento

1 x batería de 9v + soporte

un poco de Worbla

pintura

Paso 1:

Imagen
Imagen

Para empezar, debes presionar los pines en tu tablero. Ahora conecte el analógico 2 con un cable a la esquina de la placa. Vamos a conectarle dos resistencias en una línea. La primera es una resistencia de 10k Ohm. Al otro extremo de esta resistencia, conectamos el cable a la tierra analógica. La segunda resistencia es una resistencia de 220 ohmios que conectamos al primer botón. Utilice otra resistencia del mismo valor para conectar el segundo lado abierto del botón con el segundo botón. Sigue conectando los botones así hasta el último. En el último, toma un cable y lo conecta al lado cerrado correspondiente del botón y lo conecta al siguiente en la línea. Ahora repite el proceso que hiciste con las resistencias que solo conoces con cables planos. Conecte el primer botón al puerto analógico 3, 3V en su Arduino. En general, obtendrá una especie de patrón cruzado como se muestra a continuación.

Paso 2:

A continuación, conecte el timbre a la placa de pruebas y asegure un lado a la tierra digital y el otro al puerto 12. Es inteligente cargar el siguiente código en su Arduino para que pueda probar si todo funciona correctamente. Si es así, puede comenzar a soldar los componentes juntos. Haga esto sacándolos de la placa y soldando los cables y las conexiones juntos directamente. Si cree que necesita más longitud entre los botones, puede agregar un cable adicional entre las resistencias. La placa de pruebas ya no es necesaria en este momento.

Paso 3:

Imagen
Imagen

Después de que todo esté soldado, es hora de hacer la caja. Usé un juego de cajones baratos como base para el mío. Simplemente corté por la mitad a lo largo y quité la parte posterior y el lado que corté. Deberías tener dos piezas en forma de C ahora. Corta un lado de uno de ellos para usarlo como tapa. Ahora rote una de las piezas restantes para que encajen como una caja sin tapa y péguelas juntas. Una vez que el pegamento se haya fijado correctamente, taladre un pequeño orificio en cada lado de la caja para los botones y uno más grande para el timbre de la tapa.

Paso 4:

Imagen
Imagen
Imagen
Imagen

Ahora puedes empezar a pintar la caja. Hice el mío con un diseño de flores basado en BOTW, pero realmente puedes elegir el diseño que quieras. Una vez hecho esto, puede colocar los botones dentro de los agujeros y poner una gota de pegamento en la parte posterior del botón y la madera circundante. El mismo principio se aplica al timbre, pero el mío encaja perfectamente en el orificio, lo que lo hace innecesario. A continuación, coges un poco de Worbla y lo calientas y lo cortas para hacer unos pequeños botones. Pégalos con cuidado a los botones, pero asegúrate de no usar demasiado pegamento porque podrías atascarlos accidentalmente. Ahora puedes pintarlos para que se mezclen más con la caja.

Paso 5:

Por último, pegas o atornillas, la abrazadera y las bisagras de la caja y la tapa conectando las dos.

Paso 6:

Ahora que su caja está completa, todo lo que tiene que hacer es colocar el Arduino y la batería dentro y cerrar la tapa.

Paso 7: Código

// Este es el código para un rompecabezas / caja de música con el tema de Zelda.

// esto conecta su código a la lista de notas en la otra pestaña

#include "pitches.h"

// esta variable asegurará que Arduino vea una presión más prolongada del botón como solo una presión

int mismo = 0;

// desde aquí leerá tu entrada

int k = 2;

// este es tu pin de salida

int altavoz = 12;

// debajo están las melodías finales

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_G4, 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 duración normal de una nota

int BEATTIME = 300;

// el contador que va a realizar un seguimiento de dónde estamos en la solución

int teller = 0;

configuración vacía () {

Serial.begin (9600);

pinMode (2, ENTRADA);

pinMode (1, ENTRADA);

}

bucle vacío () {

// lee la entrada de los pines

k = analogRead (2);

int p = analogRead (1);

// si no hay ningún botón presionado no debería haber tono

si (cajero == 0) {

noTone (12);

}

// si los datos leídos se corresponden con los parámetros, ejecute el bit de código descrito

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

rechts ();

}

//""

más si (k 290) {

Enlaces();

}

//""

más si (k> 260 && k <280) {

boven ();

}

//""

más si (k> 240 && k <260) {

onder ();

}

//""

más si (k> 220 && k <240) {

a();

}

// si no lo hace (cuando no se presiona ningún botón), ejecute este código

demás {

// restablecer lo mismo para que se pueda usar la próxima vez que se presione un botón

igual = 0;

// si el contador llega a cierto número, ejecute el bit de código descrito

si (cajero == 166) {

zelda ();

}

//""

más si (cajero == 386) {

saria ();

}

//""

más si (cajero == 266) {

epona ();

}

//""

else if (cajero == 999) {

// toca este tono para marcar el error

tono (altavoz, NOTE_C3, BEATTIME);

// restablecer el contador a 0

cajero = 0;

}

}

// el retraso entre la entrada y la salida

retraso (100);

// imprime los valores de su entrada en el monitor serial

Serial.println (k);

}

// esta es la primera melodía

void zelda () {

// esto establece un contador que se actualiza mientras se reproduce la melodía para que pueda leerla y detenerse cuando debería

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

// dice cuanto debe durar una nota

int ZTime = 1000 / ZeldaTime ;

// genera los tonos

tono (altavoz, Zelda , ZTime);

// crea el retraso correcto

int pause = ZTime * 1.30;

retraso (pausa);

// restablece el contador

cajero = 0;

// imprime los valores de su entrada en el monitor serial

Serial.println (cajero);

}

}

//""

void epona () {

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

int ETime = 1000 / EponaTime ;

tono (hablante, Epona , ETime);

int pause = ETime * 1.30;

retraso (pausa);

cajero = 0;

Serial.println (cajero);

}

}

//""

void saria () {

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

int STime = 1000 / SariaTime ;

tono (hablante, Saria , STime);

int pause = STime * 1.30;

retraso (pausa);

cajero = 0;

Serial.println (cajero);

}

}

rec vacío

hts () {

// si esto no estaba ya presionado

si (igual == 0) {

// si el contador tiene actualmente uno de estos valores, agréguelo

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

cajero = cajero + 1;

}

// de lo contrario, configúrelo en 999 para que escuche el ruido de error

demás {

cajero = 999;

}

// establece lo mismo en uno para que Arduino no lea una pulsación prolongada como pulsaciones múltiples

igual = 1;

}

// toca el tono

demás {

tono (altavoz, NOTE_A4, BEATTIME);

}

// imprime los valores de su entrada en el monitor serial

Serial.println (cajero); }

//""

enlaces vacíos () {

si (igual == 0) {

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

cajero = cajero + 11;

}

más si (cajero == 0) {

cajero = 111;

}

demás {

cajero = 999;

}

igual = 1;

} demás{

tono (altavoz, NOTE_B4, BEATTIME);

} Serial.println (cajero);

}

//""

void boven () {

si (igual == 0) {si (cajero == 111 || cajero == 144 || cajero == 233) {

cajero = cajero + 21;

}

más si (cajero == 0) {

cajero = 221;

}

demás {

cajero = 999;

}

igual = 1;

}

demás {

tono (altavoz, NOTE_D5, BEATTIME);

Serial.println (cajero);

}

}

//""

void onder () {

si (igual == 0) {

si (cajero == 343) {

cajero = cajero + 31;

}

más si (cajero == 0) {

cajero = 331;

} demás {

cajero = 999;

} igual = 1;

} demás {

tono (altavoz, NOTE_F4, BEATTIME);

Serial.println (cajero);

}

}

//""

anular un () {

si (igual == 0) {

si (cajero == 0) {

cajero = 461;

}

demás {

cajero = 999;

}

igual = 1;

}

tono (altavoz, NOTE_D4, BEATTIME);

Serial.println (cajero);

}

Recomendado: