
Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-23 12:52


In diesem Tutorial zeige ich Ihnen, wie Sie mit Arduino Nano eine Spielkonsole erstellen können. Wenn du also ein detailliertes Video dazu sehen möchtest, dann schau es dir auf meinem YouTube-Kanal an
Lieferungen
Wenn Sie über diese Links kaufen, hilft es mir, Ihnen mehr Projekte zu geben
1) ARDUINO NANO2) OLED-DISPLAY3) DRUCKTASTEN4) KABEL
Schritt 1: Löten aller Komponenten

Nachdem Sie alle Komponenten erhalten haben, müssen Sie alle Komponenten wie in diesem Schaltplan gezeigt verlöten
Schritt 2: Ordnen Sie alle Dinge an Orten an
Nach dem Löten alles so anordnen, dass es schön aussieht
Schritt 3: Programmierung
Nachdem Sie alle Schritte richtig ausgeführt haben, ist es nun an der Zeit, den folgenden Code auf Arduino hochzuladen
#enthalten
#include #include #include #include //#include #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); const int c = 261; const int d = 294; const int e = 329; const int f = 349; const int g = 391; const int gS = 415; const int a = 440; const int aS = 455; const int b = 466; const int cH = 523; const int cSH = 554; const int dH = 587; const int dSH = 622; const int eH = 659; const int fH = 698; const int fSH = 740; const int gH = 784; const int gSH = 830; const int aH = 880; const unsigned char PROGMEM dioda16 = { 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3F, 0xF0, 0x3C, 0x00, 0x3C, 0x00, 0xFF, 0x00, 0x7F, 0xFF, 0x7F, 0xC.x, 0, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00 }; const unsigned char PROGMEM Storm = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0x1F, 0xFA01, 0x1F, 0xFA, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x.0x,01, 0xC0, 0x03, 0x06, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xF8, 0x00, 0x00, 0x1D, 0xC0, 0x03, 0x70, 0x00, 0x80, 0x0C, 0x60, 0x05, 0xB0, 0x07, 0xF0, 0x08, 0x90, 0x09, 0x10, 0x1F, 0xF8, 0x09, 0xD0, 0x0 0x, 0x90, 0x09, 0x10, 0x1F, 0xF8, 0x09, 0xD0, 0x0 0x, 0x90, 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x00, 0x10 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC8, 0x00, 0 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFF, 0xFF, 0xA00, 0x 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF0, 0xF00, 0x00, 0xF8, 0x00, 0x00}; Void setup () { PinMode (3, INPUT_PULLUP); pinMode(12, INPUT_PULLUP); pinMode(11, INPUT_PULLUP); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display(); display.clearDisplay(); display.setTextSize(0); display.drawBitmap(6, 11, Sturm, 48, 48, 1); display.setFont(&FreeSans9pt7b); display.setTextColor (WEISS); display.setCursor(65, 14); display.println("xWing"); display.setFont(); display.setCursor(65, 17); display.setTextSize(0); display.println("vs"); display.setCursor(0, 0); float voltaza=readVcc()/1000; display.println(voltaza);; display.setFont(&FreeSans9pt7b); display.setCursor(65, 39); display.println("Tod"); display.setFont(); display.setCursor(65, 42); display.println("Stern"); display.setTextSize(0); display.setCursor(65, 55); display.println("von VRAJ"); display.setCursor(65, 20); display.display(); display.setFont(); Signalton (a, 500); Signalton (a, 500); Signalton (a, 500); Signalton (f, 350); Piepton (cH, 150); Signalton (a, 500); Signalton (f, 350); Piepton (cH, 150); Signalton (a, 650); Verzögerung (500); Verzögerung (500); } int metx=0; int mety=0; int postoji=0; int nep=8; int smjer=0; int go=0; int rx=95; int ry=0; int rx2=95; int ry2=0; int rx3=95; int ry3=0; int bodovi=0; int brzina = 3; // Geschossgeschwindigkeit Int bkugle = 1; int najmanja=600; int najveca=1200; int promjer=10; int rx4=95; int ry4=0; int zivoti=5; int poc=0; int ispaljeno=0; int nivo=1; int Centar=95; unsigned long pocetno=0; unsigned long odabrano=0; unsigned long trenutno=0; unsigned long nivovrije=0; int poz=30; Void Schleife () { if (go = = 0) { Display.clearDisplay (); display.drawPixel(50, 30, 1); display.drawPixel(30, 17, 1); display.drawPixel(60, 18, 1); display.drawPixel(55, 16, 1); display.drawPixel(25, 43, 1); display.drawPixel(100, 43, 1); display.drawPixel(117, 52, 1); display.drawPixel(14, 49, 1); display.drawPixel(24, 24, 1); display.drawPixel(78, 36, 1); display.drawPixel(80, 57, 1); display.drawPixel(107, 11, 1); display.drawPixel(150, 11, 1); display.drawPixel(5, 5, 1); display.drawPixel(8, 7, 1); display.drawPixel(70, 12, 1); display.drawPixel(10, 56, 1); display.drawPixel(70, 25, 1); if(poc==0){ pocetno=millis(); odabrano = zufällig (400, 1200); poc=1; } trenutno=millis(); //nivoi if((trenutno-nivovrije)>50000) {nivovrije=trenutno; nivo=nivo+1; brzina=brzina+1; //brizna neprijateljevog metka if (nivo % 2 == 0) { bkugle=bkugle+1; promjer=promjer-1; } najmanja=najmanja-50; najveca=najveca-50; } if ((odabrano + pocetno) 0) { display.drawCircle (rx, ry, 2, 1); rx=rx-brzina;} if(ispaljeno>1) {display.drawCircle(rx2, ry2, 1, 1); rx2 = rx2-brzina;} if (ispaljeno> 2) { display.drawCircle (rx3, ry3, 4, 1); rx3=rx3-brzina;} if(ispaljeno>3) {display.drawCircle(rx4, ry4, 2, 1); rx4=rx4-brzina;} if(digitalRead(12)==0 && poz>=2){ poz=poz-2;} if(digitalRead(11)==0&& poz128)postoji=0; if(smjer==0){ nep=nep+bkugle;} else {nep=nep-bkugle;} if(nep>=(64-promjer)) smjer=1; if(nep=nep-promjer && mety(centar-promjer)&&metx=pozicija-8 && ry<=pozicija+8) if(rx4) { rx=95; ry=-50; Ton (9, 100, 100); zivoti=zivoti-1; } if(ry2>=pozicija-8 && ry2<=pozicija+8) if(rx24) {rx2=-50; ry2=-50; Ton (9, 100, 100); zivoti=zivoti-1; } if(ry3>=pozicija-8 && ry3<=pozicija+8) if(rx34) { rx3=-50; ry3=-50; Ton (9, 100, 100); zivoti=zivoti-1; } if(ry4>=pozicija-8 && ry4<=pozicija+8) if(rx44) { rx4=200; ry4=-50; ispaljeno=0; Ton (9, 100, 100); zivoti=zivoti-1; aufrechtzuerhalten. Wenn (rx4 < 1) { ispaljeno = 0; rx4=200;} if(zivoti==0) go=1; } if (go = = 1) { if (zivoti = = 0) { Ton (9, 200, 300); Verzögerung (300); Ton (9, 250, 200); Verzögerung (200); Ton (9, 300, 300); Verzögerung (300); zivoti=5; } display.clearDisplay(); display.setFont(); display.setTextSize(2); display.setTextColor (WEISS); display.setCursor(7, 10); display.println("GAME OVER!"); display.setTextSize(1); display.setCursor(7, 30); display.println("Score:"); display.setCursor(44, 30); display.println(bodovi); display.setCursor(7, 40); display.println("level:"); display.setCursor(44, 40); display.println(nivo); display.setCursor(7, 50); display.println("Zeit(en):"); display.setCursor(60, 50); display.println(trenutno/1000); display.display(); if (digitalRead (3) = = 0) { Ton (9, 280, 300); Verzögerung (300); Ton (9, 250, 200); Verzögerung (200); Ton (9, 370, 300); Verzögerung (300); ponovo(); }}} Void ponovo () {metx = 0; mety=0; Postoji=0; nep = 8; smjer=0; gehen=0; rx=95; ry=0; rx2=95; ry2=0; rx3=95; ry3=0; bodovi=0; Brsina = 3; //brizna neprijateljevog metka bkugle=1; najmanja=600; najveca=1200; promjer=12; rx4=95; ry4=0; zivoti=5; poc=0; ispaljeno=0; nivo=1; pocetno=0; odabrano=0; trenutno=0; nivovrije=0; } long readVcc () { // 1,1V-Referenz gegen AVcc lesen // Referenz auf Vcc und Messung auf interne 1,1V-Referenz setzen #wenn definiert (_AVR_ATmega32U4_) || definiert(_AVR_ATmega1280_) || definiert(_AVR_ATmega2560_) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #elif definiert (_AVR_ATtiny24_) || definiert(_AVR_ATtiny44_) || definiert(_AVR_ATtiny84_) ADMUX = _BV(MUX5) | _BV(MUX0); #elif definiert (_AVR_ATtiny25_) || definiert(_AVR_ATtiny45_) || definiert(_AVR_ATtiny85_) ADMUX = _BV(MUX3) | _BV(MUX2); #else ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif Verzögerung(2); // Warten, bis Vref einschwingt ADCSRA |= _BV(ADSC); // Konvertierung starten while (bit_is_set(ADCSRA, ADSC)); // Messung von uint8_t low = ADCL; // muss zuerst ADCL lesen - dann wird ADCH gesperrt uint8_t high = ADCH; // entsperrt beide long result = (high<<8) | niedrig; Ergebnis = 1125300L / Ergebnis; // Vcc berechnen (in mV); 1125300 = 1,1*1023*1000 Rückgabeergebnis; // Vcc in Millivolt aufrechtzuerhalten. Void Beep (int Note, Int Dauer) {// Ton auf BuzzerPin Tone (9, Note, Dauer) abspielen; Verzögerung (Dauer); kein Ton(9); Verzögerung (50); }
Schritt 4: Genießen Sie !
Herzliche Glückwünsche ? Du hast es endlich geschafft, wenn es dir gefallen hat, dann abonniere meinen Youtube-Kanal
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow

Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)

Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
DIY Circuit Activity Board mit Büroklammern - HERSTELLER - STEM: 3 Schritte (mit Bildern)

DIY Circuit Activity Board mit Büroklammern | HERSTELLER | STEM: Mit diesem Projekt können Sie den Weg des elektrischen Stroms ändern, um durch verschiedene Sensoren zu laufen. Mit diesem Design können Sie zwischen dem Aufleuchten einer blauen LED oder dem Aktivieren eines Summers wechseln. Sie haben auch die Wahl, einen lichtabhängigen Widerstand mit
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: 7 Schritte (mit Bildern)
![Schnittstellentastatur mit Arduino. [Einzigartige Methode]: 7 Schritte (mit Bildern) Schnittstellentastatur mit Arduino. [Einzigartige Methode]: 7 Schritte (mit Bildern)](https://i.howwhatproduce.com/images/008/image-22226-j.webp)
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: Hallo, und willkommen zu meinem ersten instructable! :) In diesem instructables möchte ich eine fantastische Bibliothek für die Schnittstelle der Tastatur mit Arduino teilen - 'Password Library' einschließlich 'Keypad Library'. Diese Bibliothek enthält die besten Funktionen, die wir wi
Einfaches BLE mit sehr geringem Stromverbrauch in Arduino Teil 3 - Nano V2-Ersatz - Rev 3: 7 Schritte (mit Bildern)

Einfaches BLE mit sehr geringem Stromverbrauch in Arduino Teil 3 - Nano V2-Ersatz - Rev 3: Update: 7. April 2019 - Rev 3 von lp_BLE_TempHumidity, fügt Datums- / Zeitdiagramme mit pfodApp V3.0.362+ hinzu und automatische Drosselung beim Senden von DatenUpdate: 24. März 2019 – Rev 2 von lp_BLE_TempHumidity, fügt weitere Plotoptionen hinzu und i2c_ClearBus, fügt GT832E