Turinys:

LED juostos „Atari Pong“arkadinė mašina: 8 žingsniai
LED juostos „Atari Pong“arkadinė mašina: 8 žingsniai

Video: LED juostos „Atari Pong“arkadinė mašina: 8 žingsniai

Video: LED juostos „Atari Pong“arkadinė mašina: 8 žingsniai
Video: Installing LED Tape Lighting 2024, Liepa
Anonim
LED juostos „Atari Pong“arkadinė mašina
LED juostos „Atari Pong“arkadinė mašina

Mano vardas Gabrielius Podevinas ir tai yra mano pirmasis nepakartojamas. Šiuo metu esu 16 metų vidurinės mokyklos studentė, kuri mėgsta kurti ir kurti daiktus, tuo pačiu domėdamasi elektronika, robotika, grandinėmis ir programavimu. Tikiuosi, kad šis nesudėtingas atradimas jums bus naudingas.

Šioje pamokoje aš jums parodysiu, kaip padaryti retro stiliaus „Atari Pong“žaidimą retro arkados dėkle. Aukščiau pateiktame vaizdo įraše galite pamatyti projekto demonstraciją, taip pat galite pamatyti baigtą projektą ir dėklą atskirai ir dviejose nuotraukose. Pasibaigus šiam nesuderinamam dalykui, aš gilinuosi į kodą ir kaip jį redaguoti, kad suasmenintumėte.

Pagrindinių dalių sąrašas bus suskirstytas į skyrius: Įrankiai, surinkimo dalys ir komponentai

Jums reikės šių įrankių:

- Grąžtas

- Lituoklis

- Atsuktuvas (atitinka varžtus, kuriuos nusprendėte naudoti)

- Daugiamatis

- Jūs turite prieigą prie cirkuliacinio pjūklo, juostinio pjūklo ar lazerinio pjaustytuvo

-Laidų pjaustytuvas arba žirklės

- Klijų pistoletas

Dalys, kurių jums reikės surinkimui, apima

- Medienos klijai

- 10 colių x vieno colio medienos blokų

- didelis ketvirtadalio colio sluoksnio arba pasirinktos medienos lakštas

- 24 varžtai pusės colio ilgio

- 14 x 6,5 colio LED išsklaidomasis plastikas (neprivaloma)

- raudona ir mėlyna elektros juosta

Jums reikės šių komponentų:

- 2 100k omų potenciometrai

- 8 metrai individualiai adresuojamos LED juostos (30 šviesos diodų vienam metrui)

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

- keli metrai vielos arba kelių spalvų viela

- kintamosios srovės ir nuolatinės srovės maitinimo adapteris, kuris išleidžia 6V per cilindro lizdo kištuką

- 1 arduino Uno R3

jei neturite prieigos prie tokio „Arduino Uno R3“kaip aš, galite sukurti tokį, kokį naudosiu šiame projekte, kuriame naudojamas „atmel328-pu“procesorius. Sekite šią nuorodą ir sužinokite, kaip sukurti savo

Jei naudojate arduino uno, tęskite pirmąjį veiksmą.

1 žingsnis: LED masyvo kūrimas

LED masyvo kūrimas
LED masyvo kūrimas
LED masyvo kūrimas
LED masyvo kūrimas
LED masyvo kūrimas
LED masyvo kūrimas

Šis žingsnis yra paprasčiausias daug laiko reikalaujantis žingsnis dėl visų litavimų, kuriuos turite atlikti.

-Norėdami pradėti, jums reikės 10 3/4 colio 6 1/2 colio medžio gabalo.

-Kai tik turėsite savo medžio gabalą, paimkite „Led“juostą ir supjaustykite 26 segmentus kas 10 lempučių arba kas 6 1/2 colio.

-nupjovę segmentus, priklijuokite juos prie savo medienos vertikaliai, kaip parodyta šiose nuotraukose, parodytose pirmame paveikslėlyje aukščiau.

-Kai priklijavote juosteles ir leidote joms nusistovėti, pradėsime lituoti.

-jums reikės trijų skirtingų spalvų vielos

-jis turėtų būti prijungtas prie visų teigiamų jungčių prie vieno laido, o visi neigiami -prie vieno laido, o paskutinis laidas sujungs ledines juostas. Antrosios nuotraukos šio žingsnio pradžioje yra diagrama, kuri parodys, kaip prijungti laidus.

-Galiausiai po jų litavimo jūs tiesiog apvyniosite elektros juostelę ant lydmetalio jungčių atitinkamomis spalvomis. kaip parodyta aukščiau esančiame trečiame paveikslėlyje.

-galiausiai prisijungsime prie „Arduino“. jūsų skaitmeninis įėjimas arba vidurinis laidas prijungs prie jūsų skaitmeninio įvesties 6 kontaktų, o jūsų įžeminimas ir teigiamas jungsis prie teigiamų ir neigiamų bėgių ant plokštės.

2 žingsnis: irklo valdikliai

Irklo valdikliai
Irklo valdikliai
Irklo valdikliai
Irklo valdikliai
Irklo valdikliai
Irklo valdikliai

Norėdami atlikti šį labai paprastą žingsnį, jums tereikia lituoti tris laidus prie kiekvieno potenciometro. jei laikysite potenciometrą taip, kad lydmetalio taškai būtų nukreipti į priekį nuo jūsų, kairioji atrama bus teigiama, o centrinė atrama bus išvesta, o dešinysis -. kaip parodyta aukščiau esančioje diagramoje

kai lituosite laidus, mes prijungsime juos prie „Arduino“. Jūs turėsite teigiamų ir neigiamų lietų, kurie bus teigiami ir neigiami. potenciometrų išvesties laidai bus prijungti prie skirtingų arduino įėjimų. vienas jungsis prie (A0) kištuko, o kitas - prie (A1) kištuko.

3 žingsnis: dėklo pjaustymas

Korpuso pjovimas
Korpuso pjovimas
Korpuso pjovimas
Korpuso pjovimas
Korpuso pjovimas
Korpuso pjovimas
Korpuso pjovimas
Korpuso pjovimas

šioje dalyje bus nurodyti matmenys ir kampai, kuriuos reikės pjaustyti

**** labai svarbu ***** įsitikinkite, kad jūsų mediena yra ketvirtadalio colio storio (1/4 colio)

taip pat pjaustydami dalis nepamirškite pažymėti savo dalių

pagrindinė pjaustoma dalis bus pažymėta apačioje, gale, viršuje, priekyje viršuje, priekyje apačioje…. parodyta paveikslėliuose pradžioje

dalies matmenys

- Apačioje: 13 3/4 colio X 10 1/4 colio

- Nugara: 13 3/4 colio X 15 1/2 colio

- Viršuje: 13 3/4 colio X 6 1/2 colio

- Priekinė apačia: 13 3/4 colio X 4 1/4 colio

- Skambinimo skydelis: 13 3/4 colių X 6 colių

- Vidinis viršus: 13 3/4 colio X 3 1/4 colio

- LED dailylentės: 6 1/4 colio X 1 colio (supjaustykite du iš jų)

- LED vidinis dugnas: 13 1/4 colio X 4 1/2 colio

- vidinis galinis LED skydelis: 13 1/4 colio X 9 colio

- Blokai: 1 colio X 1 colio X 1 colio (supjaustyti 10 blokų)

- Akrilo skydas: 13 3/4 colio X 6 1/2 colio

Aukščiau esančiose nuotraukose bus parodyti šoninio skydo dalies kampai ir matmenys. taip pat turėsite iškirpti dvi šios dalies dalis

4 žingsnis: korpuso surinkimas

Dėklo surinkimas
Dėklo surinkimas
Dėklo surinkimas
Dėklo surinkimas
Dėklo surinkimas
Dėklo surinkimas

Iki šios instrukcijos taško jūs beveik baigėte viską. turbūt manote, kad turiu visas šias dalis ir išpjovas, ką su jomis daryti. Šis paskutinis žingsnis nurodys, kaip surinkti dėklą.

-Pirmas dalykas, kurį ketiname pradėti, yra surinkti bylą. čia praverčia visos ankstesnio žingsnio medienos išpjovos.

-Norėdami pradėti surinkimą, mums reikės 4 iš 1x1x1 medienos blokų pagrindo, dviejų šoninių plokščių, nugaros ir priekinio dugno. padėkite 4 blokus ant kiekvieno dugno kampo ir palikite ketvirtį colio tarp krašto ir bloko, kaip parodyta antrame paveikslėlyje žingsnio pradžioje.

-toliau turėsite išgręžti keletą skylių iš medžio ir blokų. kai padarysite tą varžtą, tada į apačią.

-Toliau uždėsime šonines plokštes. Padėkite plokštes ant ketvirčio colio tarpo išorinėje bloko pusėje. gręžkite bandomąją skylę per šoninį skydą ir medinį bloką ir įsukite plokštes. pakartokite kitą pusę.

-Užbaigus šonines plokštes. uždėsime priekinį apatinį skydelį. padėkite plokštę lygiagrečiai dugnui, o šonai išgręžkite bandomąsias skyles į blokus ir užsukite skydą.

-Pagaliau mes užsidėsime nugarą. darykite tą patį, ką darėte su priekiniu apatiniu skydeliu, ir vėl prisukite.

-Šiuo metu jūs turite pagrindą, iš kurio galite remtis, ir supratimą, kaip mes renkame šią bylą.

-Ši kita dalis yra šiek tiek sudėtingesnė, nes dirbate su mažesne sritimi. Norėdami pradėti, mums reikės visų viršutinių dalių ir 6 blokų.

-Gulėkite, ką iki šiol pastatėte, ant nugaros ir padėkite kaladėles kampuose ketvirtadalio colio atstumu nuo viršaus. (kaip parodyta trečioje nuotraukoje pradžioje)

-gręžkite šonines ir galines skylutes ir įsukite.

-Dabar mes surinksime likusią viršutinę dalį

-paimkite viršutinį skydelį ir padėkite jį ant blokų, išgręžkite bandomąsias skyles ir įsukite viršutinę dalį. Po suomių kalbos, atsargiai apverčiant agregatą aukštyn kojomis ***, įdėkite bloką į kiekvieną kampą lygiagrečiai kraštui. gręžkite bandomąsias skyles iš šoninių plokščių ir prisukite jas prie bloko. pasukite dėklą atgal vertikaliai ir gręžkite bandomąsias skyles per viršutinę dalį į blokus ir įsukite.

-ši lizdo dalis yra šiek tiek sudėtinga. jums reikės priekinio viršutinio skydo ir paskutinių dviejų blokų. pirmiausia gręžkite bandomąsias skyles į ankstesnius blokus per viršutinį priekinį skydelį ir įsukite. Dabar paimkite paskutinius du blokus ir padėkite juos kampe ir prisukite šoninį skydelį ir priekinį viršutinį skydelį prie blokų. dar kartą apverskite dėklą aukštyn kojom ir uždėkite vidinį viršutinį skydelį ant bloko ir įsukite.

-jums turėtų likti kažkas panašaus (parodyta pirmoje šio žingsnio nuotraukoje)

kitas žingsnis paaiškins likusią surinkimo dalį.

5 žingsnis: Surinkite surinkimą

Surinkimo užbaigimas
Surinkimo užbaigimas
Surinkimo užbaigimas
Surinkimo užbaigimas
Surinkimo užbaigimas
Surinkimo užbaigimas

Iki to laiko jūs beveik baigėte bylą ir sukuriate tik keletą dalykų, kuriuos reikia įdiegti, ir jums bus padaryta.

Dabar lieka tik įdiegti elektroniką.

-Pradėsime gręždami skyles į jūsų potenciometro rinkimo skydelį. drąsiai gręžkite skyles ten, kur jums atrodo patogu. mano atveju aš turiu įdėti skylutes 2 1/2 colio atstumu nuo apačios ir 3 1/2 colio nuo šono abiems potenciometrams.

-Kai išgręšite skyles, mes uždėsime šią plokštę ant dėklo. bet vietoj to, kad jį prisuktume, mes jį klijuosime, tiesiog įdėkite daug klijų išilgai korpuso krašto ir padėkite skydelį ant jo ir laikykite su tam tikrais spaustukais ar kažkuo sunkiu.

-Kai klijai baigs džiūti, mes įdėsime elektronines dalis. Bet pirmiausia turėsime nuimti galinį skydelį.

-Kai nugarėlė išjungta, rekomenduoju dėklą pastatyti žemyn, kad būtų lengviau įdėti šviesos diodus ir kitus komponentus.

-Dabar, kai turite nugarą, mes įdėsime potenciometrą į dėklo vidų, tiesiog išmesdami juos per ką tik išgręžtas skyles ir uždėdami daug karštų klijų.

*** atsargiai ***-Būkite labai atsargūs dėdami šviesos diodų bloką, nes litavimo taškai gali būti trapūs.

-Dabar mes pasiekėme svarbiausią dalį, įdėjome LED masyvą. tiesiog įdėkite lentą, kaip parodyta antrame paveikslėlyje.

-Kai tik gausite savo LED vidinį skydelį ir padėkite jį į dėklo vidų, tiesiai po LED masyvo galiniu skydeliu. šis gabalas man gali būti tinkamas. prieš tęsdami taip pat leiskite išdžiūti.

-Jūs pasiekėte paskutinę dalį. Rekomenduoju nudažyti vieną šios paskutinės dalies pusę (LED vidinė nugaros dalis) juodai arba balta spalva, kad būtų kontrastas tarp šviesos diodų ir šios dalies.

-Mes žinosime, kad tai dedate tiesiai už šviesos diodų pagrindo ir lengvai prispaudžiate prie šviesos diodų galinės dalies, kad jie nejudėtų. įdėjus, užtepkite klijus išilgai krašto, kad jie nejudėtų. parodyta trečioje nuotraukoje.

**** Sveikinu, kad baigėte visą surinkimą !!!

tęskite paskutinį žaidimo kodavimo veiksmą

6 žingsnis: Kodas

Dar kartą sveikinu, kad pavyko taip toli.

šiame skyriuje aš parodysiu kodą ir kaip tai padaryti, be to, ką galite pakeisti ir suasmeninti.

bet prieš įsitraukdami į tai, jums reikės (adafruit_NeoPixel-master), kurį taip pat susiejau su atsisiuntimu.

Norėdami įdiegti pagrindinį, atidarykite savo arduino programą

1. eik į eskizą

2. atvira biblioteka

3. spustelėkite (add.zip biblioteka)

4. pasirinkite failą (adafruit_NeoPixel-master) ir baigsite

žemiau įklijavau žaidimo kodą.

#įtraukti

#įtraukti

ilgas kamuolysXabs = 12;

ilgas kamuolysYabs = 4;

int ballX;

int ballY;

int ballvelX = 1;

int ballvelY = 1;

int indeksas;

int fps = 50;

int irklentės plotis = 3;

int paddlemax = 9 - irklentės plotis + 1;

int knobseg = 1023 / (paddlemax);

int irklas 1 = 4;

int irklas 2 = 4;

#define NUMPIXELS 260

#define PIN 6

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

void setup () {

pixels.begin ();

Serial.begin (9600);

}

void loop () {

clearScreen ();

updateBall ();

updatePaddle1 ();

updatePaddle2 ();

displayBall ();

displayPaddle1 ();

displayPaddle2 ();

pixels.show ();

detectCollision ();

vėlavimas (fps);

}

void clearScreen () {

(int i = 0; i <NUMPIXELS; i ++) {

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

}

}

void updateBall () {

ballXabs += ballvelX;

ballYabs += ballvelY;

}

void detectCollision () {

Serial.print (ballYabs);

Serial.print ("");

Serial.println (irklas1);

if (ballvelX> 0 && ballXabs> = 25) {// susiduria su dešine siena

Serial.println („CollisionX“);

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

}

if (ballvelX <0 && ballXabs <= 0) {// atsitrenkia į kairę sieną

Serial.println („CollisionX“);

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

}

if (ballvelY> 0 && ballYabs> = 9) {// susiduria su viršutine siena

Serial.println („CollisionY“); rutulinis Y *= -1;

}

if (ballvelY <0 && ballYabs <= 0) {// susiduria su apatine siena

Serial.println („CollisionY“);

rutulinisY *= -1;

}

// aptikti 2 irklo susidūrimą

if ((ballvelX> 0 && ballXabs == 24) && ((ballYabs> = irklas2) && (ballYabs <= irklas2 + irklo plotis - 1)))

{// susiduria su dešine siena

Serial.println („CollisionPaddle“);

rutulioX *= -1;

}

// aptikti 1 irklo susidūrimą

if ((ballvelX = irklas1) && (ballYabs <= irklas1 + irklo plotis - 1)))

{// susiduria su dešine siena

Serial.println („CollisionPaddle“);

rutulioX *= -1;

}

}

void updatePaddle1 () {

int rankenėlė = analogRead (A0);

irklentė1 = apvali ((ilga) rankenėlė / (ilga) rankena);

}

void updatePaddle2 () {

int rankenėlė2 = analogRead (A1);

irklentė2 = apvali ((ilga) rankenėlė2 / (ilga) rankena);

}

void displayBall () {

ballX = apvalus (ballXabs);

ballY = apvalus (ballYabs);

jei (ballX % 2! = 0) {

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

jei (ballX! = 0) {

pixels.setPixelColor (ballY + 10 * (ballX - 1), pixels. Color (30, 0, 0)); // kairė rutulinės spalvos pusė

}

if (ballX! = 25) {pixels.setPixelColor (ballY + 10 * (ballX + 1), pixels. Color (30, 0, 0)); // rutulio spalvos dešinė pusė

}

if (ballY! = 9) {pixels.setPixelColor (indeksas - 1, pixels. Color (30, 0, 0)); // rutulio spalvos apatinės pusės

}

if (ballY! = 0) {pixels.setPixelColor (indeksas + 1, pixels. Color (30, 0, 0)); // viršutinės rutulio spalvos pusės

}

}

Kitas {

indeksas = kamuolysY + 10 * rutulysX; jei (ballX! = 0) {

pixels.setPixelColor ((9 - ballY) + 10 * (ballX - 1), pixels. Color (30, 0, 0)); // kairioji rutulio pusė lygi

}

jei (ballX! = 25) {

pixels.setPixelColor ((9 - ballY) + 10 * (ballX + 1), pixels. Color (30, 0, 0)); // dešinė rutulio pusė lygi

}

jei (ballY! = 9) {

pixels.setPixelColor (indeksas + 1, pixels. Color (30, 0, 0)); // apatinės rutulio pusės vienodos eilės

}

if (ballY! = 0) {pixels.setPixelColor (indeksas - 1, pixels. Color (30, 0, 0)); // viršutinės rutulio pusės lygios eilės

}

}

pixels.setPixelColor (indeksas, pixels. Color (255, 0, 0)); /// rutulio spalvos centras

}

void displayPaddle1 () {

for (int i = 0; i <irklentės plotis; i ++) {pixels.setPixelColor (paddle1+i, pixels. Color (0, 0, 255));

}

}

void displayPaddle2 () {

for (int i = 0; i <paddlewidth; i ++) {pixels.setPixelColor (NUMPIXELS - 1 - irklas 2 - i, pikseliai. Spalva (0, 0, 255));

}

}

void score1 () {

resetBall (0);

}

void score2 () {

resetBall (1);

}

void resetBall (int player) {

vėlavimas (1000);

ballXabs = 12

; ballYabs = 4;

ballvelX = žaidėjas? 1: -1;

rutulinisY = 1;

clearScreen ();

vėlavimas (1000);

displayBall ();

pixels.show ();

vėlavimas (1000);

displayPaddle1 ();

displayPaddle2 (); pixels.show (); vėlavimas (2000 m.); }

7 žingsnis: Baigimas

Apdaila
Apdaila

Įkėlę kodą, galiniame skydelyje išgręžkite pakankamai didelę skylę, skirtą jūsų statinės lizdo maitinimo adapteriui. prijunkite jį prie arduino ir galiausiai vėl surinkite nugarą.

Aš taip pat įtraukiau į dalių sąrašą LED difuzorių akrilą, kurį dabar galite uždėti ant šviesos diodų ir klijuoti

Kai tai padarysite, būsite pasiruošę žaisti ir mėgautis konkurencinių žaidimų valandomis prieš šeimą ir draugus.

Galiausiai norėčiau pasveikinti jus užbaigus projektą.

Jei turite kokių nors problemų, susisiekite su manimi čia ir aš norėčiau padėti išspręsti problemą.

Rekomenduojamas: