Sommario:

Console di gioco fai-da-te con Arduino: 4 passaggi
Console di gioco fai-da-te con Arduino: 4 passaggi

Video: Console di gioco fai-da-te con Arduino: 4 passaggi

Video: Console di gioco fai-da-te con Arduino: 4 passaggi
Video: Un carrello che SEGUE GLI OPERAI, con Arduino! 🛒 #codice #arduino #arduinoproject #coding #diy 2024, Novembre
Anonim
Image
Image

In questo tutorial ti mostrerò come puoi creare una console di gioco usando Arduino nano. Quindi, se vuoi vedere un video dettagliato su di esso, dai un'occhiata sul mio canale YouTube

Forniture

Se acquisti da questo link mi aiuterà a darti più progetti

1) ARDUINO NANO2) DISPLAY OLED3) PULSANTI 4) CAVI

Passaggio 1: saldatura di tutti i componenti

Godere!!!
Godere!!!

Quindi, dopo aver ottenuto tutti i componenti, devi saldare tutti i componenti come mostrato in questo schema elettrico

Passaggio 2: disporre tutte le cose in luoghi

Dopo aver saldato tutto, sistema tutti i componenti in questo modo per dargli un bell'aspetto

Passaggio 3: programmazione

Quindi, finalmente, dopo aver seguito correttamente tutti i passaggi, è il momento di caricare il codice qui sotto su Arduino

#includere

#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, 0x00,, 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, 0x7, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30,, 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, 0xE0, 0x00,, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0x1F, 0xFA, 0x1F, 0x, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0x06,0, 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, 0x0B, 0x90, 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0x00, 0x00 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC8, 0x00, 0x 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, 0x00, 0, 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, tempesta, 48, 48, 1); display.setFont(&FreeSans9pt7b); display.setTextColor(BIANCO); display.setCursor(65, 14); display.println("xWing"); display.setFont(); display.setCursor(65, 17); display.setTextSize(0); display.println("contro"); display.setCursor(0, 0); float voltaza=readVcc()/1000; display.println(voltazza);; display.setFont(&FreeSans9pt7b); display.setCursor(65, 39); display.println("Morte"); display.setFont(); display.setCursor(65, 42); display.println("stella"); display.setTextSize(0); display.setCursor(65, 55); display.println("di 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); ritardo (500); ritardo (500); } int metx=0; int met=0; int postoji=0; int nep=8; int smjer=0; int vai=0; int rx=95; intero=0; int rx2=95; int ry2=0; int rx3=95; int ry3=0; int bodovi=0; int brsina=3; //velocità del proiettile 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 cent=95; unsigned long pocetno=0; unsigned long odabrano=0; trenutno lungo senza segno=0; unsigned 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= casuale(400, 1200); poc=1; } trenutno=millis(); //nivoi if((trenutno-nivovrije)>500000) {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; tono (9, 100, 100); zivoti=zivoti-1; } if(ry2>=pozicija-8 && ry2<=pozicija+8) if(rx24) { rx2=-50; ry2=-50; tono (9, 100, 100); zivoti=zivoti-1; } if(ry3>=pozicija-8 && ry3<=pozicija+8) if(rx34) { rx3=-50; ry3=-50; tono (9, 100, 100); zivoti=zivoti-1; } if(ry4>=pozicija-8 && ry4<=pozicija+8) if(rx44) { rx4=200; ry4=-50; ispaljeno=0; tono (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); ritardo(300); tono (9, 250, 200); ritardo(200); tono (9, 300, 300); ritardo(300); zivoti=5; } display.clearDisplay(); display.setFont(); display.setTextSize(2); display.setTextColor(BIANCO); display.setCursor(7, 10); display.println("GIOCO FINITO!"); display.setTextSize(1); display.setCursor(7, 30); display.println("punteggio:"); display.setCursor(44, 30); display.println(bodovi); display.setCursor(7, 40); display.println("livello:"); display.setCursor(44, 40); display.println(nivo); display.setCursor(7, 50); display.println("ora(e):"); display.setCursor(60, 50); display.println(trenutno/1000); display.display(); if(digitalRead(3)==0) { tone(9, 280, 300); ritardo(300); tono (9, 250, 200); ritardo(200); tono (9, 370, 300); ritardo(300); ponovo(); } } } void ponovo() { metx=0; met=0; postoji=0; nep=8; smjer=0; vai=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() { // Legge il riferimento 1.1V rispetto a AVcc // imposta il riferimento su Vcc e la misura sul riferimento interno 1.1V #se definito(_AVR_ATmega32U4_) || definito(_AVR_ATmega1280_) || definito(_AVR_ATmega2560_) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #elif definito (_AVR_ATtiny24_) || definito(_AVR_ATtiny44_) || definito(_AVR_ATtiny84_) ADMUX = _BV(MUX5) | _BV(MUX0); #elif definito (_AVR_ATtiny25_) || definito(_AVR_ATtiny45_) || definito(_AVR_ATtiny85_) ADMUX = _BV(MUX3) | _BV(MUX2); #else ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif ritardo(2); // Attendi che Vref stabilisca ADCSRA |= _BV(ADSC); // Avvia la conversione while (bit_is_set(ADCSRA, ADSC)); // misura uint8_t low = ADCL; // deve prima leggere ADCL - quindi blocca ADCH uint8_t high = ADCH; // sblocca entrambi i risultati lunghi = (high<<8) | basso; risultato = 1125300L / risultato; // Calcola Vcc (in mV); 1125300 = 1,1*1023*1000 restituisce il risultato; // Vcc in millivolt } void beep(int note, int duration) { //Riproduci tono su buzzerPin tone(9, note, duration); ritardo (durata); noTono(9); ritardo(50); }

Passaggio 4: divertiti!

Congratulazioni? finalmente ce l'hai fatta quindi se ti è piaciuto allora iscriviti al mio canale youtube

Consigliato: