
Агуулгын хүснэгт:
2025 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2025-01-23 15:00


Энэхүү гарын авлагад би Arduino нано ашиглан тоглоомын консолыг хэрхэн яаж хийхийг танд үзүүлэх болно. Тиймээс, хэрэв та энэ талаар дэлгэрэнгүй видеог үзэхийг хүсч байвал миний youtube суваг дээрээс үзээрэй
Хангамж
Хэрэв та энэ линкээс худалдаж авбал энэ нь танд илүү олон төсөл өгөхөд тусална
1) ARDUINO NANO2) OLED DISPLAY3) PUSH BUTTONS4) УТАС
Алхам 1: Бүх бүрэлдэхүүн хэсгүүдийг гагнах

Тиймээс, бүх бүрэлдэхүүн хэсгүүдийг авсны дараа та энэ хэлхээний диаграммд үзүүлсэн шиг бүх бүрэлдэхүүн хэсгүүдийг гагнах хэрэгтэй
Алхам 2: Бүх зүйлийг газар дээр нь байрлуул
Гагнуур хийсний дараа бүх бүрэлдэхүүн хэсгүүдийг ийм байдлаар байрлуулж, сайхан харагдуулна
Алхам 3: Програмчлал
Эцэст нь бүх алхмуудыг зөв хийсний дараа доорх кодыг Arduino руу байршуулах цаг болжээ
#оруулах
#оруулах #оруулах #оруулах #оруулах // #оруулах #тодорхойлох OLED_RESET 4 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, 0x7F, 0x1F, 0x1F, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00}; Const гарын үсэг зураагүй Хорхой PROGMEM шуурга = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x0, 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, 0xBF, 0xBF, 0xFF, 0xBF, 0xF1, 0xCF, 0xFA, 0x80, 0x01, 0x3F, 0xC2, 0x37, 0xF7, 0x80, 0x01, 0xEF, 0x9C, 0x01, 0xE7, 0xC0, 0x01, 0xE0, 0x0, 0x70,, 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, 0xD0, 0x01 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0x07, 0x90, 0x0D, 0x43, 0xC0, 0x03, 0x07, 0x90, 0x05, 0x64, 0x00, 0x00, 0xCF, 0x10, 0x07, 0x07, 0xFC, 0x01, 0x80, 0x00, 0x00, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x40, 0x01, 0x80, 0x07, 0xF0, 0x01, 0x80, 0x00, 0x80, 0x07, 0xC7, 0xC7 0x80, 0x0B, 0xE8, 0x00, 0x80, 0x00, 0x87, 0x97, 0xE9, 0xE0, 0x80, 0x00, 0x87, 0xDF, 0xEF, 0xA0, 0x80, 0x00, 0x4B, 0xFA, 0xFF, 0xFF, 0xF7 0xDF, 0xFB, 0xA3, 0x00, 0x00, 0x24, 0x97, 0xE8, 0x24, 0x00, 0x00, 0x1E, 0x1F, 0xC0, 0x2C, 0x00, 0x00, 0x07, 0xF8, 0x1F, 0x00, 0x00 0xF8, 0x00, 0x00}; хүчингүй тохиргоо () {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, шуурга, 48, 48, 1); display.setFont (& FreeSans9pt7b); display.setTextColor (ЦАГААН); 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; дэлгэц.println (вольтаза);; display.setFont (& FreeSans9pt7b); display.setCursor (65, 39); display.println ("Үхэл"); display.setFont (); display.setCursor (65, 42); display.println ("од"); display.setTextSize (0); display.setCursor (65, 55); display.println ("VRAJ"); display.setCursor (65, 20); display.display (); display.setFont (); дуут дохио (a, 500); дуут дохио (a, 500); дуут дохио (a, 500); дуут дохио (f, 350); дуугаралт (cH, 150); дуут дохио (a, 500); дуут дохио (f, 350); дуугаралт (cH, 150); дуут дохио (a, 650); саатал (500); саатал (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; // сумны хурд 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; гарын үсэг зураагүй урт pocetno = 0; гарын үсэггүй урт odabrano = 0; гарын үсэг зураагүй урт trenutno = 0; гарын үсэг зураагүй урт 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 = санамсаргүй (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;} өөр {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; ая (9, 100, 100); zivoti = zivoti-1; } if (ry2> = pozicija-8 && ry2 <= pozicija+8) if (rx24) {rx2 = -50; ry2 = -50; ая (9, 100, 100); zivoti = zivoti-1; } if (ry3> = pozicija-8 && ry3 <= pozicija+8) if (rx34) {rx3 = -50; ry3 = -50; ая (9, 100, 100); zivoti = zivoti-1; } if (ry4> = pozicija-8 && ry4 <= pozicija+8) if (rx44) {rx4 = 200; ry4 = -50; ispaljeno = 0; ая (9, 100, 100); zivoti = zivoti-1; } if (rx4 <1) {ispaljeno = 0; rx4 = 200;} if (zivoti == 0) go = 1; } if (go == 1) {if (zivoti == 0) {ая (9, 200, 300); саатал (300); ая (9, 250, 200); саатал (200); ая (9, 300, 300); саатал (300); zivoti = 5; } display.clearDisplay (); display.setFont (); display.setTextSize (2); display.setTextColor (ЦАГААН); display.setCursor (7, 10); display.println ("GAME OVER!"); display.setTextSize (1); display.setCursor (7, 30); display.println ("оноо:"); display.setCursor (44, 30); дэлгэц.println (bodovi); display.setCursor (7, 40); display.println ("түвшин:"); display.setCursor (44, 40); дэлгэц.println (nivo); display.setCursor (7, 50); display.println ("цаг (ууд):"); display.setCursor (60, 50); дэлгэц.println (trenutno/1000); display.display (); if (digitalRead (3) == 0) {ая (9, 280, 300); саатал (300); ая (9, 250, 200); саатал (200); ая (9, 370, 300); саатал (300); поново (); }}} von ponovo () {metx = 0; met = 0; постожи = 0; nep = 8; smjer = 0; явах = 0; rx = 95; ry = 0; rx2 = 95; ry2 = 0; rx3 = 95; ry3 = 0; бодови = 0; брзина = 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 () {// AVcc -ийн эсрэг 1.1V лавлагаа уншина уу // лавлагаа Vcc, хэмжилтийг дотоод 1.1V лавлагаа болгон тодорхойлно уу (_ AVR_ATmega32U4_) || тодорхойлсон (_ AVR_ATmega1280_) || тодорхойлсон (_ AVR_ATmega2560_) ADMUX = _BV (REFS0) | _BV (MUX4) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #elif тодорхойлсон (_AVR_ATtiny24_) || тодорхойлсон (_ AVR_ATtiny44_) || тодорхойлсон (_ AVR_ATtiny84_) ADMUX = _BV (MUX5) | _BV (MUX0); #elif тодорхойлсон (_AVR_ATtiny25_) || тодорхойлсон (_ AVR_ATtiny45_) || тодорхойлсон (_ AVR_ATtiny85_) ADMUX = _BV (MUX3) | _BV (MUX2); #өөр ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1); #endif саатал (2); // Vref -ийг ADCSRA -ийг шийдвэрлэхийг хүлээгээрэй | = _BV (ADSC); // Хөрвүүлэлтийг эхлүүлэх үед (bit_is_set (ADCSRA, ADSC)); // хэмжих uint8_t нам = ADCL; // эхлээд ADCL -ийг унших ёстой - дараа нь ADCH uint8_t high = ADCH -ийг түгждэг; // урт үр дүнгийн аль алиныг нь нээдэг = (өндөр << 8) | бага; үр дүн = 1125300L / үр дүн; // Vcc -ийг тооцоолох (mV -ээр); 1125300 = 1.1*1023*1000 буцах үр дүн; // Vcc милливольтоор} хоосон дуугаралт (int note, int duration) {// BuzzerPin ая дээр тоглуулах ая (9, тэмдэглэл, үргэлжлэх хугацаа); саатал (үргэлжлэх хугацаа); noTone (9); саатал (50); }
Алхам 4: Сайхан амраарай !
Баяр хүргэе? Та эцэст нь үүнийг хийлээ, хэрэв танд таалагдсан бол миний youtube сувгийг бүртгүүлээрэй
Зөвлөмж болгож буй:
RetroPie ашиглан DIY гар тоглоомын консол: 7 алхам

RetroPie ашиглан DIY гар тоглоомын консол: Энэ төслийг илүү сайн ойлгохын тулд дээрх видеог үзээрэй. Зүгээр дээ. Эхлэх цаг боллоо! Юуны өмнө бид RetroPie ашиглах болно. Ингэснээр бидэнд хоёр сонголт үлдэх болно. Хэрэв бид Raspbian -ийг SD карт дээрээ суулгасан бол RetroP -ийг суулгаж болно
DIY Raspberry Pi Zero гар утасны тоглоомын консол: 6 алхам (зурагтай)

DIY Raspberry Pi Zero гар тоглоомын консол: Энэ төсөлд би Raspberry Pi Zero, NiMH батерей, гар хийцийн хэт цэнэгээс хамгаалах хэлхээ, арын дэлгэц, аудио өсгөгч зэргийг тоглож болох гар тоглоомын консол бий болгохын тулд ашиглах болно. чимэг тоглоомууд. Эхэлцгээе
Raspberry Pi ашиглан тоглоомын консол хий! 6 алхам

Raspberry Pi -г ашиглан тоглоомын консол хий! Та үнэтэй хуучин консолуудын мөнгийг төлөхгүйгээр чимэг тоглоом тоглохыг хүсч байна уу? Та Raspberry Pi -ийн тусламжтайгаар үүнийг хийж чадна. Raspberry Pi бол " зээлийн картны хэмжээтэй компьютер " Энэ нь олон гайхалтай зүйлийг хийх чадвартай. Олон янзын төрөл байдаг
Arduino дээр суурилсан DIY тоглоомын хянагч - Arduino PS2 тоглоомын хянагч - DIY Arduino Gamepad ашиглан Tekken тоглох: 7 алхам

Arduino дээр суурилсан DIY тоглоомын хянагч | Arduino PS2 тоглоомын хянагч | DIY Arduino Gamepad ашиглан Tekken тоглох: Сайн байна уу залуусаа, тоглоом тоглох нь үргэлж хөгжилтэй байдаг, гэхдээ өөрийн гараар хийсэн DIY тоглоомын хянагчтай тоглох нь илүү хөгжилтэй байдаг тул бид энэ зааварт arduino pro micro ашиглан тоглоом хянагч хийх болно
2.2 TFT ашиглан гар Recalbox тоглоомын консол: 6 алхам

2.2 TFT -ийг ашиглан гараар хийдэг Recalbox тоглоомын консол: 2.2 "TFT LCD, Raspberry Pi 0 W ба GPIO товчлууруудыг ашиглан гар утсан дээр дахин хийх хайрцагны тоглоомын консолыг өөрөө хийх заавар. Та энэ youtube видеог үзэж холбогдох алхамуудыг бүрэн харуулах боломжтой. Бүх эд ангиудыг аваарай. Эд ангиудыг хооронд нь гагнах