Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Lutowanie wszystkich komponentów
- Krok 2: Ułóż wszystkie rzeczy w miejscach
- Krok 3: Programowanie
- Krok 4: Ciesz się!
Wideo: Konsola do gier DIY przy użyciu Arduino: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
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
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:
Przetestuj samo Arduino z oprogramowaniem do gier przy użyciu wejścia pojemnościowego i diody LED: 4 kroki
Przetestuj samo Arduino z oprogramowaniem do gier przy użyciu wejścia pojemnościowego i diody LED: „Push-It” Interaktywna gra wykorzystująca gołą płytkę Arduino, nie wymaga żadnych zewnętrznych części ani okablowania (wykorzystuje pojemnościowe wejście „dotykowe”). Pokazane powyżej, demonstruje działanie na dwóch różnych planszach.Push-Ma dwa cele. Aby szybko zademonstrować/v
Przenośna konsola do gier Lego z Space Invaders: 4 kroki
Przenośna konsola do gier Lego z Space Invaders: Czy kiedykolwiek myślałeś o byciu twórcą gier i zbudowaniu własnej konsoli do gier, w którą możesz grać w podróży? Wystarczy trochę czasu, sprzętLego bricksa Mini-Calliope (można zamówić na tej stronie https://calliope.cc/en) i trochę umiejętności
DIY Stojak na słuchawki do gier ARGB przy użyciu akrylu: 14 kroków (ze zdjęciami)
DIY Stojak na słuchawki do gier ARGB przy użyciu akrylu: Cześć wszystkim, w tej instrukcji pokażę, jak zrobić adresowalny stojak na słuchawki RGB do słuchawek do gier za pomocą diod LED WS2812b (aka Neopixels). Możesz również użyć do tego pasków RGB projekt. Ten opis nie jest prawdziwy
Neopixel Ws2812 Rainbow LED Glow z M5stick-C - Uruchamianie Rainbow na Neopixel Ws2812 przy użyciu M5stack M5stick C przy użyciu Arduino IDE: 5 kroków
Neopixel Ws2812 Rainbow LED Glow z M5stick-C | Uruchamianie Rainbow na Neopixel Ws2812 Używając M5stack M5stick C Używając Arduino IDE: Cześć chłopaki, w tej instrukcji dowiemy się, jak używać neopikselowych ws2812 LED lub taśmy LED lub matrycy LED lub pierścienia LED z płytką rozwojową m5stack m5stick-C z Arduino IDE i zrobimy wzór tęczy z nim
Przenośna konsola do gier Recalbox przy użyciu 2.2 TFT: 6 kroków
Przenośna konsola do gier Recalbox wykorzystująca 2.2 TFT: Instrukcje dotyczące samodzielnego wykonania ręcznej konsoli do gier Recalbox z wyświetlaczem LCD 2.2" TFT oraz przyciskami Raspberry Pi 0 W i GPIO. Zdobądź wszystkie części.B. Zlutuj części razem