Përmbajtje:

LED Strip Atari Pong Arcade Machine: 8 hapa
LED Strip Atari Pong Arcade Machine: 8 hapa

Video: LED Strip Atari Pong Arcade Machine: 8 hapa

Video: LED Strip Atari Pong Arcade Machine: 8 hapa
Video: Chip 8 Old Tech in a New Light 2024, Korrik
Anonim
LED Strip Atari Pong Arcade Machine
LED Strip Atari Pong Arcade Machine

Emri im është Gabriel Podevin dhe kjo është gjëja ime e parë e pakontrollueshme. Unë jam aktualisht një student 16 vjeçar i shkollës së mesme i cili pëlqen të krijojë dhe ndërtojë gjëra ndërsa është shumë i interesuar për elektronikë, robotikë, qark dhe programim. Shpresoj se mund ta gjeni këtë të pandreqshme, gjeni këtë të dobishme.

Në këtë udhëzues unë do t'ju tregoj se si të bëni një lojë me stil retro Atari Pong brenda një kuti arcade retro. Ju mund të shihni videon e mësipërme për një demonstrim të projektit, gjithashtu mund të shihni projektin e përfunduar dhe kutinë vetëm dhe në dy fotografitë. Në fund të këtij udhëzimi, unë do të zhytem më thellë në kod dhe si ta modifikoj atë për ta personalizuar atë.

Lista e pjesëve bazë do të ndahet në seksionet: Mjetet, pjesët e montimit dhe përbërësit

Mjetet që do t'ju nevojiten do të përfshijnë sa vijon:

- Stërvitja

- Makine per ngjitjen e metalit

- Vidhosës (që përputhen me vidhat që vendosni të përdorni)

- Shumë metra

- sharra qarkulluese, sharra me brez, ose prestar lazer nëse keni qasje në një

-Prerës ose gërshërë telash

- Armë ngjitëse

Pjesët që do t'ju nevojiten për montim do të përfshijnë

- Ngjitës druri

- 10 blloqe druri një inç me një inç

- fletë e madhe prej druri me shtresë çerek inç ose druri të zgjedhur

- 24 vida gjysmë inç në gjatësi

- 14 x 6.5 inç prej plastike difuze led (opsionale)

- shirit elektrik i kuq dhe blu

Komponentët që ju nevojiten janë:

- 2 potenciometra 100k Ohm

- 8 metra shirit Led të adresueshëm individualisht (30 led për metër)

www.amazon.ca/ALITOVE-WS2812B- Individualisht-Addressable-Waterproof/dp/B018XAELE4/ref=sr_1_1?s=hi&ie=UTF8&qid=1535323567&sr=1-

- disa metra tela ose ngjyra të shumta teli

- përshtatës energjie AC në DC që del 6v përmes prizës së prizës së fuçisë

- 1 arduino Uno R3

nëse nuk keni qasje në një Arduino Uno R3 si unë, mund të ndërtoni një si ai që do të përdor në këtë projekt i cili përdor një procesor atmel328-pu. Ndiqni këtë lidhje për të mësuar se si të krijoni

Nëse jeni duke përdorur një arduino uno vazhdoni në hapin e parë.

Hapi 1: Ndërtimi i grupit LED

Ndërtimi i grupit LED
Ndërtimi i grupit LED
Ndërtimi i grupit LED
Ndërtimi i grupit LED
Ndërtimi i grupit LED
Ndërtimi i grupit LED

Ky hap është hapi më i thjeshtë që kërkon kohë për shkak të të gjitha bashkimeve që duhet të bëni.

-për të filluar do t'ju duhet një copë druri 10 3/4 inç me 6 1/2 inç.

-sapo të keni copën tuaj të drurit, kapni shiritin tuaj Led dhe prerë 26 segmente çdo 10 led ose çdo 6 1/2 inç.

-pas prerjes së segmenteve ngjitini ato poshtë drurit tuaj vertikalisht si në fotot e mëposhtme të paraqitura në foton e parë më sipër.

-nëse i keni ngjitur shiritat dhe i keni lejuar që të vendosen ne do të fillojmë të bashkojmë.

-do të keni nevojë për tre tela me ngjyra të ndryshme

-duhet të lidhet me të gjitha pozitivet që lidhen me një tel dhe të gjitha negative që lidhen me një tel ndërsa tela e fundit do të kapë shiritat e udhëhequr së bashku. Fotografitë e dyta në fillim të këtij hapi janë një diagram që do t'ju tregojë se si të lidhni telat.

-Më në fund pasi t'i keni bashkuar ato thjesht do të mbështillni një rrip elektrik në lidhjet tuaja të saldimit me ngjyrat përkatëse. siç tregohet në foton e tretë më sipër.

-fundimisht do të lidhemi me Arduino. hyrja juaj dixhitale ose tela juaj e mesme do të lidhet me hyrjen dixhitale 6 pin dhe toka juaj dhe pozitive do të lidhet me binarët pozitivë dhe negativë në tabelë.

Hapi 2: Kontrollet e Paddle

Kontrollet e Paddle
Kontrollet e Paddle
Kontrollet e Paddle
Kontrollet e Paddle
Kontrollet e Paddle
Kontrollet e Paddle

Për këtë hap shumë të thjeshtë gjithçka që do të duhet të bëni është të lidhni tre tela në secilin potenciometër. nëse mbani potenciometrin me pikat e saldimit të drejtuara nga ju, kunja e majtë do të jetë pozitive, kunja qendrore do të dalë dhe kunja e djathtë do të bluhet. siç tregohet në diagramin e mësipërm

pasi të keni ngjitur telat, ne do t'i lidhim ato me Arduino. ju pozitive dhe negative do të lidheni me shirat përkatës pozitivë dhe negativë. telat që dalni në potenciometra do të lidhen me hyrje të ndryshme në arduino. njëra do të lidhet me prizën (A0) dhe tjetra do të lidhet me prizën (A1).

Hapi 3: Prerja e rastit

Prerja e Rastit
Prerja e Rastit
Prerja e Rastit
Prerja e Rastit
Prerja e Rastit
Prerja e Rastit
Prerja e Rastit
Prerja e Rastit

kjo pjesë do t'ju japë dimensionet dhe këndet mbi atë që do t'ju duhet për të prerë

**** shumë e rëndësishme ***** sigurohuni që druri juaj është i trashë një çerek inç (1/4 inç)

gjithashtu kur prisni pjesë, mos harroni të etiketoni pjesët tuaja

pjesa themelore për të prerë do të etiketohet poshtë, mbrapa, sipër, para sipërme, poshtë para…. treguar në fotografitë në fillim

dimensionet e pjesëve

- Fundi: 13 3/4 inç X 10 1/4 inç

- Mbrapa: 13 3/4 inç X 15 1/2 inç

- Në krye: 13 3/4 inç X 6 1/2 inç

- Pjesa e përparme: 13 3/4 inç X 4 1/4 inç

- Paneli i thirrjes: 13 3/4 inç X 6 inç

- Pjesa e brendshme: 13 3/4 inç X 3 1/4 inç

- Mur anësor LED: 6 1/4 inç X 1 inç (prerë dy prej tyre)

- LED e brendshme e brendshme: 13 1/4 inç X 4 1/2 inç

- panel LED i pasmë i brendshëm: 13 1/4 inç X 9 inç

- Blloqe: 1 inç X 1 inç X 1 inç (prerë 10 blloqe)

- Paneli akrilik: 13 3/4 inç X 6 1/2 inç

Fotografitë e mësipërme do t'ju tregojnë këndet dhe dimensionet e pjesës anësore të panelit. gjithashtu do t'ju duhet të shkurtoni dy nga kjo pjesë

Hapi 4: Asambleja e Rastit

Kuvendi i Rastit
Kuvendi i Rastit
Kuvendi i Rastit
Kuvendi i Rastit
Kuvendi i Rastit
Kuvendi i Rastit

Deri në këtë pikë në këto udhëzime ju pothuajse e keni përfunduar të gjithë. me siguri mendoni se i kam të gjitha këto pjesë dhe prerje çfarë të bëj me to. Ky hap i fundit do t'ju udhëzojë se si të mblidhni rastin tuaj.

-Gjëja e parë që do të bëjmë është të fillojmë të montojmë kasën. këtu ju vjen në ndihmë e gjithë puna e prerë nga druri nga hapi i mëparshëm.

-Për të filluar montimin do të na duhen 4 nga blloqet e drurit 1x1x1 baza, dy panelet anësore, pjesa e pasme dhe e përparme. vendosni 4 blloqet në secilin cep të pjesës së poshtme dhe lini një çerek inç midis buzës dhe bllokut siç tregohet në foton e dytë në fillimin e hapit.

-tjetra do t'ju duhet të shponi disa vrima pilot nga druri dhe blloqet. pasi ta keni bërë atë vidë pastaj në fund.

-Tjetra do të vendosim panelet anësore. Vendosni panelet në hendekun çerek inç në anën e jashtme të bllokut. shponi një vrimë pilot përmes panelit anësor dhe bllokut të drurit dhe vidhosni panelet. Përsëriteni për anën tjetër.

-Pas përfundimit të paneleve anësore. ne do të vendosim panelin e poshtëm të përparmë. vendoseni panelin në të njëjtin nivel me pjesën e poshtme dhe anët shponi vrimat e pilotit në blloqe dhe vidhoseni panelin.

-Më në fund do të vendosim përsëri. bëni të njëjtën gjë siç bëtë me panelin e poshtëm të përparmë dhe vidhoseni përsëri.

-Deri në këtë pikë ju keni një bazë për të ndërtuar dhe një mirëkuptim se si po e mbledhim këtë rast.

-Kjo pjesë tjetër është pak më sfiduese për faktin se punoni me një zonë më të vogël. për të filluar do të na duhen të gjitha pjesët kryesore dhe 6 blloqe.

-Vendosni atë që keni ndërtuar deri tani në kurrizin e tij dhe vendosni blloqet në qoshet një çerek inç nga maja. (siç tregohet në foton e tretë në fillim)

-shponi vrimat e pilotit për anët dhe mbrapa dhe vidhosini ato.

-tani do të mbledhim pjesën tjetër të majës

-merni panelin tuaj të sipërm dhe vendoseni në blloqe shponi vrimat e pilotit dhe vidhoseni pjesën e sipërme pasi ju finlandezë që e kthejnë kokën përmbys *** me kujdes *** dhe vendosni një bllok në çdo cep paralelisht me skajin. stërvitni vrimat pilot nga panelet anësore dhe vidhosini ato në bllok. kthejeni kasën prapa dhe shponi vrimat e pilotit nga lart në blloqe dhe vidhoseni.

-kjo pjesë e folesë është pak e ndërlikuar. do t'ju duhet paneli i përparmë dhe dy blloqet tuaja të fundit. së pari shponi një vrimë pilot në blloqet e mëparshme përmes panelit tuaj të sipërm të përparmë dhe vidhoseni atë. Tani merrni dy blloqet e fundit dhe vendosini ato brenda në qoshe dhe vidhosni panelin tuaj anësor dhe panelin tuaj të përparmë në blloqe. edhe një herë kthejeni kasën përmbys dhe vendoseni panelin e sipërm të brendshëm në bllok dhe vidhoseni.

-duhet të liheni me diçka të tillë (treguar në foton e parë të këtij hapi)

hapi tjetër do të shpjegojë pjesën tjetër të asamblesë.

Hapi 5: Përfundimi i Kuvendit

Përfundimi i Kuvendit
Përfundimi i Kuvendit
Përfundimi i Kuvendit
Përfundimi i Kuvendit
Përfundimi i Kuvendit
Përfundimi i Kuvendit

Deri në këtë pikë ju keni përfunduar gati çështjen dhe ndërtoni vetëm disa gjëra për të vënë në vend dhe do të përfundoni.

Tani mbetet vetëm instalimi i pajisjeve elektronike.

-Ne do të fillojmë duke shpuar vrima në panelin tuaj të thirrjes për potenciometrin tuaj. mos ngurroni të shponi vrimat aty ku mendoni se do të ishte komode. në rastin tim unë kam vendosur vrimat 2 1/2 inç nga fundi dhe 3 1/2 inç nga ana për të dy potenciometrat.

-Pasi të keni shpuar vrimat tuaja, ne do ta vendosim këtë panel në kasë. por në vend që ta vidhosim ne do ta ngjisim atë thjesht vendosim një sasi bujare të zamit përgjatë buzës së kasës dhe vendoseni panelin dhe mbajeni me disa kapëse ose diçka të rëndë.

-Pasi zamja të ketë përfunduar tharjen ne do të vendosim pjesë elektronike. Por së pari do të duhet të heqim panelin e pasmë.

-Pasi pjesa e pasme të jetë e fikur ju rekomandoj që ta vendosni kasën përpara poshtë duke e bërë më të lehtë vendosjen e LED -ve dhe përbërësve të tjerë brenda.

-Tani që ju keni shpinën jashtë ne do të vendosim potenciometrin brenda kasës thjesht duke i futur ato nëpër vrimat që sapo kemi shpuar dhe duke vënë një sasi bujare zam të nxehtë.

*** Kujdes ***-Jini jashtëzakonisht të kujdesshëm kur vendosni grupin LED, sepse pikat e lidhjes mund të jenë të brishta.

-Tani kemi arritur në pjesën më të rëndësishme, duke vënë në grupin led. thjesht vendoseni tabelën siç tregohet në foton e dytë.

-Sapo merrni panelin tuaj të brendshëm led dhe vendoseni brenda kasës direkt nën panelin e pasmë të grupit LED. kjo pjesë mund të më përshtatet ngushtë. gjithashtu lëreni të thahet para se të vazhdoni.

-Keni arritur në pjesën e fundit. Unë rekomandoj të lyeni njërën anë të kësaj pjese të fundit (LED Inner Back) e zezë ose e bardhë për një kontrast midis LED -ve dhe kësaj pjese.

-Ne do ta dimë që ta vendosim këtë direkt pas mbështetjes LED dhe të shtypim lehtë kundër pjesës së pasme të LED -ve për t'i mbajtur ata të mos lëvizin. pasi të futet aplikoni ngjitës përgjatë buzës për të parandaluar lëvizjen e tij. treguar në foton e tretë.

**** urime keni mbaruar të gjithë kuvendin !!!

vazhdoni në hapin e fundit për të koduar lojën

Hapi 6: Kodi

Urime edhe një herë për arritjen deri këtu.

në këtë pjesë do t'ju tregoj kodin dhe si ta bëni atë të funksionojë përveç gjërave në kod që mund t'i ndryshoni dhe personalizoni.

por para se të hyjmë në këtë do t'ju duhet (adafruit_NeoPixel-master) që kam lidhur edhe shkarkimin.

për të instaluar master hapni programin tuaj arduino

1. shkoni në skicë

2. hapur përfshijnë bibliotekën

3. kliko (add.zip bibliotekë)

4. zgjidhni skedarin (adafruit_NeoPixel-master) dhe përfundoni

më poshtë kam ngjitur kodin për lojën.

#përfshi

#përfshi

top i gjatëXabs = 12;

top i gjatëYabs = 4;

int ballX;

int ballY;

int ballvelX = 1;

int ballvelY = 1;

indeksi int;

int fps = 50;

int paddlewidth = 3;

int paddlemax = 9 - gjerësi paddle + 1;

int knobseg = 1023 / (paddlemax);

int paddle1 = 4;

int paddle2 = 4;

#përcaktoni NUMPIXELS 260

#përcaktoni PIN -in 6

Piksela Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIN6, NEO_GRB + NEO_KHZ800);

void setup () {

piksele.filloj ();

Serial.filloj (9600);

}

lak void () {

clearScreen ();

updateBall ();

updatePaddle1 ();

updatePaddle2 ();

displayBall ();

displayPaddle1 ();

displayPaddle2 ();

piksele.shfaq ();

deteCollision ();

vonesa (fps);

}

void clearScreen () {

për (int i = 0; i <NUMPIXELS; i ++) {

pixels.setPixelColor (i, pixels. Color (0, 0, 0));

}

}

void updateBall () {

ballXabs += ballvelX;

ballYabs += ballvelY;

}

void deteCollision () {

Serial.print (ballYabs);

Serial.print ("");

Serial.println (paddle1);

nëse (ballvelX> 0 && ballXabs> = 25) {// përplaset me murin e djathtë

Serial.println ("PërplasjaX");

rezultati 1 (); // ballvelX*=-1;

}

nëse (ballvelX <0 && ballXabs <= 0) {// përplaset me murin e majtë

Serial.println ("PërplasjaX");

score2 (); // ballvelX*=-1;

}

nëse (ballvelY> 0 && ballYabs> = 9) {// përplaset me murin e sipërm

Serial.println ("PërplasjaY"); ballvelY *= -1;

}

nëse (ballvelY <0 && ballYabs <= 0) {// përplaset me murin e poshtëm

Serial.println ("PërplasjaY");

ballvelY *= -1;

}

// zbuloni përplasjen e vozis 2

nëse ((ballvelX> 0 && ballXabs == 24) && ((ballYabs> = vozis2) && (ballYabs <= vozis2 + gjerësi vozitje - 1)))

{// përplaseni murin e djathtë

Serial.println ("CollisionPaddle");

ballvelX *= -1;

}

// zbuloni përplasjen e vozisit 1

nëse ((ballvelX = vozis1) && (ballYabs <= vozis 1 + gjerësi vozis - 1)))

{// përplaseni murin e djathtë

Serial.println ("CollisionPaddle");

ballvelX *= -1;

}

}

void updatePaddle1 () {

çelësi int = analogRead (A0);

vozis 1 = dorezë e rrumbullakët ((e gjatë) / (dorezë e gjatë));

}

void updatePaddle2 () {

int knob2 = analogRead (A1);

vozis2 = dorezë e rrumbullakët ((e gjatë)2 / (e gjatë));

}

void displayBall () {

ballX = e rrumbullakët (topXabs);

ballY = e rrumbullakët (ballYabs);

nëse (topX % 2! = 0) {

indeksi = (9 - ballY) + 10 * ballX;

nëse (ballX! = 0) {

pixels.setPixelColor (ballY + 10 * (ballX - 1), pixel. Color (30, 0, 0)); // ana e majtë e ngjyrës së topit

}

nëse (ballX! = 25) {pixels.setPixelColor (ballY + 10 * (ballX + 1), pixel. Color (30, 0, 0)); // ana e djathtë e ngjyrës së topit

}

nëse (ballY! = 9) {pixels.setPixelColor (indeksi - 1, pixel. Color (30, 0, 0)); // anët e poshtme të ngjyrës së topit

}

nëse (ballY! = 0) {pixels.setPixelColor (indeksi + 1, pixel. Color (30, 0, 0)); // anët e sipërme të ngjyrës së topit

}

}

tjeter {

indeks = ballY + 10 * ballX; nëse (ballX! = 0) {

pixels.setPixelColor ((9 - ballY) + 10 * (ballX - 1), pixel. Ngjyra (30, 0, 0)); // ana e majtë e rreshtit të topit

}

nëse (ballX! = 25) {

pixels.setPixelColor ((9 - ballY) + 10 * (ballX + 1), pixel. Ngjyra (30, 0, 0)); // ana e djathtë e rreshtit të topit

}

nëse (ballY! = 9) {

pixels.setPixelColor (indeksi + 1, pixel. Color (30, 0, 0)); // anët e poshtme të topit edhe rresht

}

nëse (ballY! = 0) {pixels.setPixelColor (indeksi - 1, pixel. Color (30, 0, 0)); // anët e sipërme të topit edhe rresht

}

}

pixels.setPixelColor (indeksi, pixel. Color (255, 0, 0)); /// qendra e ngjyrës së topit

}

void displayPaddle1 () {

për (int i = 0; i <paddlewidth; i ++) {pixels.setPixelColor (paddle1+i, pixels. Color (0, 0, 255));

}

}

void displayPaddle2 () {

për (int i = 0; i <paddlewidth; i ++) {pixels.setPixelColor (NUMPIXELS - 1 - paddle2 - i, pixel. Color (0, 0, 255));

}

}

rezultati i pavlefshëm 1 () {

resetBall (0);

}

rezultati i pavlefshëm2 () {

resetBall (1);

}

void resetBall (int player) {

vonesa (1000);

topXabs = 12

; ballYabs = 4;

ballvelX = lojtar? 1: -1;

ballvelY = 1;

clearScreen ();

vonesa (1000);

displayBall ();

piksele.shfaq ();

vonesa (1000);

displayPaddle1 ();

displayPaddle2 (); piksele.shfaq (); vonesa (2000); }

Hapi 7: Përfundimi

Duke përfunduar
Duke përfunduar

Pasi të keni ngarkuar kodin, shponi një vrimë në panelin e pasmë mjaft të madh për përshtatësin e rrymës. lidheni atë në arduino dhe më në fund mblidhni pjesën e pasme.

Unë gjithashtu përfshiva në listën e pjesëve akrilikun me difuzor LED që tani mund ta vendosni mbi LED dhe ngjiteni poshtë

Pasi ta keni bërë këtë ju jeni gati për të luajtur dhe shijuar orët e lojërave konkurruese kundër familjes dhe miqve.

Së fundi, dua t'ju përgëzoj për përfundimin e projektit.

Nëse keni ndonjë çështje më kontaktoni këtu dhe unë do të doja të ndihmoja në zgjidhjen e çështjes.

Recommended: