Mundarija:

LED chiziqli Atari Pong Arja mashinasi: 8 qadam
LED chiziqli Atari Pong Arja mashinasi: 8 qadam

Video: LED chiziqli Atari Pong Arja mashinasi: 8 qadam

Video: LED chiziqli Atari Pong Arja mashinasi: 8 qadam
Video: Я установил инверторный компрессор R134a в СТАРЫЙ холодильник! 2024, Iyul
Anonim
LED chiziqli Atari Pong Arja mashinasi
LED chiziqli Atari Pong Arja mashinasi

Mening ismim Gabriel Podevin va bu mening birinchi gapim. Men hozirda 16 yoshli maktab o'quvchisiman, u elektronika, robototexnika, elektronika va dasturlashni juda qiziqar ekan, narsalarni yaratish va qurishni yaxshi ko'radi. Umid qilamanki, siz buni foydali deb topasiz.

Men sizga ko'rsatma beraman, qanday qilib retro uslubidagi Atari Pong o'yinini retro arja qutisi ichida yasashni ko'rsataman. Loyihaning demosi uchun yuqoridagi videoni ko'rishingiz mumkin, shuningdek, tugallangan loyihani va ishni faqat va ikkita rasmda ko'rishingiz mumkin. Oxirida men kodni chuqurroq o'rganaman va uni shaxsiylashtirish uchun uni qanday tahrir qilaman.

Asosiy qismlar ro'yxati bo'limlarga bo'linadi: Asboblar, yig'ish qismlari va komponentlari

Sizga kerak bo'lgan vositalar quyidagilarni o'z ichiga oladi.

- Matkap

- Lehimlash temir

- Tornavida (vintlardek mos keladigan)

- Ko'p o'lchagich

- aylanma arra, tasma yoki lazerni kesish vositasi, agar siz bittasiga kira olsangiz

-Sim kesuvchi yoki qaychi

- yopishtiruvchi qurol

O'rnatish uchun sizga kerak bo'ladigan qismlar kiradi

- Yog'och elim

- 10 dyuymli bir dyuymli yog'och bloklari

- chorak dyuymli yog'ochdan yoki tanlangan yog'ochdan yasalgan katta varaq

- 24 dyuym uzunlikdagi yarim dyuym

- 14 x 6,5 dyuymli LED tarqatuvchi plastmassa (ixtiyoriy)

- qizil va ko'k elektr lenta

Sizga kerak bo'lgan komponentlar:

- 2 100k ohmlik potansiyometr

- 8 metrli alohida manzilli Led tasmasi (har bir metr uchun 30 led)

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

- bir necha metrli simlar yoki ko'p rangli simlar

- 6V kuchlanishli, rozetkali vilka orqali ishlaydigan tok quvvat adapteri

- 1 arduino Uno R3

Agar sizda men kabi Arduino Uno R3-ga kirish imkoni bo'lmasa, siz atmel328-pu protsessoridan foydalanadigan ushbu loyihada men foydalanadigan qurilmani qura olasiz. O'z havolangizni yaratishni o'rganish uchun ushbu havolaga o'ting

Agar siz arduino uno dan foydalanayotgan bo'lsangiz, birinchi bosqichga o'ting.

1 -qadam: LED massivini yaratish

LED massivini yaratish
LED massivini yaratish
LED massivini yaratish
LED massivini yaratish
LED massivini yaratish
LED massivini yaratish

Siz bajarishingiz kerak bo'lgan barcha lehim tufayli bu qadam vaqtni talab qiladigan eng oddiy qadamdir.

-boshlash uchun sizga 10/3/4 dyuymli 6 1/2 dyuymli yog'och bo'lagi kerak bo'ladi.

-Bir marta yog'och bo'lagini olsangiz, Led tasmasini oling va har 10 led yoki har 6 1/2 dyuymdan 26 qismini kesib oling.

-segmentlarni kesgandan so'ng, ularni yuqoridagi birinchi rasmda ko'rsatilgan quyidagi rasmlarda ko'rsatilgandek vertikal ravishda yog'ochga yopishtiring.

-Agar siz chiziqlarni yopishtirib, joylashishiga ruxsat bergan bo'lsangiz, biz lehimlashni boshlaymiz.

-Sizga uch xil rangli sim kerak bo'ladi

Barcha simlar bitta simga ulangan bo'lishi kerak va barcha salbiylar bitta simga ulangan bo'lishi kerak, oxirgi sim esa chiziqlarni bir -biriga bog'lab qo'yadi. Ushbu qadamning boshidagi ikkinchi rasmlar - bu simlarni qanday ulash kerakligini ko'rsatadigan diagramma.

-Nihoyat, siz ularni lehimlagandan so'ng, lehim ulanishlariga mos keladigan rangdagi elektr tasmasini o'rab qo'yasiz. yuqoridagi uchinchi rasmda ko'rsatilgandek.

Oxir -oqibat biz Arduino -ga ulanamiz. Sizning raqamli kirishingiz yoki o'rta simingiz sizga 6 pinli raqamli kirishni ulaydi va sizning eringiz va musbatingiz bortdagi musbat va manfiy relslarga ulanadi.

2 -qadam: Paddle boshqaruvlari

Paddle boshqaruvlari
Paddle boshqaruvlari
Paddle boshqaruvlari
Paddle boshqaruvlari
Paddle boshqaruvlari
Paddle boshqaruvlari

Bu juda oddiy qadam uchun har bir potansiyometrga uchta simni lehimlash kifoya. Agar siz potansiyometrni lehim nuqtalari sizga qaragan holda ushlab tursangiz, chap tirnoq ijobiy bo'ladi, markaziy tishli chiqsa, o'ng tishli esa erga aylanadi. yuqoridagi diagrammada ko'rsatilganidek

Agar siz simlarni lehimlagan bo'lsangiz, biz ularni Arduino -ga ulaymiz. sizning ijobiy va salbiy yomg'iringiz u erda bo'ladi. Siz potentsiometrlarda simlarni chiqarasiz, arduino -dagi har xil kirishga ulanadi. biri (A0) vilkasiga, ikkinchisi (A1) vilkasiga ulanadi.

3 -qadam: Kosonni kesish

Kosonni kesish
Kosonni kesish
Kosonni kesish
Kosonni kesish
Kosonni kesish
Kosonni kesish
Kosonni kesish
Kosonni kesish

bu qism sizga kesishingiz kerak bo'lgan narsalarning o'lchamlari va burchaklarini beradi

**** juda muhim ***** yog'ochingizning qalinligi chorak dyuym (1/4 dyuym) ekanligiga ishonch hosil qiling.

Shuningdek, qismlarni kesishda ehtiyot qismlarni belgilashni unutmang

kesish uchun asosiy qism pastki, orqa, tepa, old tepa, old pastki deb belgilanadi. boshida rasmlarda ko'rsatilgan

qism o'lchamlari

- Pastki: 13 3/4 dyuym X 10 1/4 dyuym

- Orqa: 13 3/4 dyuym X 15 1/2 dyuym

- Yuqori: 13 3/4 dyuym X 6 1/2 dyuym

- Old pastki: 13 3/4 dyuym X 4 1/4 dyuym

- Dial paneli: 13 3/4 dyuym X 6 dyuym

- Ichki tepa: 13 3/4 dyuym X 3 1/4 dyuym

- LED siding: 6 1/4 dyuym X 1 dyuym (ikkitasini kesib oling)

- Ichki LED svetodiod: 13 1/4 dyuym X 4 1/2 dyuym

- ichki orqa LED paneli: 13 1/4 dyuym X 9 dyuym

- Bloklar: 1 dyuym X 1 dyuym X 1 dyuym (10 blokni kesib oling)

- Akril panel: 13 3/4 dyuym X 6 1/2 dyuym

Yuqoridagi rasmlar sizga yon panelning burchaklari va o'lchamlarini ko'rsatadi. Bundan tashqari, siz ushbu qismdan ikkitasini kesib olishingiz kerak bo'ladi

4 -qadam: Kosonni yig'ish

Koson yig'ilishi
Koson yig'ilishi
Koson yig'ilishi
Koson yig'ilishi
Koson yig'ilishi
Koson yig'ilishi

Bu yo'riqnomada siz deyarli hamma narsani tugatgansiz. Menimcha, menda bu qismlar va kesmalar bor, men ular bilan nima qilaman. Bu oxirgi qadam sizning sumkangizni qanday yig'ishni ko'rsatib beradi.

-Biz qilmoqchi bo'lgan birinchi narsa -korpusni yig'ishni boshlash. Bu erda siz oldingi qadamda yog'ochdan yasalgan barcha qismlar yordam beradi.

-O'rnatishni boshlash uchun bizga 1x1x1 o'lchamdagi yog'ochdan yasalgan 4 ta tayanch, ikkita yon panel, orqa va old tubi kerak bo'ladi. 4 ta blokni pastki qismning har bir burchagiga joylashtiring va qadam so'ralganda, ikkinchi rasmda ko'rsatilgandek, chekka va blok o'rtasida chorak dyuym qoldiring.

-keyin siz yog'och va bloklar orasidan uchuvchi teshiklarni burishingiz kerak bo'ladi. vintni bir marta bajarganingizdan so'ng, pastki qismga.

-Keyin biz yon panellarni o'rnatamiz. Panelni blokning tashqi tomonidagi chorak dyuymli bo'shliqqa qo'ying. Yon panel va yog'och blok orqali uchuvchi teshikni burang va panellarni vidalang. Boshqa tomondan takrorlang.

-Yon panellarni tugatgandan so'ng. biz oldingi pastki panelni o'rnatamiz. panelni pastki qismiga bir tekis joylashtiring va yon tomonlari uchuvchi teshiklarni bloklarga burab, panelni burab qo'ying.

-Oxir -oqibat, biz orqaga qaytamiz. oldingi panelda bo'lgani kabi, xuddi shunday qiling va orqaga burang.

-Shu paytdan boshlab sizda poydevor paydo bo'ladi va biz bu ishni qanday yig'ayotganimizni tushunasiz.

-Bu keyingi qism biroz qiyinroq, chunki siz kichikroq maydonda ishlaysiz. Boshlash uchun bizga barcha yuqori qismlar va 6 ta blok kerak bo'ladi.

-Hozirgacha qurgan narsangizni orqa tomoniga qo'ying va bloklarni burchakdan tepadan chorak dyuym masofada joylashtiring. (boshidagi uchinchi rasmda ko'rsatilgandek)

-yon va orqa uchuvchi teshiklarni burg'ulang va vidalang.

-Endi biz qolgan qismini yig'amiz

-yuqori panelni oling va uni bloklarga joylashtiring, uchuvchi teshiklarni burang va ustki qismini vidalang. Finlyandiyadan so'ng, montajni teskari burab, ehtiyotkorlik bilan *** va har bir burchakda chetiga parallel joylashtiring. yon panellardan uchuvchi teshiklarni burang va ularni blokka burab qo'ying. korpusni orqaga burang va uchlari ustki qismidan bloklarga burang va vidalang.

-bu uyaning qismi biroz murakkab. sizga old panel va oxirgi ikkita blok kerak bo'ladi. Avval oldingi panelga uchuvchi teshiklarni burang va oldingi vintni burab qo'ying. Endi siz oxirgi ikkita blokni olib, ularni burchakka joylashtiring va yon panelni va old panelni bloklarga mahkamlang. yana bir marta korpusni teskari o'girib, ichki yuqori panelni blokga joylashtiring va vidalang.

-sizda shunday narsa qolishi kerak (bu qadamning birinchi rasmida ko'rsatilgan)

keyingi qadam yig'ilishning qolgan qismini tushuntiradi.

5 -qadam: montajni tugatish

Assambleyani tugatish
Assambleyani tugatish
Assambleyani tugatish
Assambleyani tugatish
Assambleyani tugatish
Assambleyani tugatish

Shu vaqtga kelib, siz ishni va qurilishni deyarli yakunladingiz va siz bajarishingiz kerak bo'lgan bir nechta narsalarni qildingiz.

Endi faqat elektronikani o'rnatish qoladi.

-Biz potentsiometrni terish paneliga teshik ochishdan boshlaymiz. o'zingizni qulay his qiladigan teshiklarni burishingiz mumkin. mening holatimda ikkala potentsiometr uchun pastdan 2 1/2 dyuymli va yon tomondan 3 1/2 dyuymli teshiklarni joylashtirdim.

-Siz teshiklarni burg'ilaganingizdan so'ng, biz bu panelni korpusga qo'yamiz. lekin biz uni yopishtirmaymiz, biz uni yopishtiramiz, shunchaki korpusning chetiga ko'p miqdorda elim surtamiz va panelni joylashtiramiz va qisqich yoki og'ir narsa bilan ushlab turamiz.

-Yelim quriganidan keyin biz elektron qismlarni joylashtiramiz. Ammo avval biz orqa panelni olib tashlashimiz kerak.

-Orqa taraf yopilgandan so'ng, men sizga LEDni va boshqa komponentlarni ichkariga joylashtirishni osonlashtiradigan tarzda korpusni old tomoniga qo'yishni maslahat beraman.

-Endi siz orqaga chekinsangiz, biz potentsiometrni korpus ichiga joylashtiramiz, biz ularni faqat biz ochgan teshiklardan o'tkazamiz va ko'p miqdorda issiq elim qo'yamiz.

*** ehtiyotkorlik ***-LED massivini qo'yishda juda ehtiyot bo'ling, chunki lehim nuqtalari mo'rt bo'lishi mumkin.

-Endi biz eng muhim qismga etib keldik. taxtani ikkinchi rasmda ko'rsatilgandek joylashtiring.

-Bir marta ichki ichki panelni olib, uni korpusga to'g'ridan -to'g'ri LED orqa panelining ostiga qo'ying. bu qism menga qattiq mos kelishi mumkin. Davom etishdan oldin uni quriting.

-Siz oxirgi qismga etib keldingiz. Men bu oxirgi qismning bir tomonini (LED Ichki Orqa) qora yoki oq rangga bo'yashni tavsiya qilaman, bu LEDlar va bu qism o'rtasidagi farq.

-Biz buni to'g'ridan -to'g'ri LED orqa tomoniga qo'yamiz va ularni harakatlanmasligi uchun LEDlarning orqa tomoniga engil bosamiz. harakatlanmasligi uchun chetiga elim surting. uchinchi rasmda ko'rsatilgan.

**** butun yig'ilishni tugatganingiz bilan tabriklayman !!!

O'yinni kodlash uchun oxirgi bosqichga o'ting

6 -qadam: Kod

Yana bir bor shu darajaga etganingiz bilan tabriklayman.

bu bo'limda men sizga kodni va uni qanday ishlashini ko'rsatib beraman, bundan tashqari uni o'zgartirish va shaxsiylashtirish mumkin.

lekin biz bunga kirishdan oldin sizga yuklanishni bog'lagan (adafruit_NeoPixel-master) kerak bo'ladi.

master o'rnatish uchun arduino dasturini oching

1. eskizga o'ting

2. ochiq kutubxonani o'z ichiga oladi

3. bosing (add.zip kutubxonasi)

4. (adafruit_NeoPixel-master) faylini tanlang va ishingiz tugadi

Buning ostiga men o'yin kodini qo'ydim.

#qo'shing

#qo'shing

uzun ballXabs = 12;

uzun to'pYabs = 4;

int ballX;

int ballY;

int ballvelX = 1;

int ballvelY = 1;

int indeksi;

int fps = 50;

int paddlewidth = 3;

int paddlemax = 9 - paddlewidth + 1;

int knobseg = 1023 / (paddlemax);

int paddle1 = 4;

int paddle2 = 4;

260

#PIN kodni belgilang 6

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

bo'sh o'rnatish () {

piksel.begin ();

Serial.begin (9600);

}

void loop () {

clearScreen ();

updateBall ();

updatePaddle1 ();

updatePaddle2 ();

displeyBol ();

displeyPaddle1 ();

displeyPaddle2 ();

piksel.show ();

aniqlashCollision ();

kechikish (fps);

}

void clearScreen () {

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

piksel.setPixelColor (i, piksellar. Color (0, 0, 0));

}

}

void updateBall () {bekor qilingan

ballXabs += ballvelX;

ballYabs += ballvelY;

}

void detectCollision () {

Ketma -ket chop etish (ballYabs);

Serial.print ("");

Serial.println (paddle1);

if (ballvelX> 0 && ballXabs> = 25) {// o'ng devor bilan to'qnashadi

Serial.println ("To'qnashuvX");

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

}

agar (ballvelX <0 && ballXabs <= 0) {// chap devor bilan to'qnashsa

Serial.println ("To'qnashuvX");

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

}

if (ballvelY> 0 && ballYabs> = 9) {// yuqori devor bilan to'qnashadi

Serial.println ("To'qnashuvY"); ballvelY *= -1;

}

agar (ballvelY <0 && ballYabs <= 0) {// pastki devor bilan to'qnashsa

Serial.println ("To'qnashuvY");

ballvelY *= -1;

}

// 2 -yelkaning to'qnashuvini aniqlang

if ((ballvelX> 0 && ballXabs == 24) && ((ballYabs> = paddle2) && (ballYabs <= paddle2 + paddlewidth - 1)))

{// o'ng devor bilan to'qnashing

Serial.println ("CollisionPaddle");

ballvelX *= -1;

}

// 1 -yelkaning to'qnashuvini aniqlang

agar ((ballvelX = paddle1) && (ballYabs <= paddle1 + paddlewidth - 1)))

{// o'ng devor bilan to'qnash

Serial.println ("CollisionPaddle");

ballvelX *= -1;

}

}

void updatePaddle1 () {

int tugmasi = analogRead (A0);

paddle1 = dumaloq ((uzun) tugma / (uzun) knobseg);

}

void updatePaddle2 () {

int knob2 = analogRead (A1);

paddle2 = dumaloq ((uzun) tugma2 / (uzun) knobseg);

}

void displayBall () {

ballX = dumaloq (ballXabs);

ballY = dumaloq (ballYabs);

agar (ballX % 2! = 0) {

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

agar (ballX! = 0) {

piksel.setPixelColor (ballY + 10 * (ballX - 1), piksel. Color (30, 0, 0)); // balli rangning chap tomoni

}

if (ballX! = 25) {piksel.setPixelColor (ballY + 10 * (ballX + 1), piksel. Color (30, 0, 0)); // to'p rangining o'ng tomoni

}

if (ballY! = 9) {piksel.setPixelColor (indeks - 1, piksel. Color (30, 0, 0))); // to'p rangining pastki tomonlari

}

if (ballY! = 0) {piksel.setPixelColor (indeks + 1, piksel. Color (30, 0, 0)); // to'p rangining yuqori tomonlari

}

}

boshqa {

indeks = to'pY + 10 * ballX; agar (ballX! = 0) {

piksel.setPixelColor ((9 - ballY) + 10 * (ballX - 1), piksel. Color (30, 0, 0)); // to'pning chap tomoni, hatto qator

}

agar (ballX! = 25) {

piksel.setPixelColor ((9 - ballY) + 10 * (ballX + 1), piksel. Color (30, 0, 0)); // to'pning o'ng qatori, hatto qator

}

agar (ballY! = 9) {

piksel.setPixelColor (indeks + 1, piksel. Color (30, 0, 0)); // to'pning pastki qirralari, hatto qator

}

if (ballY! = 0) {piksel.setPixelColor (indeks - 1, piksel. Color (30, 0, 0)); // to'pning yuqori qatorlari, hatto qator

}

}

piksel.setPixelColor (indeks, piksel. Color (255, 0, 0)); /// to'p rangi markazi

}

bo'sh displeyPaddle1 () {

uchun (int i = 0; i <paddlewidth; i ++) {piksel.setPixelColor (paddle1+i, piksellar. Color (0, 0, 255));

}

}

bo'sh displeyPaddle2 () {

for (int i = 0; i <paddlewidth; i ++) {piksel.setPixelColor (NUMPIXELS - 1 - paddle2 - i, piksellar. Color (0, 0, 255));

}

}

bekor ball1 () {

resetBall (0);

}

bekor ball2 () {

resetBall (1);

}

bekor qilish resetBall (int player) {

kechikish (1000);

ballXabs = 12

; ballYabs = 4;

ballvelX = o'yinchi? 1: -1;

ballvelY = 1;

clearScreen ();

kechikish (1000);

displeyBol ();

piksel.show ();

kechikish (1000);

displeyPaddle1 ();

displeyPaddle2 (); piksel.show (); kechikish (2000); }

7 -qadam: tugatish

Tugatish
Tugatish

Kodni yuklaganingizdan so'ng, orqa paneldagi barrel uyasi quvvat adapteri uchun etarlicha katta teshik oching. uni arduino -ga ulang va nihoyat orqa qismini qayta yig'ing.

Men shuningdek qismlar ro'yxatiga LEDni tarqatuvchi akrilni qo'shdim, endi siz uni LEDlar ustiga qo'yishingiz va yopishtirishingiz mumkin.

Buni qilganingizdan so'ng, siz o'ynashga va oila va do'stlaringizga qarshi raqobatbardosh o'yinlardan bahramand bo'lishga tayyormiz.

Oxir -oqibat, men sizni loyihani tugatganingiz bilan tabriklayman.

Agar sizda biron bir muammo bo'lsa, men bilan bog'laning va men muammoni hal qilishga yordam berishni xohlayman.

Tavsiya: