Home > Technologie > Arduino Gameboy kaufen

Arduino Gameboy kaufen

Advertisement

Arduino Gameboy kaufen

Dieses ist ein ehrfürchtiges haltbares auf, wie man Ihren sehr eigenen arduino gameboy bildet! Es ist Spaß und einfach zu machen. Sie können es überall bringen, wo Sie wollen und spielen Sie jedes Spiel, das Sie wollen!

Schritt 1: Setzen der Schaltung zusammen

Arduino Gameboy kaufen

Werkstoffe:
Arduino Uno
16x2 lcd-Bildschirm
2 Potentiometer
Steckbrett
Lötfreiem Steckbrett

1. Verbinden Sie das Potentiometer mit dem LCD-Bildschirm und den Bildschirm mit dem Arduino, wie in der folgenden Abbildung gezeigt.

Schritt 2: Beenden des Curcuit

Arduino Gameboy kaufen

1. Im zweiten Potentiometer Pin 1 einsetzen.
2. Verbinden Sie die positiven und negativen Drähte mit den richtigen Pins auf dem Arduino wie unten abgebildet.
3. Befestigen Sie alles auf dem Steckbrett.

Schritt 3: Setzen Sie alles zusammen

Arduino Gameboy kaufen

1. Schneiden Sie einige Karton mit den richtigen mesurments für einen Fall.
2. Kleben oder kleben Sie die Teile zusammen und legen Sie die Leiterplatten ein.

Schritt 4: Programmieren Sie Ihre Arduino Gameboy

Es gibt viele Programme, die Sie auf dieses System herunterladen können. Ein von ihnen ist LKW-Lane (nicht von mir erstellt, aber für dieses System modifiziert)

Der Code lautet:

#include <LiquidCrystal.h>
// Flüssigkristallanzeige
// die Bibliothek mit den Nummern der Schnittstellenpins initialisieren
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

// Lenkrad-Potentiometer
Const int POTPIN = 1;
Const int MAXPOT = 800; // keine Notwendigkeit, das Rad den ganzen Weg bis 1023 drehen :)

// Piezo-Lautsprecher
Const int SPEAKERPIN = 9;

Const int RANDSEEDPIN = 0; // ein analoger Pin, der nicht an nichts angeschlossen ist

Const int MAXSTEPDURATION = 300; // Start langsam, jeder Schritt ist 1 Millisek kürzer.
Const int MINSTEPDURATION = 150; // Das ist so schnell wie es geht

Const int NGLYPHS = 6;
// die Glyphen werden ab 1 (nicht 0) definiert,
// um lcd.print () von nullterminierten Zeichenfolgen zu aktivieren
Byte-Glyphen [NGLYPHS] [8] = {
// 1: Auto auf
{B00000,
B01110,
B11111,
B01010,
B00000,
B00000,
B00000,
B00000}
// 2: Auto unten
, {B00000,
B00000,
B00000,
B00000,
B01110,
B11111,
B01010,
B00000}
// 3: LKW hoch
, {B00000,
B11110,
B11111,
B01010,
B00000,
B00000,
B00000,
B00000}
// 4: LKW nach unten
, {B00000,
B00000,
B00000,
B00000,
B11110,
B11111,
B01010,
B00000}
// 5: Absturz
, {B10101,
B01110,
B01110,
B10101,
B00000,
B00000,
B00000,
B00000}
// 6: Absturz
, {B00000,
B00000,
B00000,
B10101,
B01110,
B01110,
B10101,
B00000}
};

Const int NCARPOSITIONS = 4;

// Jede Position wird einer Spalte mit 2 Glyphen zugeordnet
// Sinnvoll, wenn ich eine fünfte Position hatte
// wo Auto oder Crash als 2 Glyphen gezeichnet wurde
// (kann nicht, dass seit 0 beendet Strings),
// so ist es irgendwie albern jetzt, aber es ist nicht pleite :)
Const char BLANK = 32;
Char car2glyphs [NCARPOSITIONS] [2] = {
{1, BLANK}, {2, BLANK}, {BLANK, 1}, {BLANK, 2}
};
Char truck2glyphs [NCARPOSITIONS] [2] = {
{3, BLANK}, {4, BLANK}, {BLANK, 3}, {BLANK, 4}
};
Char crash2glyphs [NCARPOSITIONS] [2] = {
{5, BLANK}, {6, BLANK}, {BLANK, 5}, {BLANK, 6}
};

Const int ROADLEN = 15; // LCD-Breite (ohne unser Auto zu zählen)
Int Straße [ROADLEN]; // Stellungen anderer Autos
Char line_buff [2 + ROADLEN]; // aux string für drawRoad ()
Int road_index;
Int car_pos;
// Off-the-grid Position bedeutet leere Spalte, also MAXROADPOS
// bestimmt die Wahrscheinlichkeit eines Autos in einer Spalte
// zB 3 * NCARPOSITIONS ergibt p = 1/3
Const int MAXROADPOS = 3 * NCARPOSITIONEN;
Int step_duration;

Int Absturz; // true, wenn abgestürzt
Unsigned int crashtime; // millis () beim Absturz
Const int CRASHSOUNDDURATION = 250;

Const char * INTRO1 = "Trucks ahead,";
Const char * INTRO2 = "Fahren Sie vorsichtig";
Const int INTRODELAY = 2000;

Void setup ()
{
Crash = crashtime = road_index = 0;
Step_duration = MAXSTEPDURATION;
Line_buff [1 + ROADLEN] = '\ 0'; // null beenden
RandomSeed (analogRead (RANDSEEDPIN));
Für (int i = 0; i <NGLYPHS; i ++) {
Lcd.createChar (i + 1, Glyphs [i]);
aufrechtzuerhalten.
Für (int i = 0; i <ROADLEN; i ++) {
Straße [i] = - 1;
aufrechtzuerhalten.
PinMode (SPEAKERPIN, OUTPUT);
AnalogWrite (SPEAKERPIN, 0); // auf der sicheren Seite sein
Lcd.begin (16,2);
GetSteeringWheel ();
DrawRoad ();
Lcd.setCursor (1,0);
Lcd.print (INTRO1);
Lcd.setCursor (1,1);
Lcd.print (INTRO2);
Verzögerung (INTRODELAY);
aufrechtzuerhalten.

Void Schleife () {
Unsigned long now = millis () - INTRODELAY;
Wenn (! Crash) {
GetSteeringWheel ();
Crash = (car_pos == road [road_index]);
aufrechtzuerhalten.
Wenn (Crash) {
Wenn (! Crashtime) {
Crashtime = now;
DrawRoad ();
// Spiel über Text
// (die ersten 2 "Crash" -Spalten intakt halten)
Lcd.setCursor (2,0);
Lcd.print ( "Crashed after");
Lcd.setCursor (2,1);
Lcd.print (jetzt / 1000);
Lcd.print ( "Sekunden");
aufrechtzuerhalten.
Wenn ((jetzt-crashtime) <CRASHSOUNDDURATION) {
AnalogWrite (SPEAKERPIN, random (255)); // weißes Rauschen
aufrechtzuerhalten.
sonst {
AnalogWrite (SPEAKERPIN, 0); // dramatische Post-Crush Stille :)
aufrechtzuerhalten.
Verzögerung (10); // Warten Sie ein wenig zwischen den Schreibvorgängen
aufrechtzuerhalten.
sonst {

Int prev_pos = Straße [(road_index-1)% ROADLEN];
Int this_pos = zufällig (MAXROADPOS);
While (abs (this_pos-prev_pos) <2) {// verstopfen Sie nicht die Straße
This_pos = zufällig (MAXROADPOS);
aufrechtzuerhalten.
Straße [road_index] = this_pos;
Road_index = (road_index + 1)% ROADLEN;
DrawRoad ();
Verzögerung (step_duration);
If (step_duration> MINSTEPDURATION) {
step_duration--; // geh schneller
aufrechtzuerhalten.
aufrechtzuerhalten.
aufrechtzuerhalten.
Void getSteeringWheel () {
Car_pos = map (analogRead (POTPIN), 0,1024,0, NCARPOSITIONS);
aufrechtzuerhalten.

Void drawRoad () {
Für (int i = 0; i <2; i ++) {
Wenn (Crash) {
Line_buff [0] = crash2glyphs [car_pos] [i];
aufrechtzuerhalten.
sonst {
Line_buff [0] = car2glyphs [car_pos] [i];
aufrechtzuerhalten.
Für (int j = 0; j <ROADLEN; j ++) {
Int pos = Straße [(j + road_index)% ROADLEN];
Line_buff [j + 1] = pos> = 0 && pos <NCARPOSITIONEN? Truck2glyphs [pos] [i]: BLANK;
aufrechtzuerhalten.
Lcd.setCursor (0, i);
Lcd.print (line_buff);
aufrechtzuerhalten.
aufrechtzuerhalten.

Related Reading