Table des matières:

Boîte de puzzle Arduino : 7 étapes
Boîte de puzzle Arduino : 7 étapes

Vidéo: Boîte de puzzle Arduino : 7 étapes

Vidéo: Boîte de puzzle Arduino : 7 étapes
Vidéo: Nigéria : à 9 ans, il est créateur de 35 jeux vidéo et repéré par Google ! 2024, Juillet
Anonim
Boîte de puzzle Arduino
Boîte de puzzle Arduino

Pour ce projet, nous allons créer une boîte de puzzle qui fonctionne avec de la musique. L'essentiel est que lorsque vous appuyez sur un bouton, il libère une mélodie et l'Arduino calcule quels boutons sont enfoncés afin qu'il sache quelle est la bonne et la mauvaise réponse.

Fournitures

1 x Arduino uno

1 résistance de 1k Ohm

5 résistances de 220 Ohm

1 sonnerie piézoélectrique

5 x bouton poussoir 6x6 mm

1 x jeu de fils de cavalier

1 x panneau perforé/strip

1 x jeu de soudure

1 x charnière

1 x pince

1 x petite commode/bois

1x pistolet à colle chaude + bâtons de colle

1 pile 9v + support

un peu de worbla

Peinture

Étape 1:

Image
Image

Pour commencer, vous devez enfoncer vos épingles dans votre planche à pain. Connectez maintenant l'analogique 2 avec un fil au coin de la carte. Nous allons y connecter deux résistances en ligne. La première est une résistance de 10k Ohm. À l'autre extrémité de cette résistance, nous connectons un fil à la terre analogique. La deuxième résistance est une résistance de 220 Ohm que nous connectons au premier bouton. Utilisez une autre résistance de même valeur afin de connecter le deuxième côté ouvert du bouton avec le deuxième bouton. Continuez à connecter les boutons comme celui-ci jusqu'au dernier. Au dernier, vous attrapez un fil et le connectez à un côté fermé correspondant du bouton et connectez-le au suivant en ligne. Vous répétez maintenant le processus que vous avez fait avec les résistances ne connaissent qu'avec des fils simples. Connectez le premier bouton au port analogique 3, 3V de votre Arduino. Dans l'ensemble, vous obtiendrez une sorte de motif croisé comme illustré ci-dessous.

Étape 2:

Ensuite, branchez votre buzzer sur la planche à pain et fixez un côté à la terre numérique et l'autre au port 12. Il est judicieux de télécharger déjà le code suivant dans votre Arduino afin de pouvoir tester si tout fonctionne correctement. Si c'est le cas, vous pouvez commencer à souder les composants ensemble. Pour ce faire, retirez-les de la planche à pain et soudez directement les fils et les connexions ensemble. Si vous pensez avoir besoin de plus de longueur entre les boutons, vous pouvez ajouter du fil supplémentaire entre les résistances. La planche à pain n'est plus nécessaire à ce stade.

Étape 3:

Image
Image

Une fois que tout est soudé, il est temps de fabriquer la boîte elle-même. J'ai utilisé un ensemble de tiroirs bon marché comme base pour le mien. J'ai simplement coupé en deux dans le sens de la longueur et enlevé le dos et le côté que j'ai coupé. Vous devriez avoir deux pièces en forme de C maintenant. Coupez un côté de l'un d'eux pour l'utiliser comme couvercle. Maintenant, faites pivoter l'une des pièces restantes pour qu'elles s'emboîtent comme une boîte sans couvercle et collez-les ensemble. Une fois que la colle a bien pris, percez un petit trou de chaque côté de la boîte pour les boutons et un plus grand pour le buzzer dans le couvercle.

Étape 4:

Image
Image
Image
Image

Vous pouvez maintenant commencer à peindre la boîte. J'ai fait le mien avec un design de fleurs basé sur BOTW mais vous pouvez vraiment choisir n'importe quel design que vous voulez. Après cela, vous pouvez mettre les boutons à l'intérieur des trous et mettre une boule de colle sur le dos du bouton et le bois environnant. Le même principe s'applique au buzzer mais le mien rentre parfaitement dans le trou le rendant inutile. Ensuite, vous prenez un peu de worbla et vous le chauffez et le coupez afin de faire quelques petits boutons. Collez-les soigneusement sur les boutons, mais assurez-vous de ne pas utiliser trop de colle car vous pourriez accidentellement coincer les boutons. Vous pouvez maintenant les peindre pour qu'ils se fondent davantage dans la boîte.

Étape 5:

Enfin, vous collez ou vissez la pince et les charnières sur la boîte et le couvercle reliant les deux.

Étape 6:

Maintenant que votre box est terminée, il ne vous reste plus qu’à mettre l’Arduino et la batterie à l’intérieur et fermer le couvercle.

Étape 7: Coder

// Ceci est le code d'un puzzle/boîte à musique sur le thème de Zelda.

// ceci connecte votre code à la liste des notes dans l'autre onglet

#include "emplacements.h"

// cette variable garantira que l'Arduino voit une pression plus longue sur le bouton comme une seule pression

int même = 0;

// à partir de là, il lira votre entrée

entier k = 2;

//c'est votre broche de sortie

haut-parleur int = 12;

// ci-dessous les mélodies de fin

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_A_B}; NOTE_A5}, NOTE

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, NOTE_D4_, NOTE_E}

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

// la durée normale d'une note

int BEATTIME = 300;

// le compteur qui va garder une trace de l'endroit où nous sommes dans la solution

int caissier = 0;

void setup() {

Serial.begin(9600);

pinMode(2, INPUT);

pinMode(1, INPUT);

}

boucle vide() {

// lit l'entrée des broches

k = lecture analogique(2);

int p = analogRead(1);

//si aucun bouton n'est enfoncé, il ne devrait y avoir aucune tonalité

si (caissier == 0) {

pas de ton (12);

}

//si les données lues correspondent aux paramètres, exécutez le bit de code décrit

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

rechts();

}

//""

sinon si (k 290) {

liens();

}

//""

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

boven();

}

//""

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

sous ();

}

//""

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

une();

}

// si ce n'est pas le cas (quand aucun bouton n'est enfoncé), exécutez ce code

autre {

// réinitialiser le même pour qu'il puisse être utilisé la prochaine fois qu'un bouton est enfoncé

même = 0;

// si le compteur est jusqu'à un certain nombre exécuter le bit de code décrit

si (caissier == 166) {

zelda();

}

//""

sinon si (caissier == 386) {

saria();

}

//""

else if (caissier == 266) {

épona();

}

//""

else if (caissier == 999) {

//joue ce ton pour marquer l'erreur

ton(haut-parleur, NOTE_C3, BEATTIME);

//remet le compteur à 0

caissier = 0;

}

}

//le délai entre l'entrée et la sortie

retard (100);

// imprime les valeurs de votre entrée dans le moniteur série

Serial.println(k);

}

// c'est la première mélodie

zelda vide () {

//cela définit un compteur qui se met à jour tout en jouant la mélodie afin qu'il puisse la lire et s'arrêter quand il le devrait

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

//indique combien de temps une note doit durer

int ZTime = 1000 / ZeldaTime;

// génère les tonalités

ton (haut-parleur, Zelda, ZTime);

//crée le bon délai

pause int = ZTime * 1,30;

retard (pause);

//réinitialise le compteur

caissier = 0;

// imprime les valeurs de votre entrée dans le moniteur série

Serial.println(caissier);

}

}

//""

épona vide() {

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

int ETime = 1000 / EponaTime;

tonalité (haut-parleur, Epona, ETime);

int pause = EHeure * 1,30;

retard (pause);

caissier = 0;

Serial.println(caissier);

}

}

//""

saria vide() {

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

int STime = 1000 / SariaTime;

ton (haut-parleur, Saria, STime);

int pause = SHeure * 1,30;

retard (pause);

caissier = 0;

Serial.println(caissier);

}

}

annuler l'enregistrement

hts() {

// si ce n'était pas déjà pressé

si (même == 0) {

// si le compteur a actuellement l'une de ces valeurs, ajoutez-le

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

caissier = caissier + 1;

}

// sinon, définissez-le sur 999 pour que vous entendiez le bruit d'erreur

autre {

caissier = 999;

}

// définissez la même chose sur un pour que l'Arduino ne lise pas une pression prolongée comme plusieurs pressions

même = 1;

}

// joue le ton

autre {

ton(haut-parleur, NOTE_A4, BEATTIME);

}

// imprime les valeurs de votre entrée dans le moniteur série

Serial.println(caissier); }

//""

liens vides() {

si (même == 0) {

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

caissier = caissier + 11;

}

else if (caissier == 0) {

caissier = 111;

}

autre {

caissier = 999;

}

même = 1;

} autre{

ton(haut-parleur, NOTE_B4, BEATTIME);

} Serial.println(caissier);

}

//""

void boven() {

if (idem == 0) { if (caissier == 111 || caissier == 144 || caissier == 233) {

caissier = caissier + 21;

}

else if (caissier == 0) {

caissier = 221;

}

autre {

caissier = 999;

}

même = 1;

}

autre {

tonalité(haut-parleur, NOTE_D5, BEATTIME);

Serial.println(caissier);

}

}

//""

annuler sous () {

si (même == 0) {

si (caissier == 343) {

caissier = caissier + 31;

}

else if (caissier == 0) {

caissier = 331;

} autre {

caissier = 999;

} même = 1;

} autre {

tonalité(haut-parleur, NOTE_F4, BEATTIME);

Serial.println(caissier);

}

}

//""

annuler un () {

si (même == 0) {

si (caissier == 0) {

caissier = 461;

}

autre {

caissier = 999;

}

même = 1;

}

tonalité(haut-parleur, NOTE_D4, BEATTIME);

Serial.println(caissier);

}

Conseillé: