Cov txheej txheem:

Arduino VGA Console Nrog Tsib Ua Si: 4 Cov Kauj Ruam
Arduino VGA Console Nrog Tsib Ua Si: 4 Cov Kauj Ruam

Video: Arduino VGA Console Nrog Tsib Ua Si: 4 Cov Kauj Ruam

Video: Arduino VGA Console Nrog Tsib Ua Si: 4 Cov Kauj Ruam
Video: TUTORIAL UPLOAD CODE / SKETCH ESPDUINO-32 BOARD (ESP-32) 2024, Hlis ntuj nqeg
Anonim
Image
Image
Arduino VGA Console Nrog Tsib Ua Si
Arduino VGA Console Nrog Tsib Ua Si
Arduino VGA Console Nrog Tsib Ua Si
Arduino VGA Console Nrog Tsib Ua Si

Hauv kuv Cov Lus Qhia yav dhau los, Kuv tau rov tsim dua cov ntawv yooj yim ntawm qee qhov nrov tshaj plaws hauv kev ua si arcade, los ntawm kev siv Arduino liab qab thiab ob peb lwm yam ntxiv. Tom qab ntawd kuv tau koom nrog tsib ntawm lawv ua ke hauv ib daim duab. Ntawm no kuv yuav qhia koj li cas tuaj yeem tsim lub console yooj yim uas tuaj yeem ua si Pong, Breakout, Bomber, Tetris thiab cov khoom ua si uas tau tshoov siab rau Etch-a-Sketch. Lub console no tseem tuaj yeem siv ua si Snake, thiab ob qhov kev ua si sau los ntawm lwm tus kws sau ntawv: Bit Ninja los ntawm Sandro Maffiodo aka "Smaffer" thiab Stacker los ntawm Nikita Kurylev.

Lub ntsiab tseem ceeb yog tiam ntawm VGA teeb liab, ua tsaug rau VGAx lub tsev qiv ntawv, yog li lub console xav tau VGA saib. Kuv lub hom phiaj, raws li ib txwm muaj, yog kom tsis txhob muaj "cov khoom tshwj xeeb" los tsim nws, koj tsis xav tau ib qho kev txhawb nqa IC lossis daim thaiv! Cov khoom siv tsuas yog ob lub zog, tsib lub nyees khawm, ob peb tus tiv thaiv thiab DSUB15 (VGA) txuas. Ib tus neeg hais lus piezo yog xaiv tau. Koj tuaj yeem pom qhov kev ua si zoo li cas hauv cov duab hauv nplooj ntawv no.

Lub tsev qiv ntawv VGAx tso cai siv plaub xim nrog daws teeb meem 120 x 60 pixels, tsis ntau tab sis txaus rau qhov kev ua si retro-game. Cov duab yog nyoos tab sis, ua tsaug rau kev siv lub zog loj, cov kev ua si ua haujlwm tau zoo. Cov suab yooj yim los kuj muaj thiab.

Kauj Ruam 1: Yuav Ua Li Cas Tsim Koj Tus Kheej Arduino VGA Console

Yuav Ua Li Cas Tsim Koj Tus Kheej Arduino VGA Console
Yuav Ua Li Cas Tsim Koj Tus Kheej Arduino VGA Console
Yuav Ua Li Cas Tsim Koj Tus Kheej Arduino VGA Console
Yuav Ua Li Cas Tsim Koj Tus Kheej Arduino VGA Console

Thawj zaug rub tawm ArduinoVGAgame.ino thiab/lossis Snake.ino cov lej hauv qab ntawm nplooj ntawv no thiab luam lawv hauv koj lub PC hauv cov npe nrog tib lub npe. Rub tawm VGAx lub tsev qiv ntawv los ntawm qhov txuas ntawm GitHub. Txoj hauv kev yooj yim tshaj plaws yog luam nws hauv Arduino software subfolder lub npe "tsev qiv ntawv", kom tau lees paub tam sim ntawd.

TSEEM CEEB: lub tsev qiv ntawv no ua haujlwm rau Arduno IDE 1.6.4 tab sis nws tsis ua tiav nrog cov laus lossis cov kho tshiab.

Tshaj tawm cov cai hauv koj li Arduino board (Kuv tau sim ob qho Uno thiab Nano). Ib qho lus ceeb toom rau lub cim xeeb muaj tsawg yog qhov ib txwm muaj. Yog tias koj tsis muaj lwm qhov yuam kev txhua yam zoo thiab koj tuaj yeem pib tsim koj tus kheej tam sim.

Rau qhov no koj xav tau:

  • Arduino Uno Rev. 3 lossis Arduino Nano 3.x (ATmega328)
  • DSUB15 Connector, piv txwv li yog VGA poj niam txuas lossis VGA cable kom raug txiav.
  • resistors: 2 x 68 Ohm thiab 2 x 470 Ohm thiab 5 x 1 txog 2 kOhm
  • ob 10 kOhm linear potentiometers (cov txiaj ntsig zoo ib yam zoo ib yam)
  • tsib khawm
  • ib co kab
  • ib lossis ob lub thawv zoo kom muab tag nrho cov khoom siv.

Lub ntsej muag:

  • ib daim ntawv qhia zaub mov los yog ib lub rooj noj mov
  • tus neeg hais lus piezo

Cov txheej txheem tau tshaj tawm rau saum toj ntawm cov kauj ruam no, ua ke nrog ib qho piv txwv ntawm qhov ua tiav "console".

cov qauv qhia pom yuav ua li cas txuas lub pob thiab lub hwj chim. Tshwj xeeb, koj yuav tsum txuas tsib lub khawm rau tus pin 5, 10, 11, 12 thiab 13 feem. Qhov kev nqis tes ua los ntawm txhua lub khawm tau piav qhia nyob rau sab saud sab xis hauv kab lus. Ntawm sab laug nws tau qhia yuav ua li cas txuas lub hwj chim (koj xav tau ob lub hwj chim loj rau tus pin A1 thiab A2). Tus neeg hais lus yuav tsum txuas nrog tus pin analog A0.

Kuv tso Arduino pawg thawj coj nrog VGA txuas rau hauv lub thawv ntoo, uas tseem yog thawj tus neeg ua si potentiometer thiab plaub lub nyees khawm, thaum tus neeg siv thib ob potentiometer thiab nws pib khawm nyob hauv ib lub thawv cais thiab me dua.

Yog tias koj nyiam cov khoom ua si no thiab koj txiav txim siab rov tsim nws, kuv zoo siab yog tias koj sau ntawv tawm tswv yim lossis xa duab hauv kab lus hauv qab no.

Kauj Ruam 2: Kev Ua Si Los Ntawm Lwm Tus Sau

Sandro Maffiodo tsis ntev los no tau tshaj tawm qhov kev ua si BitNinja. Koj tuaj yeem pom cov ntaub ntawv qhia ntxiv ntawm no thiab rub tawm cov cai ntawm no.

Txhawm rau siv kuv lub console, koj tsuas yog yuav tsum rov ua lub pob hauv nws cov cai raws li hauv qab no:

#define BTN_UP 11 (hloov ntawm 13)

#define BTN_LEFT 10 (hloov 12)

#define BTN_RIGHT 12 (hloov 11)

Stacker, los ntawm Nikita Kurylev, muaj nyob ntawm no. Xav paub ntau ntxiv ntawm no.

Ib zaug ntxiv, koj yuav tsum rov ua dua ib lub pob, hauv ib feem sib txawv ntawm cov cai: tsuas yog hloov digitalRead (2) nrog digitalRead (13)

Kauj Ruam 3: Cov Ntawv Ntxiv 1: Xav paub ntau ntxiv txog Yuav Ua Li Cas Tsim Cov Tswj

Cov ntawv txuas ntxiv 1: Xav paub ntau ntxiv txog Yuav Ua Li Cas Tsim Cov Tswj
Cov ntawv txuas ntxiv 1: Xav paub ntau ntxiv txog Yuav Ua Li Cas Tsim Cov Tswj
Cov ntawv txuas ntxiv 1: Xav paub ntau ntxiv txog Yuav Ua Li Cas Tsim Cov Tswj
Cov ntawv txuas ntxiv 1: Xav paub ntau ntxiv txog Yuav Ua Li Cas Tsim Cov Tswj
Cov ntawv txuas ntxiv 1: Xav paub ntau ntxiv txog Yuav Ua Li Cas Tsim Cov Tswj
Cov ntawv txuas ntxiv 1: Xav paub ntau ntxiv txog Yuav Ua Li Cas Tsim Cov Tswj
Cov ntawv txuas ntxiv 1: Xav paub ntau ntxiv txog Yuav Ua Li Cas Tsim Cov Tswj
Cov ntawv txuas ntxiv 1: Xav paub ntau ntxiv txog Yuav Ua Li Cas Tsim Cov Tswj

Koj tuaj yeem paub tus tswj hwm hauv ntau txoj kev sib txawv, nyob ntawm cov khoom muaj thiab koj nyiam.

Kuv nyiam kom paub lawv nrog cov thawv ntoo (saib cov duab hauv nplooj ntawv no). Ib lub thawv loj rau Arduino, VGA txuas thiab thawj tus neeg siv khawm thiab potenziometer; thib ob (me dua) ib qho rau tus khawm thib ob thiab lub log (xav tau rau Pong thiab cov khoom ua si teeb duab). Lwm qhov muaj peev xwm yog muab txhua yam tso rau hauv ib lub thawv loj dua.

Ua ntej kuv rov hais dua kom txuas VGA chaw nres nkoj. Hauv cov duab thawj thiab thib ob koj tuaj yeem pom qee cov ntsiab lus: nco ntsoov ob 470 Ohm resistors rau Liab thiab Ntsuab txuas nrog pins 6 thiab 7 feem, thiab ob 68 Ohm rau pins 3 thiab 9 rau kab rov tav thiab ntsug synchronization teeb liab.

Koj tuaj yeem xaiv cov xim sib txawv sib txawv nyob ntawm tus pin koj txuas rau ntawm VGA DSUB15 tus txuas, tus pin 1, 2 thiab 3 sawv cev rau Liab, Ntsuab, Xiav (RGB) feem. Kuv txuas tus pin 1 thiab 2, yog li kuv muaj cov xim hauv qab no ua ke: (0, 0) = dub; (1, 0) = liab; (0, 1) = ntsuab; (1, 1) = daj.

Rau txhua qhov muaj peev xwm sib txawv, kuv hais kom nyeem cov ntsiab lus hauv nplooj ntawv uas koj rub tawm VGAx cov tsev qiv ntawv.

Sai li qhov VGA txuas tau npaj tiav, koj tuaj yeem npaj tag nrho lwm cov hlua rau cov nyees khawm, lub log thiab tus hais lus (saib daim duab 2).

Tam sim no tsuas yog muab txhua yam ua ke: nco ntsoov tias txhua tus khawm tus pin yuav tsum tau txuas rau hauv av los ntawm 1 lossis 2 kOhm resistor, txwv tsis pub thaum lub pob qhib lub xeev tus pin yuav tsis tau txhais. Qhov no txhais tau tias yog tus pin raug txuas tsis txuas koj tuaj yeem muaj qhov hluav taws xob tsis zoo (zoo li qub) rau nws uas tuaj yeem qhib nws. Saib kom paub ntau ntxiv txog cov txheej txheem hauv theem ob ntawm cov lus qhia no.

Kauj ruam kawg yog kho txhua yam hauv qhov chaw. Kuv tau siv rab yaj phom kub, tab sis koj tuaj yeem siv koj txoj kev nyiam.

Kauj Ruam 4: Cov Ntawv Ntxiv 2: Qee Qhov Kev Xav Txog Lub Cim Txwv

Nws yog qhov xav tsis thoob uas Arduino yooj yim muaj peev xwm tsim lub teeb liab VGA thiab txhua qhov kev ua si no ua ke. Lub raj mis tiag tiag yog qhov tsis muaj SRAM. AVR microcontroller tsuas muaj 2048 bytes muaj los khaws thiab tswj cov kev hloov pauv, thiab VGAx lub tsev qiv ntawv khaws cov vijtsam hloov pauv hauv 120x60 pixels framebuffer qhov twg txhua pixel xav tau 2 khoom (4 xim), rau tag nrho ntawm 1800 bytes. Qhov no txhais tau tias tsuas muaj 248 bytes sab laug rau qhov hloov pauv kos duab. Ib qho ntxiv, hauv kuv qhov kev paub, ib tus yuav tsum tawm tsawg kawg 100 bytes dawb kom tsis txhob muaj kev tsis haum xeeb. Siv siab dua 1950 bytes ntawm lub cim xeeb hloov pauv, lub microcontroller pib qhia coj txawv txawv thiab tsis tuaj yeem kwv yees tau.

Qhov no txhais tau tias txhua qhov sib txawv yuav tsum tau sib koom ntawm cov kev ua si sib txawv, thiab qhov no ua rau cov cai tsis tuaj yeem nyeem thiab nyuaj rau kev debug. Nws tsis yog ib qho teeb meem rau "ntxiv qhov kev ua si tshiab" rau cov duab kos yav dhau los, tab sis txhua txoj cai yuav tsum tau hloov kho thiab ua kom zoo dua qub.

Tsis tas li ntawd, kuv yuav tsum tau siv yam tsawg kawg nkaus tuaj yeem hloov pauv hom ntawv: piv txwv li, rau txhua qhov kev tswj hwm kuv yuav tsum siv "byte" hloov "int" lossis, hauv lwm qhov xwm txheej, kuv yuav tsum nyiam "int" hloov "ntab".

Thaum kawg, kuv qhov kev paub paub mus rau Sandro Maffiodo aka Smaffer, tus tsim VGAx lub tsev qiv ntawv thiab qhov kev ua si txaus BitNinja. Yog tsis muaj lub tsev qiv ntawv no, txoj haujlwm no tsis tuaj yeem ua tiav.

Ua tsaug rau koj rau Nikita Kurylev rau qhov yooj yim tab sis lom zem game Stacker.

Pom zoo: