Table des matières:

Console de jeu DIY utilisant Arduino : 4 étapes
Console de jeu DIY utilisant Arduino : 4 étapes

Vidéo: Console de jeu DIY utilisant Arduino : 4 étapes

Vidéo: Console de jeu DIY utilisant Arduino : 4 étapes
Vidéo: Console avec Arduino #1 2024, Novembre
Anonim
Image
Image

Dans ce tutoriel, je vais vous montrer comment créer une console de jeu avec Arduino nano. Donc, si vous voulez voir une vidéo détaillée dessus, consultez-la sur ma chaîne youtube

Fournitures

Si vous achetez à partir de ces liens, cela m'aidera à vous donner plus de projets

1) ARDUINO NANO2) ÉCRAN OLED3) BOUTONS POUSSOIRS4) FILS

Étape 1: Souder tous les composants

Prendre plaisir!!!
Prendre plaisir!!!

Ainsi, après avoir obtenu tous les composants, vous devez souder tous les composants comme indiqué dans ce schéma de circuit

Étape 2: Disposez toutes les choses dans des endroits

Après avoir tout soudé, arrangez tous les composants comme celui-ci pour lui donner un joli look

Étape 3: Programmation

Donc, enfin, après avoir suivi toutes les étapes correctement, il est temps de télécharger le code ci-dessous sur Arduino

#comprendre

#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 entier f = 349; const entier 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 char non signé PROGMEM dioda16 = { 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3F, 0xF0, 0x3C, 0x00, 0x3C, 0x00, 0xFF, 0x00, 0x7F, 0xFF, 0x7F, 0, 0xFF, 0x, 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, Fx00, 0x7, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30,x, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xE00, 0x00,x, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0x01F, 0xFA,, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x06,x, 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,0x1, 0x90, 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x10, 0x00, 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, 0xA0, 0, 0x 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF0, 00, 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, tempête, 48, 48, 1); display.setFont(&FreeSans9pt7b); display.setTextColor(BLANC); 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("Mort"); display.setFont(); display.setCursor(65, 42); display.println("étoile "); display.setTextSize(0); display.setCursor(65, 55); display.println("par VRAJ"); display.setCursor(65, 20); display.display(); display.setFont(); bip (a, 500); bip (a, 500); bip (a, 500); bip (f, 350); bip (ch, 150); bip (a, 500); bip (f, 350); bip (ch, 150); bip (a, 650); retard (500); retard (500); } int metx=0; int mety=0; int postoji=0; int nep=8; int smjer=0; int go=0; entier rx=95; int ry=0; entier rx2=95; int ry2=0; entier rx3=95; int ry3=0; int bodovi=0; int brzina=3; //vitesse de la balle int bkugle=1; int najmanja=600; int najveca=1200; int promjer=10; entier rx4=95; int ry4=0; int zivoti=5; int poc=0; int ispaljeno=0; int nivo=1; int centar=95; pocetno long non signé=0; odabrano long non signé=0; trenutno long non signé=0; non signé long nivovrije=0; int poz=30; void loop() { 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= aléatoire (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; } if(rx4<1){ ispaljeno=0; rx4=200;} if(zivoti==0) go=1; } if(go==1) { if(zivoti==0){ tone(9, 200, 300); retard (300); ton (9, 250, 200); retard (200); ton (9, 300, 300); retard (300); zivoti=5; } display.clearDisplay(); display.setFont(); display.setTextSize(2); display.setTextColor(BLANC); 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("niveau:"); display.setCursor(44, 40); display.println(nivo); display.setCursor(7, 50); display.println("heure(s):"); display.setCursor(60, 50); display.println(trenutno/1000); display.display(); if(digitalRead(3)==0) { tone(9, 280, 300); retard (300); ton (9, 250, 200); retard (200); ton (9, 370, 300); retard (300); ponovo(); } } } void ponovo() { metx=0; mét=0; postoji=0; nep=8; smjer=0; aller=0; rx=95; ry=0; rx2=95; ry2=0; rx3=95; ry3=0; bodovi=0; brzina=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() { // Lire la référence 1.1V par rapport à AVcc // définir la référence sur Vcc et la mesure sur la référence interne 1.1V #if défini(_AVR_ATmega32U4_) || défini(_AVR_ATmega1280_) || défini(_AVR_ATmega2560_) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #elif défini (_AVR_ATtiny24_) || défini(_AVR_ATtiny44_) || défini(_AVR_ATtiny84_) ADMUX = _BV(MUX5) | _BV(MUX0); #elif défini (_AVR_ATtiny25_) || défini(_AVR_ATtiny45_) || défini(_AVR_ATtiny85_) ADMUX = _BV(MUX3) | _BV(MUX2); #autre ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif délai(2); // Attendre que Vref règle ADCSRA |= _BV(ADSC); // Lancer la conversion while (bit_is_set(ADCSRA, ADSC)); // mesure de uint8_t low = ADCL; // doit d'abord lire ADCL - il verrouille ensuite ADCH uint8_t high = ADCH; // déverrouille les deux long result = (high<<8) | meugler; résultat = 1125300L/résultat; // Calculer Vcc (en mV); 1125300 = 1,1*1023*1000 renvoie le résultat; // Vcc en millivolts } void beep(int note, int duration) { // Play tone on buzzerPin tone(9, note, duration); retard(durée); pas de tonalité(9); retard (50); }

Étape 4: Profitez !

Toutes nos félicitations ? vous l'avez finalement fait, alors si vous l'avez aimé, abonnez-vous à ma chaîne youtube

Conseillé: