Machen Sie einen Buzz Draht Spiel mit einem Arduino
Überprüfen Sie das Endergebnis - es spielt sogar Musik:
Was du brauchst
Hier sind die Kernteile Sie brauchen, um dieses Projekt zu vollenden:
Hier sind einige optionale Teile des Build zu verbessern:
- 1 x Zusätzlichen Piezo-Summer.
- 1 x Dowel rod.
- 1 x Quad Siebensegmentanzeige.
- 1 x 220 Ohm-Widerstand.
- 1 x Momentary-Taste.
- Male-to-female Schaltdraehte.
- Holzbrett (für Fall).
- Verschiedene Holzschrauben.
Der Build-Plan

Der Kern besteht aus einer Mechaniker Drahtform und eine Schleife an einem Handgriff. Der Spieler hat die Schleife um den Kurs ohne die beiden sich berührenden zu führen. Wenn die beiden berühren, wird der Stromkreis geschlossen und der Summer ertönt. Es ist natürlich möglich, diese Schaltung ohne Verwendung eines Mikrocontrollers zu bauen, aber wo ist der Spaß, dass (und wie sonst würden Sie an Monty Pythons „Flying Circus“ Titelsong zu hören bekommen)?
Der Kurs


Dadurch wird die Schleife von dem Kurs isolieren, einen Start / Ende oder Sicherheitszone bereitgestellt wird. Alternativ Band oder sogar wird ein Strohhalm tun, wenn Sie keinen Schrumpfschlauch verfügen.


Es ist Zeit, um die Basis zu schaffen. Dies dient dazu, den Kurs in einer aufrechten Position zu halten, sowie einen Ort, die Bereitstellung der Elektronik zu verankern. Früher habe ich einige Kiefer offcuts, obwohl Sie, was Sie rund um das Haus nutzen könnten - sogar einen Karton.
Bohren Sie zwei Löcher weit genug voneinander entfernt, um die Ende des Kurses zu sitzen in. Senken Sie die Unterseite bereit zum Aufkleben.
der Griff
Schneiden Sie ein kleines Länge Dübel für den eigentlichen Griff. Diese Metallschleife wird in diesem Griff benutzt. Wenn Sie keine Dübel haben, können Sie ein Stück quadratischen Nadelholz mit einem Gürtel oder Tellerschleifer abrunden (Sie können auch Schleifpapier verwenden könnten, aber es würde sehr lange dauern).
Bohren Sie ein Loch durch diesen Griff. Dies muss groß genug sein, um die Metallschlaufe zu passen und den Draht durch:

Ja, ich bin ganz bewusst ist dies eine Metall-Drehmaschine (für jemanden interessiert, es ist eine Boley Uhrmacherdrehmaschine aus den 1930er Jahren. Ich denke, es ist ein 3C, aber ich würde gerne von Ihnen hören, wenn Sie mehr darüber wissen).
Sie könnten auch einen Kugelschreiber mit dem Zentrum entfernt verwenden.
Schließlich verwenden Heißleim das Kabel und die Schleife in den Griff zu sichern. Heißkleber wird eine starke (aber nicht permanent) Befestigung, so ist es perfekt für diese.
Garaus
Führen Sie den Draht natürlich in die Löcher in der Basis. Vergessen Sie nicht, den Loop / Controller zuerst hinzuzufügen. Verwenden wieder Heißleim den Verlauf an der Basis zu sichern, indem die Senkbohrungen auf der Unterseite der Basis Füllen wie folgt:

Die Rennbahn
Hier ist die vollständige Schaltung. Sie müssen nicht von Ihnen so komplex machen, da dies - lesen Sie weiter, wie wir jeden Teil brechen.
Stecken Sie nun in dem Metallplatz und Griff:
Ein Widerstand Bindungen die Schaltung mit Masse (eine Pull-Down-Widerstand genannt), gewährleistet es nicht „floating“ (dies erlaubt die Arduino die Schaltung Wechsel zu erkennen). Der andere Widerstand schützt den Arduino. Wenn die beiden Teile berühren, geht + 5V in den digitalen Stift. Wenn dieser Widerstand dort nicht vorhanden war, würde ein toter kurz sein - Ihr Computer über die USB-Buchse für das Zeichnen zu viel Strom ziehen würde, wenn man Glück hat.
Verbinden der Signalleitung (lila, auf dem Diagramm) in digitalem Stift 9.
Als nächstes einen Druckknopf zum digitalen Stift verbinden 2:

Schließlich verbindet die Sieben-Segment-LED-Anzeige:
Als nächstes müssen Sie eine Methode, um tatsächlich Notizen / Melodien auf dem Piezo zu spielen. Dieser Kern von Anthony DiGirolamo auf Github enthält den Code, den Sie benötigen. Kopieren Sie alles zwischen „Leerer Buzz“ und „>>“ und in Ihre Haupt-Datei einfügen. Als Referenz, hier ist es:
Die letzte Bibliothek, die Sie brauchen, ist die Sieben-Segment-Anzeige zu steuern - Sie diesen Schritt überspringen können, wenn Sie nicht ein verwenden. Diese Bibliothek wird genannt TM1637 und wurde von Seeed, die gleichen Firma erstellt, die die Treiberplatine erstellt.
In der Arduino IDE finden Sie unter „Bibliotheken verwalten“ (Sketch> Bibliothek einschließen> Bibliotheken verwalten). Dadurch wird der Bibliotheksmanager bringen. Lassen Sie es ein paar Sekunden zu aktualisieren und dann in dem rechten oberen Suchfeld „TM1637“ suchen. Zwei Bibliotheken werden gefunden - Sie wollen „TM1637“ und nicht „TM1637Display“. Wählen Sie und klicken Sie dann auf „Installieren“.
Eine letzte Aufgabe mit dieser Bibliothek - es ist nicht vollständig! Wie es aussieht, kann die Bibliothek nur die Zahlen 0-9 und Buchstaben anzeigen A-F. Wenn dies alles abdeckt würden Sie anzeigen möchten, dann können Sie diesen Schritt überspringen. Wenn nicht, müssen Sie den Code ändern. Entspannen Sie sich! Das ist nicht so schwer, wie es klingt, und wenn Sie Code mit dem Arduino IDE schreiben können, können Sie dies tun.
Öffnen Sie zunächst Ihre Bibliothek Ordner. Dies wird in Ihrem Arduino Ordner. Unter Mac OS X ist dies in / Users / Joe / Dokumente / Arduino / Bibliotheken. Öffnen Sie den Ordner mit dem Namen TM1637. Sie müssen die Datei bearbeiten TM1637.cpp genannt - Sie sicher die andere Datei mit der Endung .h ignorieren können. Öffnen Sie diese Datei in Ihrem bevorzugten Texteditor (für mich, das ist Sublime Text 3), Editor oder die Arduino IDE.
Ändern Sie die dritte Codezeile aus dieser:
Es ist Zeit für den eigentlichen Code. Erstens sind die beiden Bibliotheken bereits erwähnt:
Erstellen Sie nun das Anzeigeobjekt:
Keine Sorge, wenn Sie die Syntax nicht verstehen - diese Linie den Arduino erzählt die 12 und 13 sind an eine Siebensegmentanzeige Stift, und entsprechend zu konfigurieren.
Der Song ist in Melodie und Tempo gespeichert. Diese enthält alle Noten und die Notendauer für die Musik. Wenn Sie möchten, um die Musik zu ändern, modifizieren, diese Arrays (obwohl es als das Einfügen in den Notenwert nicht so einfach ist, ist das Timing ein sehr wichtiger Teil der Musik). Die songState Variable speichert einfach die Position der zuletzt gespielten Note. Dadurch wird sichergestellt, die Melodie von Anfang bis Ende gespielt wird, anstatt um inkonsistent Springen:
Bitte beachte, dass ich den Inhalt der Arrays entfernt habe, siehe unten für den vollständigen Code.
Innerhalb der setup () Funktion gibt es ein paar Dinge passiert. Erstens sind die Ein- und Ausgänge Setup. Dies muss getan werden, so dass der Arduino weiß, was jeder von seinen Stiften verbunden ist:
Jetzt muss die Anzeige konfigurieren:
Die Verfahren setzen. Punkt. und init sind alle innerhalb des _Display Objekt enthalten. Statt einem Punkt, ein Zeiger ( „->“) verwendet diese zuzugreifen. Wieder, keine Sorge über die Syntax (obwohl, wenn Sie mehr erfahren möchten, C ++ Pointers nachschlagen).
Die Hauptschleife hat zwei Spielmodi: Herausforderung und freies Spiel. Freies Spiel erlaubt dem Spieler eine unbegrenzte Anzahl von Zeiten zu spielen. Challenge-Modus stellt einen Zeitgeber für 20 Sekunden der showCountdown Methode. Es nutzt die Taste zum Starten und Stoppen des Timers. Derzeit ist der einzige Weg, Spiel-Modi zu ändern, um manuell die variablen Modus genannt zu bearbeiten. Sehen Sie, wenn Sie eine andere Taste hinzufügen können, dies zu tun und den Code entsprechend zu ändern.
Die Summen Methode spielt die ihm gegebenen Noten. Dies wird in Verbindung mit singen. Die singen Methode geht durch jede Note und spielt sie. Diese Methode wird regelmäßig genannt, obwohl es nur die nächste Note spielen, wenn genug Zeit seit dem letzten Spiel abgelaufen ist. Sobald der Song das Ende erreicht hat, setzt er den Song zu Verse 1 (songState = 14). Sie können dies auf Null gesetzt, den Song am Anfang zu beginnen, aber der Grund, dies zu tun, die Einführung überspringen ist. Die Einführung wird einmal abgespielt, nachdem die Arduino hat hochgefahren, und dann wird es nicht wieder gespielt.
Die showFree und showPlay Methoden schreiben Sie einfach die Worte „frei“ und „PLAY“ auf dem Display. Beachten Sie, wie das „r“ in frei Klein, wenn alle anderen Zeichen in Großbuchstaben sind. Dies ist eine der Einschränkungen von sieben Segmentanzeigen. Sie können nicht jeden Buchstaben des Alphabets zeigen, und einige der Charaktere können sie müssen in gemischtem Fall anzuzeigen.
Die toggleFreePlay Methode blinkt die Anzeige zwischen „FREE“ und „PLAY“. Auch hier tut es dies in einer nicht-blockierende Art und Weise.
Eine weitere nützliche Methode ist showNumber. Dies schreibt eine Zahl in der Mitte zwei Zeichen des Displays wie folgt aus:

Hier ist alles, was Code zusammen: