Агуулгын хүснэгт:

LED Strip Atari Pong аркад машин: 8 алхам
LED Strip Atari Pong аркад машин: 8 алхам

Видео: LED Strip Atari Pong аркад машин: 8 алхам

Видео: LED Strip Atari Pong аркад машин: 8 алхам
Видео: Atari Pong Table - Pong Knockout 4 Player And More! -CES 2020 2024, Арваннэгдүгээр
Anonim
LED зурвас Atari Pong аркад машин
LED зурвас Atari Pong аркад машин

Намайг Габриэль Подевин гэдэг бөгөөд энэ бол миний анхны ойлгомжтой зүйл юм. Би одоогоор 16 настай ахлах сургуулийн сурагч бөгөөд электроник, робот техник, хэлхээ, програмчлалыг маш их сонирхож байхдаа юм бүтээх, бүтээх дуртай. Танд энэ хэрэгтэй зүйлийг олж чадна гэж найдаж байна.

Энэхүү зааварчилгаанд би чимэг зоосон машины хайрцган дотор чимэг маягийн Atari Pong тоглоомыг хэрхэн хийхийг танд үзүүлэх болно. Төслийн демо үзэхийн тулд та дээрх видеог үзэж болно, мөн дууссан төсөл, хэргийг ганцаараа болон хоёр зураг дээрээс харж болно. Энэхүү ойлгомжгүй байдлын төгсгөлд би кодын талаар илүү гүнзгий судалж, хувийн болгохын тулд үүнийг хэрхэн яаж засах талаар ярих болно.

Үндсэн хэсгүүдийн жагсаалтыг багаж хэрэгсэл, угсрах эд анги, бүрэлдэхүүн хэсгүүд болгон хуваах болно

Танд хэрэгтэй багаж хэрэгсэлд дараахь зүйлс орно.

- Өрөмдлөг

- Гагнуурын төмөр

- Шургуулагч (ашиглахаар шийдсэн боолттой таарч тохирно)

- Олон метр

- эргэлтийн хөрөө, зурвас эсвэл лазер таслагч нь танд нэгийг авах боломжтой

-Утас таслагч эсвэл хайч

- Цавуу буу

Угсрахад шаардлагатай хэсгүүдийг багтаасан болно

- Модон цавуу

- 10 нэг инчийн нэг инчийн модон блок

- дөрвөлжин инчийн зузаантай мод эсвэл сонгоход тохиромжтой том хуудас

- Хагас инчийн урттай 24 эрэг

- 14 x 6.5 инчийн LED сарниулах хуванцар (заавал биш)

- улаан, цэнхэр өнгийн цахилгаан соронзон хальс

Танд хэрэгтэй бүрэлдэхүүн хэсгүүд нь:

- 2 100 кк -ийн потенциометр

- 8 метр тус тусдаа хаягтай Led зурвас (метр тутамд 30 лед)

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

- хэдэн метр утас эсвэл олон өнгийн утас

- 6в -ийг баррель үүр залгуураар гаргадаг AC -DC гүйдлийн адаптер

- 1 arduino Uno R3

Хэрэв та над шиг Arduino Uno R3-т хандах боломжгүй бол atmel328-pu процессор ашигладаг энэ төсөлд миний ашиглах шиг бүтээж болно. Энэ линкээр орж өөрийн гараар хэрхэн бүтээх талаар сурна уу

Хэрэв та arduino uno ашиглаж байгаа бол эхний алхамаа үргэлжлүүлээрэй.

Алхам 1: LED массивыг бий болгох

LED массивыг бий болгох
LED массивыг бий болгох
LED массивыг бий болгох
LED массивыг бий болгох
LED массивыг бий болгох
LED массивыг бий болгох

Энэ алхам нь таны хийх ёстой бүх гагнуурын ажил учраас цаг хугацаа шаардсан хамгийн энгийн алхам юм.

-Эхлэхийн тулд танд 10 3/4 инч 6 1/2 инчийн мод хэрэгтэй болно.

-Нэг удаа модтой болсны дараа Led зурвасаа аваад 10 лед буюу 6 1/2 инч тутамд 26 хэсгийг хайчилж ав.

-сегментүүдийг хайчилж авсны дараа дээрх зурган дээрх дараах зурган дээрх шиг модон дээрээ босоо байдлаар наа.

-Та туузыг нааж, суулгаж өгсний дараа бид гагнах ажлыг эхлүүлнэ.

-Танд гурван өөр өнгийн утас хэрэгтэй болно

-Үүнийг бүх утсыг нэг утсаар холбож, бүх сөрөг талыг нэг утсаар холбох ёстой бөгөөд сүүлчийн утас нь туузыг хооронд нь холбох болно. Энэ үе шатны эхэнд байгаа хоёр дахь зураг бол утаснуудыг хэрхэн холбохыг харуулах диаграм юм.

-Эцэст нь та тэдгээрийг гагнаж дууссаны дараа гагнуурын холболтоо тохирох өнгөөр цахилгаан тууз боож өгнө. дээрх гурав дахь зурагт үзүүлсэн шиг.

-Эцэст нь бид Arduino руу холбогдох болно. Таны дижитал оролт эсвэл дунд утас нь 6 зүү дижитал оролттой холбогдсон бөгөөд таны газардуулга ба эерэг нь самбар дээрх эерэг ба сөрөг төмөр замтай холбогдох болно.

Алхам 2: Сэлүүрийг хянах

Сэлүүрийг хянадаг
Сэлүүрийг хянадаг
Сэлүүрийг хянадаг
Сэлүүрийг хянадаг
Сэлүүрийг хянадаг
Сэлүүрийг хянадаг

Энэхүү маш энгийн алхамыг хийхийн тулд потенциометр бүрт гурван утас гагнах хэрэгтэй. Хэрэв та потенциометрийг гагнах цэгүүдээ өөр тийш нь харсан байдлаар барьвал зүүн тонгоруу нь эерэг байх болно, төв тонгойлгож, баруун талыг нь газардуулна. дээрх диаграммд үзүүлсэн шиг

Та утсыг гагнасан бол бид Arduino -той холбох болно. Та эерэг ба сөрөг бороотой холбогдох болно. Потенциометрийн утсыг гаргавал arduino дээрх өөр өөр оролтуудтай холбогдох болно. нэг нь (A0) залгуурт, нөгөө нь (A1) залгуурт холбогдох болно.

Алхам 3: Хэргийг таслах

Хэргийг хайчилж байна
Хэргийг хайчилж байна
Хэргийг хайчилж байна
Хэргийг хайчилж байна
Хэргийг хайчилж байна
Хэргийг хайчилж байна
Хэргийг хайчилж байна
Хэргийг хайчилж байна

Энэ хэсэг нь танд огтлох шаардлагатай хэмжээ, өнцгийг өгөх болно

**** маш чухал ***** модныхоо дөрөвний нэг инчийн зузаантай (1/4 инч) байгаа эсэхийг шалгаарай.

Мөн эд ангиудыг огтлохдоо эд ангийг шошголохоо мартуузай

огтлох үндсэн хэсгийг доод, ар, дээд, урд дээд, урд доод гэж тэмдэглэнэ. эхэнд зурган дээр харуулав

хэсгийн хэмжээсүүд

- Доод талд: 13 3/4 инч X 10 1/4 инч

- Нуруу: 13 3/4 инч X 15 1/2 инч

- Топ: 13 3/4 инч X 6 1/2 инч

- Урд талын доод хэсэг: 13 3/4 инч X 4 1/4 инч

- Залгах самбар: 13 3/4 инч X 6 инч

- Дотор талын дээд хэсэг: 13 3/4 инч X 3 1/4 инч

- LED салаа: 6 1/4 инч X 1 инч (эдгээрийн хоёрыг хайчилж ав)

- Дотор LED доод хэсэг: 13 1/4 инч X 4 1/2 инч

- дотоод арын LED самбар: 13 1/4 инч X 9 инч

- Блок: 1 инч X 1 инч X 1 инч (10 блок хайчилж ав)

- Нийлэг хавтан: 13 3/4 инч X 6 1/2 инч

Дээрх зургууд нь хажуугийн хажуугийн хэсгийн өнцөг, хэмжээг харуулах болно. Мөн та энэ хэсгийн хоёр хэсгийг таслах хэрэгтэй болно

Алхам 4: Кейс угсралт

Кейс угсралт
Кейс угсралт
Кейс угсралт
Кейс угсралт
Кейс угсралт
Кейс угсралт

Эдгээр зааврын дагуу та бүх зүйлийг бараг дуусгасан. Надад эдгээр бүх хэсгүүд, хайчилбарууд байгаа гэж бодож магадгүй. Энэхүү эцсийн алхам нь таны хэргийг хэрхэн яаж угсрах талаар зааж өгөх болно.

-Бидний хийх гэж буй хамгийн эхний зүйл бол хэргийг угсарч эхлэх явдал юм. Энд өмнөх алхамаас модон хайчлах бүх зүйл хэрэгтэй болно.

-Угсрах ажлыг эхлүүлэхийн тулд 1х1х1 хэмжээтэй модны 4 суурийг, хажуугийн хоёр самбар, арын болон урд талын ёроолыг авах шаардлагатай болно. 4 блокыг ёроолын өнцөг булан бүрт байрлуулж, хоёр дахь зурагт үзүүлсэн шиг ирмэг ба блокны хоорондох дөрөвний нэг инчийг алхам хийхдээ үлдээгээрэй.

-Дараагийнх нь мод, блокуудын дундуур нисгэгч цооног өрөмдөх шаардлагатай болно. тэр боолтыг хийсний дараа доод тал руу нь.

-Дараа нь бид хажуугийн хавтанг суурилуулах болно. Блокны гадна талын дөрөвний нэг инчийн цоорхойд хавтангуудыг байрлуул. Хажуугийн самбар ба модон блокоор туршилтын цооног өрөмдөж, хавтангуудыг шураг руу шургуул.

-Хажуугийн хавтанг хийж дууссаны дараа. бид урд талын доод самбарыг байрлуулах болно. самбарыг доод тал руу нь тэгшхэн байрлуулж, хажуу талууд нь туршилтын нүхийг блок руу өрөмдөж, самбарыг шургуулна.

-Эцэст нь бид нуруугаа тавих болно. Доод талын урд талын самбартай адилхан хийж, буцааж шургуулна.

-Энэ үед та энэ суурийг бий болгох үндэс суурьтай болж, энэ хэргийг хэрхэн угсарч байгаа талаар ойлголттой боллоо.

-Дараагийн хэсэг нь та арай бага талбайтай ажилладаг тул арай илүү төвөгтэй юм. Эхлэхийн тулд бидэнд бүх дээд хэсэг, 6 блок хэрэгтэй болно.

-Өнөөг хүртэл барьсан зүйлээ нуруун дээр нь тавиад блокуудыг дээрээс нь дөрөвний нэг инчийн зайд буланд байрлуул. (эхэнд гурав дахь зурагт үзүүлсэн шиг)

-Туршилтын хажуу ба арын нүхийг өрөмдөж шургуулна.

-Одоо бид үлдсэн хэсгийг нь угсрах болно

-Дээд самбараа аваад блок дээр байрлуулаад туршилтын цооног өрөмдөж, дээд хэсгийг нь шургуулна. Финлянд хэлийг угсрахдаа угсрах хэсгийг болгоомжтой эргүүлээд *** булан бүрт ирмэгийг зэрэгцээ байрлуулна. хажуугийн самбараас туршилтын цооног өрөмдөж блок руу шургуулна. хэргийг босоогоор нь эргүүлж, дээд хэсэгт блок руу цооног өрөмдөж шургуулна.

-Энэ үүр хэсэг нь жаахан төвөгтэй юм. танд урд талын дээд самбар, эцсийн хоёр блок хэрэгтэй болно. Нэгдүгээр туршилтын цооногийг урд талын дээд самбараар дамжуулан өмнөх блокуудад өрөмдөж, шургуулна уу. Одоо та эцсийн хоёр блокыг аваад буланд дотор нь байрлуулж, хажуугийн самбар, урд талын дээд самбараа блок руу шургуул. Дахин хэргийг эргүүлээд дотор талын дээд самбарыг блок дээр байрлуулаад шургуул.

-Танд ийм зүйл үлдэх ёстой (энэ алхамын эхний зурган дээр харуулав)

Дараагийн алхам нь чуулганы үлдсэн хэсгийг тайлбарлах болно.

Алхам 5: Чуулганы ажлыг дуусгах

Чуулган дуусч байна
Чуулган дуусч байна
Чуулган дуусч байна
Чуулган дуусч байна
Чуулган дуусч байна
Чуулган дуусч байна

Энэ үед та хэрэг, бүтээн байгуулалтыг бараг дуусгасан бөгөөд хэдхэн зүйлийг байрлуулах хэрэгтэй болно.

Одоо электрон төхөөрөмж суурилуулах л үлдлээ.

-Бид таны потенциометрийн залгах самбарыг цооног өрөмдөж эхэлнэ. эвтэйхэн гэж бодож байгаа газраа цооног өрөмдөхөд чөлөөтэй байгаарай. Миний хувьд би потенциометрийн хувьд доороос 2 1/2 инч, хажуу талаас 3 1/2 инч нүх байрлуулсан байна.

-Та цооног өрөмдсөний дараа бид энэ самбарыг хайрцган дээр байрлуулах болно. Гэхдээ бид үүнийг шургуулахын оронд наалдуулах болно, зөвхөн хайрцгийн ирмэг дээр маш их хэмжээний цавуу тавьж, самбарыг байрлуулж, хавчаар эсвэл хүнд зүйлээр барь.

-Цавууг хатааж дууссаны дараа бид электрон эд ангиудыг оруулах болно. Гэхдээ эхлээд бид арын самбарыг салгах хэрэгтэй болно.

-Нуруугаа унтраасны дараа гэр болон бусад эд ангиудыг дотогш оруулах ажлыг хөнгөвчлөхийн тулд хэргийг урд талд нь байрлуулахыг зөвлөж байна.

-Одоо танд нуруу байгаа тул бид потенциометрийг дөнгөж өрөмдсөн цооногоороо хийж, халуун цавуугаар арвижуулж хайрцаг дотор байрлуулах болно.

*** Анхааруулга ***-Гагнуурын цэгүүд эмзэг байж болзошгүй тул LED массивыг тавихдаа маш болгоомжтой байгаарай.

-Одоо бид хамгийн чухал хэсэгт хүрч, удирдсан массивыг орууллаа. самбарыг хоёр дахь зурагт үзүүлсэн шиг байрлуулна уу.

-Нэгэнт удирдсан дотоод самбараа авч, кэйс дотор LED массивын арын самбарын доор байрлуулна уу. энэ хэсэг надад хатуу тохирох байх. мөн үргэлжлүүлэхийн өмнө хатаана.

-Та сүүлийн хэсэгт хүрсэн байна. LED ба энэ хэсгийг хооронд нь ялгахын тулд би эцсийн хэсгийг (LED дотор талын арын хэсэг) нэг талыг нь хар эсвэл цагаан будгаар будахыг зөвлөж байна.

-Бид үүнийг LED арын ард шууд байрлуулж, LED -ийн арын хэсэгт бага зэрэг дарж хөдөлгөхгүй байх болно. хөдлөхгүйн тулд ирмэгийн дагуу цавуу түрхээрэй. гурав дахь зурагт үзүүлэв.

**** Та бүх чуулганыг дуусгасанд баяр хүргэе !!!

тоглоомыг кодлох сүүлчийн алхам хүртэл үргэлжлүүлээрэй

Алхам 6: Код

Өдий зэрэгтэй явж байгаад дахин баяр хүргэе.

Энэ хэсэгт би код болон үүнийг хэрхэн яаж ажиллуулахыг кодын зүйлээс гадна өөрчилж, хувийн болгох боломжтойг үзүүлэх болно.

гэхдээ үүнийг оруулахаас өмнө танд (adafruit_NeoPixel-master) хэрэгтэй болно.

Мастер суулгахын тулд arduino програмаа нээнэ үү

1. ноорог хийх

2. нээлттэй номын сан орно

3. дарна уу (add.zip номын сан)

4. (adafruit_NeoPixel-master) файлыг сонгоод хийж дуусга

Үүний доор би тоглоомын кодыг буулгасан.

#оруулах

#оруулах

урт ballXabs = 12;

урт бөмбөгYabs = 4;

int ballX;

int ballY;

int ballvelX = 1;

int ballvelY = 1;

int индекс;

int fps = 50;

int paddlewidth = 3;

int paddlemax = 9 - сэлүүрийн өргөн + 1;

int knobseg = 1023 / (paddlemax);

int сэлүүр1 = 4;

int сэлүүр2 = 4;

#тодорхойлох NUMPIXELS 260

#PIN 6 тодорхойлох

Adafruit_NeoPixel пиксел = Adafruit_NeoPixel (NUMPIXELS, PIN6, NEO_GRB + NEO_KHZ800);

хүчингүй тохиргоо () {

пиксел.begin ();

Цуваа эхлэх (9600);

}

void loop () {

clearScreen ();

updateBall ();

updatePaddle1 ();

updatePaddle2 ();

дэлгэцийн бөмбөг ();

displayPaddle1 ();

displayPaddle2 ();

пиксел.шоу ();

detectCollision ();

саатал (fps);

}

void clearScreen () {

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

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

}

}

хүчингүй updateBall () {

ballXabs += ballvelX;

ballYabs += ballvelY;

}

хүчингүй илрүүлэхCollision () {

Цуваа.хэвлэх (ballYabs);

Serial.print ("");

Serial.println (сэлүүр1);

if (ballvelX> 0 && ballXabs> = 25) {// баруун хана мөргөлдөх

Serial.println ("CollisionX");

оноо1 (); // ballvelX*=-1;

}

if (ballvelX <0 && ballXabs <= 0) {// зүүн хана мөргөлдөх

Serial.println ("CollisionX");

оноо2 (); // ballvelX*=-1;

}

if (ballvelY> 0 && ballYabs> = 9) {// дээд хана мөргөлдөх

Serial.println ("CollisionY"); ballvelY *= -1;

}

if (ballvelY <0 && ballYabs <= 0) {// доод хана мөргөлдөх

Serial.println ("CollisionY");

ballvelY *= -1;

}

// сэлүүр 2 мөргөлдөөнийг илрүүлэх

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

{// баруун хана мөргөлдөх

Serial.println ("CollisionPaddle");

ballvelX *= -1;

}

// сэлүүр 1 мөргөлдөөнийг илрүүлэх

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

{// баруун хана мөргөлдөх

Serial.println ("CollisionPaddle");

ballvelX *= -1;

}

}

хүчингүй updatePaddle1 () {

int бариул = analogRead (A0);

сэлүүр1 = дугуй ((урт) бариул / (урт) бариул);

}

хүчингүй updatePaddle2 () {

int knob2 = analogRead (A1);

сэлүүр2 = дугуй ((урт) бариул2 / (урт) бариул);

}

void displayBall () {

ballX = дугуй (ballXabs);

ballY = дугуй (ballYabs);

хэрэв (ballX % 2! = 0) {

индекс = (9 - ballY) + 10 * ballX;

хэрэв (ballX! = 0) {

pixel.setPixelColor (ballY + 10 * (ballX - 1), пиксел Өнгө (30, 0, 0)); // бөмбөгний зүүн тал

}

if (ballX! = 25) {piksel.setPixelColor (ballY + 10 * (ballX + 1), пиксел. Color (30, 0, 0)); // бөмбөгний өнгөний баруун тал

}

if (ballY! = 9) {piksel.setPixelColor (индекс - 1, пиксел. Өнгө (30, 0, 0)); // бөмбөгний өнгөний доод талууд

}

if (ballY! = 0) {piksel.setPixelColor (индекс + 1, пиксел. Өнгө (30, 0, 0)); // бөмбөгний өнгөний дээд талууд

}

}

өөр {

индекс = бөмбөгY + 10 * ballX; хэрэв (ballX! = 0) {

piksel.setPixelColor ((9 - ballY) + 10 * (ballX - 1), пиксел. Color (30, 0, 0)); // бөмбөгний тэгш эгнээний зүүн тал

}

хэрэв (ballX! = 25) {

pixel.setPixelColor ((9 - ballY) + 10 * (ballX + 1), пиксел. Color (30, 0, 0)); // бөмбөгний тэгш эгнээний баруун тал

}

хэрэв (ballY! = 9) {

piksel.setPixelColor (индекс + 1, пиксел. Өнгө (30, 0, 0)); // бөмбөгний тэгш эгнээний доод талууд

}

if (ballY! = 0) {piksel.setPixelColor (индекс - 1, пиксел. Өнгө (30, 0, 0)); // бөмбөгний тэгш эгнээний дээд талууд

}

}

pixel.setPixelColor (индекс, пиксел өнгө (255, 0, 0)); /// бөмбөгний өнгөний төв

}

void displayPaddle1 () {

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

}

}

void displayPaddle2 () {

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

}

}

хүчингүй оноо1 () {

resetBall (0);

}

хүчингүй оноо2 () {

resetBall (1);

}

void resetBall (int тоглуулагч) {

саатал (1000);

ballXabs = 12

; ballYabs = 4;

ballvelX = тоглогч уу? 1: -1;

ballvelY = 1;

clearScreen ();

саатал (1000);

дэлгэцийн бөмбөг ();

пиксел.шоу ();

саатал (1000);

displayPaddle1 ();

displayPaddle2 (); пиксел.шоу (); саатал (2000); }

Алхам 7: дуусгах

Дуусгаж байна
Дуусгаж байна

Кодыг байршуулсны дараа арын самбар дээр торхны цахилгаан тэжээлийн адаптерт хангалттай том нүх гарга. Үүнийг arduino -д залгаад эцэст нь ар талыг нь угсарна уу.

Би мөн эд ангиудын жагсаалтад LED диффузор акрилийг оруулсан бөгөөд үүнийг одоо LED дээр байрлуулж нааж болно.

Үүнийг хийсний дараа та гэр бүл, найз нөхдийнхөө эсрэг өрсөлдөхүйц тоглоом тоглох, тоглоход бэлэн байна.

Эцэст нь би төслийг дуусгасанд баяр хүргэхийг хүсч байна.

Хэрэв танд ямар нэгэн асуудал байвал надтай холбоо бариарай, би асуудлыг шийдвэрлэхэд туслах болно.

Зөвлөмж болгож буй: