Inhaltsverzeichnis:

Arduino Puzzle-Box - Gunook
Arduino Puzzle-Box - Gunook

Video: Arduino Puzzle-Box - Gunook

Video: Arduino Puzzle-Box - Gunook
Video: mind blowing arduino puzzle box (with electronics) 2024, November
Anonim
Arduino Puzzle-Box
Arduino Puzzle-Box

Für dieses Projekt werden wir eine Puzzlebox herstellen, die mit Musik funktioniert. Das Wesentliche daran ist, dass beim Drücken einer Taste eine Melodie freigesetzt wird und der Arduino berechnet, welche Tasten gedrückt werden, damit er weiß, was die richtige und was die falsche Antwort ist.

Lieferungen

1 x Arduino uno

1 x 1k Ohm Widerstand

5 x 220 Ohm Widerstände

1 xPiezo-Summer

5 x Taster 6x6 mm

1 x Set Jumperdrähte

1 x Perforations-/Streifenbrett

1 x Lötset

1 x Scharnier

1 x Klemme

1 x kleine Kommode/Holz

1x Heißklebepistole + Klebestifte

1 x 9V Batterie + Halter

bisschen worbla

Farbe

Schritt 1:

Bild
Bild

Zu Beginn müssen Sie Ihre Stifte in Ihr Steckbrett drücken. Verbinden Sie nun analog 2 mit einem Draht mit der Ecke der Platine. Wir werden zwei Widerstände in einer Linie daran anschließen. Der erste ist ein 10k Ohm Widerstand. Am anderen Ende dieses Widerstands verbinden wir den Draht mit der analogen Masse. Der zweite Widerstand ist ein 220 Ohm Widerstand, den wir an den ersten Knopf anschließen. Verwenden Sie einen weiteren Widerstand gleichen Werts, um die zweite offene Seite des Tasters mit dem zweiten Taster zu verbinden. Verbinden Sie die Tasten auf diese Weise bis zum letzten. Beim letzten greifen Sie einen Draht und verbinden ihn mit einer entsprechenden geschlossenen Seite des Knopfes und verbinden ihn mit dem nächsten in der Reihe. Sie wiederholen nun den Vorgang, den Sie mit den Widerständen durchgeführt haben, die nur mit einfachen Drähten bekannt sind. Verbinden Sie die erste Taste mit dem analogen 3, 3V-Anschluss Ihres Arduino. Alles in allem erhalten Sie eine Art Kreuzmuster wie unten abgebildet.

Schritt 2:

Als nächstes stecken Sie den Summer in das Steckbrett und befestigen Sie eine Seite an der digitalen Masse und die andere am 12-Port. Es ist klug, den folgenden Code bereits in Ihr Arduino hochzuladen, damit Sie testen können, ob alles richtig funktioniert. Wenn dies der Fall ist, können Sie mit dem Zusammenlöten der Komponenten beginnen. Tun Sie dies, indem Sie sie aus dem Steckbrett nehmen und die Drähte und Verbindungen direkt zusammenlöten. Wenn Sie der Meinung sind, dass Sie zwischen den Tasten mehr Länge benötigen, können Sie zwischen den Widerständen etwas zusätzlichen Draht hinzufügen. Das Steckbrett ist an dieser Stelle nicht mehr erforderlich.

Schritt 3:

Bild
Bild

Nachdem alles gelötet ist, ist es Zeit, die Box selbst zu machen. Ich habe ein billiges Schubladenset als Basis für meine verwendet. Ich habe einfach der Länge nach halbiert und die Rückseite und die Seite entfernt, die ich durchschneide. Sie sollten jetzt zwei C-förmige Stücke haben. Schneiden Sie eine Seite von einem von ihnen ab, um sie als Deckel zu verwenden. Drehen Sie nun eines der restlichen Teile so, dass sie wie eine deckellose Schachtel zusammenpassen und kleben Sie sie zusammen. Sobald der Kleber richtig ausgehärtet ist, bohren Sie ein kleines Loch in jede Seite der Schachtel für die Knöpfe und ein größeres Loch für den Summer im Deckel.

Schritt 4:

Bild
Bild
Bild
Bild

Jetzt können Sie die Box bemalen. Ich habe meins mit einem Blumendesign basierend auf BOTW gemacht, aber Sie können wirklich jedes gewünschte Design auswählen. Danach können Sie die Knöpfe in die Löcher stecken und einen Klecks Kleber auf die Rückseite des Knopfes und das umgebende Holz auftragen. Das gleiche Prinzip gilt für den Summer, aber meiner passt perfekt in das Loch, was ihn überflüssig macht. Als nächstes nimmst du etwas Worbla und Hitze und schneidest es, um einige kleine Knöpfe zu machen. Kleben Sie sie vorsichtig auf die Knöpfe, aber achten Sie darauf, nicht zu viel Kleber zu verwenden, da Sie die Knöpfe versehentlich verkleben könnten. Jetzt können Sie sie übermalen, damit sie sich besser in die Schachtel einfügen.

Schritt 5:

Zuletzt kleben oder schrauben Sie die Klemme und die Scharniere an Box und Deckel, die beide verbinden.

Schritt 6:

Nun, da Ihre Box komplett ist, müssen Sie nur noch den Arduino und die Batterie hineinlegen und den Deckel schließen.

Schritt 7: Code

// Dies ist der Code für ein Zelda-Themen-Puzzle/eine Spieluhr.

// dies verbindet Ihren Code mit der Liste der Notizen in der anderen Registerkarte

#include "Stellplätze.h"

// Diese Variable stellt sicher, dass das Arduino ein längeres Drücken der Taste als nur ein Drücken sieht

int gleich = 0;

// von hier aus wird es deine Eingabe lesen

intk = 2;

// Dies ist Ihr Ausgangspin

int-Lautsprecher = 12;

// unten sind die Schlussmelodien

int Zelda = {ANMERKUNG_B4, ANMERKUNG_D5, ANMERKUNG_A4, ANMERKUNG_G4, ANMERKUNG_A4, ANMERKUNG_B4, ANMERKUNG_D5, ANMERKUNG_A4, ANMERKUNG_G4, ANMERKUNG_A4, ANMERKUNG_B4, ANMERKUNG_D5, ANMERKUNG_A5, ANMERKUNG_G5, ANMERKUNG_D5, ANMERKUNG_C5, ANMERKUNG_B4, ANMERKUNG_

int ZeldaTime = {2, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2};

int Epona = {HINWEIS_D5, ANMERKUNG_B4, ANMERKUNG_A4, ANMERKUNG_D5, ANMERKUNG_B4, ANMERKUNG_A4, ANMERKUNG_D5, ANMERKUNG_B4, ANMERKUNG_A4, ANMERKUNG_B4, ANMERKUNG_A4};

int EponaTime = {4, 4, 1.5, 4, 4, 1.5, 4, 4, 2, 2, 1};

int Saria = {HINWEIS_F4, ANMERKUNG_A4, ANMERKUNG_B4, ANMERKUNG_F4, ANMERKUNG_A4, ANMERKUNG_B4, ANMERKUNG_F4, ANMERKUNG_A4, ANMERKUNG_B4, ANMERKUNG_E5, ANMERKUNG_D5, ANMERKUNG_B4, ANMERKUNG_C5, ANMERKUNG_B4, ANMERKUNG_G4, ANMERKUNG_E4, ANMERKUNG_D4, ANMERKUNG_E;

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 Dauer einer Note

int BEATTIME = 300;

// der Zähler, der verfolgt, wo wir in der Lösung sind

int zähler = 0;

Leere Einrichtung () {

Serial.begin (9600);

pinMode (2, EINGANG);

pinMode (1, EINGANG);

}

Leere Schleife () {

// liest die Eingabe von den Pins

k = analogRead(2);

int p = analogRead(1);

// Wenn keine Taste gedrückt wird, sollte kein Ton ausgegeben werden

wenn (Erzähler == 0) {

kein Ton (12);

}

// Wenn die gelesenen Daten mit den Parametern übereinstimmen, führen Sie das beschriebene Code-Bit aus

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

rechts();

}

//""

sonst wenn (k 290) {

Links();

}

//""

sonst if (k > 260 && k < 280) {

boven();

}

//""

sonst if (k> 240 && k < 260) {

unter();

}

//""

sonst if (k > 220 && k < 240) {

ein();

}

// Wenn dies nicht der Fall ist (wenn keine Taste gedrückt wird), führen Sie diesen Code aus

anders {

// dasselbe zurücksetzen, damit es beim nächsten Drücken einer Taste verwendet werden kann

gleich = 0;

// Wenn der Zähler bis zu einer bestimmten Zahl reicht, führen Sie das beschriebene Code-Bit aus

wenn (Anzähler == 166) {

zelda();

}

//""

sonst if (teller == 386) {

Saria ();

}

//""

sonst if (teller == 266) {

epona();

}

//""

sonst if (teller == 999) {

// diesen Ton abspielen, um den Fehler zu markieren

Ton (Lautsprecher, NOTE_C3, BEATTIME);

// den Zähler auf 0 zurücksetzen

Kassierer = 0;

}

}

// die Verzögerung zwischen Eingang und Ausgang

Verzögerung (100);

// druckt die Werte Ihrer Eingabe im seriellen Monitor

Serial.println(k);

}

// das ist die erste melodie

Leere zelda () {

// dies setzt einen Zähler, der sich während des Abspielens der Melodie aktualisiert, damit er sie lesen und stoppen kann, wenn er sollte

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

// sagt, wie lange eine Notiz dauern soll

int ZTime = 1000 / ZeldaTime;

// erzeugt die Töne

Ton (Sprecher, Zelda, ZTime);

// erzeugt die richtige Verzögerung

int Pause = ZTime * 1,30;

Verzögerung (Pause);

// setzt den Zähler zurück

Kassierer = 0;

// druckt die Werte Ihrer Eingabe im seriellen Monitor

Serial.println (Zähler);

}

}

//""

Leere epona () {

für (int i = 0; i < sizeof(Epona); i++) {

int ETime = 1000 / EponaTime;

Ton (Sprecher, Epona, ETime);

int Pause = ETime * 1,30;

Verzögerung (Pause);

Kassierer = 0;

Serial.println (Zähler);

}

}

//""

leere Saria () {

für (int i = 0; i < sizeof(Saria); i++) {

int STime = 1000 / SariaTime;

Ton (Sprecher, Saria, STime);

int pause = STime * 1,30;

Verzögerung (Pause);

Kassierer = 0;

Serial.println (Zähler);

}

}

ungültige Aufnahme

hts() {

// falls dies nicht schon gedrückt wurde

wenn (gleich == 0) {

// Wenn der Zähler derzeit einen dieser Werte hat, füge ihn hinzu

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

Kassierer = Kassierer + 1;

}

// andernfalls auf 999 setzen, damit Sie das Fehlerrauschen hören

anders {

Kassierer = 999;

}

// auf eins setzen, damit das Arduino ein längeres Drücken nicht als mehrfaches Drücken liest

gleich = 1;

}

// den Ton spielen

anders {

Ton (Lautsprecher, NOTE_A4, BEATTIME);

}

// druckt die Werte Ihrer Eingabe im seriellen Monitor

Serial.println (Zähler); }

//""

Leere Links () {

wenn (gleich == 0) {

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

Kassierer = Kassierer + 11;

}

sonst if (Erzähler == 0) {

Kassierer = 111;

}

anders {

Kassierer = 999;

}

gleich = 1;

} anders{

Ton (Lautsprecher, NOTE_B4, BEATTIME);

} Serial.println (Zähler);

}

//""

Leere boven() {

if (gleich == 0) { if (Zahler == 111 || Kassierer == 144 || Kassierer == 233) {

Kassierer = Kassierer + 21;

}

sonst if (Erzähler == 0) {

Kassierer = 221;

}

anders {

Kassierer = 999;

}

gleich = 1;

}

anders {

Ton (Lautsprecher, NOTE_D5, BEATTIME);

Serial.println (Zähler);

}

}

//""

Void onder () {

wenn (gleich == 0) {

if (Anzähler == 343) {

Kassierer = Kassierer + 31;

}

sonst if (Erzähler == 0) {

Kassierer = 331;

} anders {

Kassierer = 999;

} gleich = 1;

} anders {

Ton (Lautsprecher, NOTE_F4, BEATTIME);

Serial.println (Zähler);

}

}

//""

nichtig a() {

wenn (gleich == 0) {

wenn (Erzähler == 0) {

Kassierer = 461;

}

anders {

Kassierer = 999;

}

gleich = 1;

}

Ton (Lautsprecher, NOTE_D4, BEATTIME);

Serial.println (Zähler);

}

Empfohlen: