Spisu treści:

Konsola do gier DIY przy użyciu Arduino: 4 kroki
Konsola do gier DIY przy użyciu Arduino: 4 kroki

Wideo: Konsola do gier DIY przy użyciu Arduino: 4 kroki

Wideo: Konsola do gier DIY przy użyciu Arduino: 4 kroki
Wideo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Listopad
Anonim
Image
Image

W tym samouczku pokażę, jak zrobić konsolę do gier przy użyciu Arduino nano. Więc jeśli chcesz zobaczyć szczegółowe wideo na ten temat, sprawdź to na moim kanale YouTube

Kieszonkowe dzieci

Jeśli kupisz z tych linków, pomoże mi to dać ci więcej projektów

1) ARDUINO NANO2) WYŚWIETLACZ OLED3) PRZYCISKI4) PRZEWODY

Krok 1: Lutowanie wszystkich komponentów

Cieszyć się!!!
Cieszyć się!!!

Tak więc po zdobyciu wszystkich komponentów musisz przylutować wszystkie komponenty, jak pokazano na tym schemacie obwodu

Krok 2: Ułóż wszystkie rzeczy w miejscach

Po zlutowaniu wszystko ułóż w ten sposób, aby nadać mu ładny wygląd

Krok 3: Programowanie

Tak więc, w końcu po prawidłowym wykonaniu wszystkich kroków nadszedł czas, aby wgrać poniższy kod do Arduino

#włączać

#include #include #include #include //#include #define OLED_RESET 4 Wyświetlacz Adafruit_SSD1306(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, 0x3C, 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, 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,00, 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,00 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x01, 0xBF, 0xFC, 0x1F, 0x, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x70, 0x06, 0xE0, 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, 0x03, 0x 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0xFC, 0010000, 0x 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, 0x 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0xF0, 0x0F 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, burza, 48, 48, 1); display.setFont(&FreeSans9pt7b); display.setTextColor (BIAŁY); 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=odczytVcc()/1000; display.println(voltaza);; display.setFont(&FreeSans9pt7b); display.setCursor(65, 39); display.println("Śmierć"); display.setFont(); display.setCursor(65, 42); display.println("gwiazdka"); display.setTextSize(0); display.setCursor(65, 55); display.println("przez VRAJ"); display.setCursor(65, 20); display.display(); display.setFont(); sygnał dźwiękowy(a, 500); sygnał dźwiękowy(a, 500); sygnał dźwiękowy(a, 500); sygnał dźwiękowy (f, 350); sygnał dźwiękowy (cH, 150); sygnał dźwiękowy(a, 500); sygnał dźwiękowy (f, 350); sygnał dźwiękowy (cH, 150); sygnał dźwiękowy(a, 650); opóźnienie (500); opóźnienie (500); } int metx=0; int met=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; //szybkość pocisku int bkugle=1; int najmanja=600; int najveca=1200; proj.wew.=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; unsigned long trenutno=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); jeśli(poc==0){pocetno=mili(); odabrano= losowo (400, 1200); poc=1; } trenutno=milli(); //nivoi jeśli((trenutno-nivovrije)>50000) { nivovrije=trenutno; nivo=nivo+1; brzina=brzyna+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; } jeśli(rx4<1){ ispaljeno=0; rx4=200;} if(zivoti==0) go=1; } if(go==1) { if(zivoti==0){ ton(9, 200, 300); opóźnienie(300); ton (9, 250, 200); opóźnienie(200); ton (9, 300, 300); opóźnienie(300); zivoti=5; } display.clearDisplay(); display.setFont(); display.setTextSize(2); display.setTextColor (BIAŁY); display.setCursor(7, 10); display.println("KONIEC GRY!"); display.setTextSize(1); display.setCursor(7, 30); display.println("wynik:"); display.setCursor(44, 30); display.println(bodovi); display.setCursor(7, 40); display.println("poziom:"); display.setCursor(44, 40); display.println(nivo); display.setCursor(7, 50); display.println("czas(y):"); display.setCursor(60, 50); display.println(trenutno/1000); display.display(); if(digitalRead(3)==0) { ton (9, 280, 300); opóźnienie(300); ton (9, 250, 200); opóźnienie(200); ton (9, 370, 300); opóźnienie(300); ponowo(); } } } void ponovo() { metx=0; met=0; postoji=0; nep=8; smjer=0; iść=0; rx=95; ry=0; rx2=95; ry2=0; rx3=95; ry3=0; bodowi=0; Brzyna=3; //brizna neprijateljevog metka bkugle=1; najmanja=600; najveca=1200; promjer=12; rx4=95; ry4=0; zivoti=5; poc=0; ispaljeno=0; nivo=1; numer=0; odebrano=0; trenutno=0; nivovrije=0; } long readVcc() { // Odczytaj referencję 1.1V z AVcc // ustaw referencję na Vcc i pomiar na wewnętrzną referencję 1.1V #jeśli zdefiniowano(_AVR_ATmega32U4_) || zdefiniowany(_AVR_ATmega1280_) || zdefiniowany(_AVR_ATmega2560_) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #zdefiniowane elif (_AVR_ATtiny24_) || zdefiniowany(_AVR_ATtiny44_) || zdefiniowany(_AVR_ATtiny84_) ADMUX = _BV(MUX5) | _BV(MUX0); #zdefiniowane elif (_AVR_ATtiny25_) || zdefiniowany(_AVR_ATtiny45_) || zdefiniowany(_AVR_ATtiny85_) ADMUX = _BV(MUX3) | _BV(MUX2); #inny ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif opóźnienie(2); // Czekaj, aż Vref rozliczy ADCSRA |= _BV(ADSC); // Rozpocznij konwersję while (bit_is_set(ADCSRA, ADSC)); // pomiar uint8_t low = ADCL; // najpierw trzeba przeczytać ADCL - potem blokuje ADCH uint8_t high = ADCH; // odblokowuje oba długie wyniki = (high<<8) | Niska; wynik = 1125300L / wynik; // Oblicz Vcc (w mV); 1125300 = 1,1*1023*1000 wynik zwrotu; // Vcc w miliwoltach } void beep(int note, int duration) { //odtwórz ton na buzzerPin ton(9, nuta, czas trwania); opóźnienie (czas trwania); brak Dźwięku(9); opóźnienie(50); }

Krok 4: Ciesz się!

Gratulacje ? w końcu to zrobiłeś, więc jeśli Ci się spodobało, zasubskrybuj mój kanał na youtube

Zalecana: