Inhaltsverzeichnis:

Testen Sie Bare Arduino mit Spielsoftware mit kapazitivem Eingang und LED - Gunook
Testen Sie Bare Arduino mit Spielsoftware mit kapazitivem Eingang und LED - Gunook

Video: Testen Sie Bare Arduino mit Spielsoftware mit kapazitivem Eingang und LED - Gunook

Video: Testen Sie Bare Arduino mit Spielsoftware mit kapazitivem Eingang und LED - Gunook
Video: МАСТЕР-КЛАСС по Arduino | Полный семинар по программированию за 90 минут! 2024, Juli
Anonim
Testen Sie Bare Arduino mit Spielsoftware mit kapazitivem Eingang und LED
Testen Sie Bare Arduino mit Spielsoftware mit kapazitivem Eingang und LED
Testen Sie Bare Arduino mit Spielsoftware mit kapazitivem Eingang und LED
Testen Sie Bare Arduino mit Spielsoftware mit kapazitivem Eingang und LED

"Push-It" Interaktives Spiel mit einem nackten Arduino-Board, keine externen Teile oder Verkabelung erforderlich (verwendet einen kapazitiven "Touch" -Eingang). Oben gezeigt, zeigt es, wie es auf zwei verschiedenen Boards läuft.

Push-It hat zwei Zwecke.

  1. Um schnell zu demonstrieren / zu überprüfen, dass Ihr Arduino-Board funktioniert und dass Sie richtig eingerichtet sind, um eine neue Codeskizze darauf herunterzuladen. Sie können sehen, dass es Eingaben und Ausgaben durchführt (digitalen Eingangspegel erfassen, Ausgabe an die On-Board-LED); Speichern und Wiederherstellen eines Werts aus dem nichtflüchtigen EEPROM-Speicher. Alles ohne Anbringen von Kabeln oder Geräten.
  2. Bieten Sie ein unterhaltsames und herausforderndes Spiel, das mit einem Arduino-Board interagiert.

Dieses anweisbare geht davon aus, dass Sie bereits eine Arduino IDE installiert haben und zumindest minimal mit ihrer Verwendung vertraut sind. Falls nicht, verweise ich auf diese Links:

Erste Schritte mit Arduino

Hinzufügen von Digispark (mit Bootloader) Unterstützung zu vorhandener Arduino 1.6.x IDE

Push-It funktioniert mit fast jedem Arduino-Board, z. B. ein Nano-, Uno- oder DigiSpark Attiny85-Board. Ich habe es mit einem Nano 3.1 und einem DigiSpark getestet. Wenn ich mich im Text auf Pin-Namen / -Nummern beziehe, werden sie auf dem Nano-Board verwendet (im Gegensatz zum DigiSpark).

Schritt 1: Haben Sie die Dinge, die Sie brauchen

Das ist einfach jedes Arduino oder vergleichbare Board.

Wenn Sie noch keinen haben, empfehle ich Ihnen, mit einem DigiSpark Pro (~ 12 USD) oder einem Nano 3.0 von eBay für ~ 3 USD zu beginnen (aber Sie haben ein oder zwei zusätzliche Wochen Zeit, um zu warten, bis es aus China kommt; und Sie müssen einen CH340 USB-Treiber installieren). Der DigiSpark ~ 10 US-Dollar (nicht Pro) ist sehr gut für dieses Single-Bit-Videospiel geeignet (Diese abgespeckte Einheit mit nur 6 I/Os ist etwas schwieriger zum Hochladen)

Links zu der hier verwendeten Hardware:

Nano V3.0 Atmega328P bei eBay

Digispark USB-Entwicklungsboard

Schritt 2: Abrufen und Herunterladen des Codes

Code abrufen und herunterladen
Code abrufen und herunterladen

Kopieren Sie den folgenden Code in eine Arduino-Skizzendatei (z. B. …/Push_It/Push_It.ino) Ich habe versucht, ihn ziemlich gut zu kommentieren. Ich hoffe, Sie finden den Code leicht verständlich. Die Logik, um zu bestimmen, wann erhöht, verringert und wann nicht, ist etwas kompliziert, aber dieser Teil ist auch spezialisierter Code und nicht von allgemeinem Nutzen die Arduino-IDE siehe:

Erstellen einer neuen Arduino-Skizze

Laden Sie die 'Push_It'-Skizze in unseren Mikrocontroller gemäß den Arduino-IDE-Anweisungen für Ihr Board herunter.

Schritt 3: Spielen

Spielen
Spielen

Das Ziel des Spiels ist es, die LED (an Bord) so oft wie möglich in einer Reihe von Blitzen blinken zu lassen, die sich dann wiederholen

Das Spiel spielen:

Push-It beginnt mit einem einzelnen Blitz, der sich dann wiederholt. Wenn Sie Ihren Finger in der Nähe des Eingangspins berühren, während die LED leuchtet, blinkt die LED im nächsten Zyklus zweimal.

Jedes Mal, wenn Sie die Pseudo-Taste während des ersten Blitzes einer Reihe von Blitzen drücken, wird dieser Reihe ein weiterer Blitz hinzugefügt. Es spielt im Allgemeinen keine Rolle, wann Sie Ihren Finger anheben/entfernen.

Wenn Sie jedoch vor oder nach dem ersten Blitz "drücken", wird die Anzahl der Blitze in einem Satz reduziert.

Wenn Sie nichts weiter tun, wird die Anzahl der Blitze in einem Satz beibehalten. Wenn die Zählung für einen vollen Zyklus unverändert bleibt, wird die Zählnummer im EEPROM-Speicher gespeichert.

Jedes Mal, wenn Sie es schaffen, die Blitzzahl zu erhöhen, beschleunigt sich das Timing ein wenig, was es immer schwieriger macht, hohe Blitzzahlen zu erreichen. Wenn Sie einen Fehler machen und die Anzahl der Blitze verringert wird, wird eine längere Pause eingelegt, bevor der Blitz des nächsten Zyklus beginnt. Dies stellt eine zusätzliche Herausforderung dar, da es die Wahrscheinlichkeit erhöhen kann, dass Sie mit der Waffe springen. Bleiben Sie also wachsam.

Sobald Sie Ihr Gerät auf eine hohe Blitzzahl gebracht haben, können Sie es zu einem Freund bringen (oder es per Post schicken, wofür der DigiSpark gut ist). zu. Ich fand es ziemlich schwierig, es auf mehr als 8 zu bringen. Mit einem angeschlossenen Knopf habe ich es geschafft, es auf über ein Dutzend zu bringen. Um zu einem niedrigeren Zählwert zurückzukehren, können Sie ihn jederzeit vor oder nach dem ersten Blitz wiederholt drücken. Auch wenn Sie den Eingangspin während eines Einschaltens auf Masse legen, wird der Zähler auf 1 zurückgesetzt.

Beachten Sie, dass das ursprüngliche DigiSpark-Board nach dem Einschalten eine Verzögerung von 10 Sekunden hat, bevor es beginnt, den 'Push-It'-Code auszuführen und das Spiel zu spielen. Es nutzt diese Zeit, um zu versuchen, über die USB-Pins zu sprechen, um ein mögliches neues Download-Code-Update zu erhalten.

Wenn das von Ihnen verwendete Arduino-Board eine USB-TX-LED hat, blinkt diese LED schnell, wenn Sie den Knopf effektiv gedrückt haben. Diese LED blinkt stärker, wenn der Zählwert im EEPROM mit einem neuen Wert aktualisiert wird. Dieses Feedback kann Ihnen sehr dabei helfen, zu wissen, wann oder um sicherzustellen, dass Sie ein „Tastendruck“-Ereignis effektiv ausgelöst haben. Möglicherweise müssen Sie sicherstellen, dass Sie die Schaltungsmasse nicht berühren (wie das Metall um einen Micro-USB-Anschluss), damit Ihre Figur tatsächlich Rauschen auf den offenen Eingangspin induziert. Es werden zusätzliche und etwas unvorhersehbare Herausforderungen aufgrund der Tatsache, dass der Eingangspin schwebt (nicht durch eine leitende / ohmsche Last nach oben oder unten gezogen wird) und das variable Signalrauschen, das durch Ihren Finger kommt, auftreten.

Eine 250-Hz-Rechteckwelle wird an einen Pin neben dem Eingangspin ausgegeben, was die Sicherheit eines eingespeisten Eingangssignals erheblich verbessert, wenn Ihr Finger beide Pins bedeckt.

Ich habe festgestellt, dass die Reaktion des DigiSpark-Boards ziemlich konstant vorhersehbar ist, wenn die Finger in die Ecke des Boards gedrückt werden, wo sich D3-D5 befinden.

Wenn ich 'Push-It' spiele, mache ich dies gerne mit dem Board, das an einen mobilen USB-5V-Akku angeschlossen ist (siehe Fotos). Diese sind in der Regel neben denen von USB-Wechselstrom- und 12-V-Autoadaptern kostengünstig in Behältern zu finden; in den meisten Kaufhäusern Elektronikabteilung.

Schritt 4: Optionale Experimente mit externen Komponenten

Optionale Experimente mit externen Komponenten
Optionale Experimente mit externen Komponenten

Bitte beachten: Wenn Sie einen echten Button anhängen, muss eine Codezeile auskommentiert werden, wie im Code angegeben.

Bei einem Lautsprecher, der eine Seite mit Masse verbindet, hören Sie den Klang einer 250-Hz-Rechteckwelle, wenn Sie das andere Kabel zu D4 berühren. Bei D3 gibt es eine 500Hz Rechteckwelle. Wenn Sie den Lautsprecher zwischen D3 und D4 anschließen, hören Sie eine Mischung der beiden Signale.

Das Anschließen einer LED anstelle eines Lautsprechers wie oben ist sehr interessant. Sie müssen sich keine Gedanken über Spannung, Stromstärke, Widerstände oder sogar Polarität machen (im schlimmsten Fall leuchtet es nicht, dann drehen Sie es einfach um). Versuchen Sie es zunächst mit dem negativen (Kathoden-) Kabel, das mit Masse und dem anderen entweder mit D3 oder D4 verbunden ist. Die LED leuchtet aufgrund der Rechteckwellen 'halb'. Außerdem wird kein Widerstand benötigt, da die Ausgänge der MicroControllerUnits strombegrenzt sind. Ich habe Strommessungen durchgeführt, die für die Attiny85- und die Atmega328-MCUs jeweils 15 mA und 20 mA ergaben. Diese Pegel sind etwa die Hälfte des derzeit begrenzten Wertes für diese Teile aufgrund des 50 % Tastverhältnisses der treibenden Rechteckwellensignale. Die Messwerte des Messgeräts sind tatsächlich ein Durchschnitt des Stroms durch den getesteten Stromkreis.

Interessanterweise leuchtet sie, wenn Sie zwischen D3 und D4 mit der LED (siehe Bild oben und links) überbrücken, in beide Richtungen und mit etwa der Hälfte der Helligkeit, als wenn eine Seite mit Masse verbunden war. Ich lade Sie ein, darüber nachzudenken, warum.

Empfohlen: