Мазмуну:

LED Strip Atari Pong Аркада машинасы: 8 кадам
LED Strip Atari Pong Аркада машинасы: 8 кадам

Video: LED Strip Atari Pong Аркада машинасы: 8 кадам

Video: LED Strip Atari Pong Аркада машинасы: 8 кадам
Video: MSC Seascape Full Ship Tour Tips Tricks & Review New Flagship Vista Megaship Project Italy 2024, Июль
Anonim
LED Strip Atari Pong аркада машинасы
LED Strip 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-

- бир нече метр зым же бир нече түстөгү зым

- AC токтун адаптеринен 6v баррель джек розеткасы аркылуу чыгат

- 1 arduino Uno R3

Эгерде сизде Arduino Uno R3кө кирүү мүмкүнчүлүгүңүз жок болсо, анда мен бул долбоордо колдоно турган нерсени кура алам, ал atmel328-pu процессорун колдонот. Бул шилтеме аркылуу өзүңүздүн https://www.instructables.com/id/How-to-make-your-own-Arduino-board/ курууну үйрөнүңүз.

Эгерде сиз 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 -кадам: Paddle Controls

Paddle Controls
Paddle Controls
Paddle Controls
Paddle Controls
Paddle Controls
Paddle Controls

Бул абдан жөнөкөй кадам үчүн, сиз болгону ар бир потенциометрге үч зым менен ширетүүңүз керек. Эгер потенциометрди ширетүү чекиттери сизден алыс кармалса, сол тиш оң болот, ал эми борбордук тиш оң болот. жогорудагы диаграммада көрсөтүлгөндөй

зымдарды туташтыргандан кийин, биз аларды Arduino менен байланыштырабыз. Сиздин позитивдүү жана терс жактарыңыз ошол жерге оң жана терс жамгырга туташат. потенциометрдеги зымдарды чыгарсаңыз, ардуинодогу ар кандай кирүүлөргө туташат. бири (A0) сайгычына, экинчиси (A1) сайгычына туташат.

3 -кадам: ишти кыскартуу

Ишти кесүү
Ишти кесүү
Ишти кесүү
Ишти кесүү
Ишти кесүү
Ишти кесүү
Ишти кесүү
Ишти кесүү

бул бөлүк сизге кесүү керек болгон нерселердин өлчөмдөрүн жана бурчтарын берет

**** абдан маанилүү ***** жыгачыңыздын чейрек дюйм калыңдыгын (1/4 дюйм) текшериңиз

Ошондой эле бөлүктөрдү кесип жатканда тетиктериңизди белгилөөнү унутпаңыз

кесиле турган негизги бөлүк ылдый, арт, үстү, алдыңкы үстү, алдыңкы түбү деп жазылат…. башында сүрөттөрдө көрсөтүлгөн

бөлүк өлчөмдөрү

- Төмөндө: 13 3/4 дюйм X 10 1/4 дюйм

- Артка: 13 3/4 дюйм X 15 1/2 дюйм

- Top: 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 -кадам: Case Ассамблеясы

Case Assembly
Case Assembly
Case Assembly
Case Assembly
Case Assembly
Case Assembly

Бул көрсөтмөлөрдүн ушул пунктунда сиз дээрлик баарын бүтүрдүңүз. Сиздин оюңузча, менде ушул бөлүктөр жана кесилиштер бар, алар менен эмне кылам. Бул акыркы кадам сиздин ишиңизди кантип чогултууну үйрөтөт.

-Эң биринчи биз корпусту чогулта баштайбыз. Бул жерде мурунку кадамдан жыгачтан жасалган бардык нерселер сизге жардам берет.

-Монтажды баштоо үчүн бизге 1x1x1 жыгачтан 4 блок керек, эки каптал панели, арткы жана алдыңкы түбү. 4 блокту түбүнүн ар бир бурчуна коюп, кадамдын жалынышында экинчи сүрөттө көрсөтүлгөндөй четинен жана блоктун ортосунда чейрек дюйм калтырыңыз.

-Андан кийин жыгачтан жана блоктордон бир нече пилоттук тешиктерди буруш керек. бул бураманы кылгандан кийин түбүнө чейин.

-Кийинки учурда каптал панелдерди орнотобуз. Панелдерди блоктун сырт жагындагы чейрек дюймдук боштукка коюңуз. каптал панели жана жыгач блогу аркылуу пилоттук тешикти бургула жана панелдерди бурап койгула. экинчи тарап үчүн дагы кайталаңыз.

-Капталдагы панелдерди бүтүргөндөн кийин. биз алдыңкы астындагы панелди коёбуз. панелди түбү менен бирдей жайгаштырыңыз жана капталдары пилоттук тешиктерди блокторго бургулап, панелди бурап салыңыз.

-Акырында биз артка кайтабыз. алдыңкы астынкы панелинде болгондой кылып, кайра бурап коюңуз.

-Бул учурда сизде пайдубал түзүлөт жана бул ишти кантип чогултканыбыз жөнүндө түшүнүк бар.

-Бул кийинки бөлүк бир аз татаалыраак, анткени сиздин кичинекей аймак менен иштөөңүз. баштоо үчүн бизге бардык жогорку бөлүктөр жана 6 блок керек болот.

-Азыркыга чейин курганыңарды чалкасынан жаткыла жана блокторду чокудан өйдө бурчка койгула. (башында үчүнчү сүрөттө көрсөтүлгөндөй)

-пилоттук каптал жана арткы тешиктерди бургулап, бурап салыңыз.

-эми калганын үстүнкү бөлүгүн чогултабыз

-үстүңкү панелди алып, блокторго койгула, учкуч тешиктерди бургулап, үстүн бурагыла. Финляндиядан кийин ассамблеяңызды оодарып *** кылдаттык менен *** жана ар бир бурчка четине параллель кой. каптал панелдерден пилоттук тешиктерди бургулап, аларды блокко бурап салыңыз. корпусту кайра артка буруп, блоктордун үстүнөн пилоттук тешиктерди бургулап, бурап алыңыз.

-бул уя бөлүгү бир аз татаал. сизге алдыңкы панель жана акыркы эки блок керек болот. адегенде алдыңкы панел аркылуу мурунку блокторго пилоттук тешиктерди бургула жана бурап койгула. Эми акыркы эки блокту алып, аларды бурчка салып, каптал панелиңизди жана алдыңкы алдыңкы панелди блокторго бурап коюңуз. Дагы бир жолу ишти тескери буруп, ички үстүңкү панелди блокко коюп, бурап салыңыз.

-сизге ушундай нерсе калтырыш керек (бул кадамдын биринчи сүрөтүндө көрсөтүлгөн)

кийинки кадам жыйындын калган бөлүгүн түшүндүрөт.

5 -кадам: Ассамблеяны бүтүрүү

Ассамблеяны бүтүрүү
Ассамблеяны бүтүрүү
Ассамблеяны бүтүрүү
Ассамблеяны бүтүрүү
Ассамблеяны бүтүрүү
Ассамблеяны бүтүрүү

Бул учурда, сиз ишти аягына чейин бүтүрдүңүз жана бир нече нерселерди түзүп койсоңуз болот.

Эми электрониканы орнотуу гана калды.

-Биз потенциометр үчүн терүү панелине тешик буруудан баштайбыз. ыңгайлуу болот деп ойлогон жерлериңизди бургулаңыз. менин учурда мен тешиктерди потенциометрлер үчүн астынан 2 1/2 дюйм жана капталынан 3 1/2 дюйм койдум.

-Сиз тешиктериңизди тешкенден кийин, биз бул панелди корпустун үстүнө коебуз. бирок аны бурап койгондун ордуна, биз аны желимдейбиз, корпустун четине көп өлчөмдөгү желим салып, панелди коюп, кыскычтар же оор нерсе менен кармаңыз.

-Клей кургатып бүткөндөн кийин биз электрондук бөлүктөрүн салып беребиз. Бирок адегенде биз арткы панелди алып салышыбыз керек.

-Арткы жагы өчкөндөн кийин, мен сизге диодду жана башка компоненттерди ичине коюуну жеңилдетүү үчүн корпусту алдыңкы жагына коюуну сунуштайм.

-Эми сиз артка тартканыңыздан кийин, биз потенциометрди корпустун ичине жай эле биз тешкен тешиктер аркылуу салып, эбегейсиз ысык клей салып койобуз.

*** этият болуңуз ***-LED массивин киргизүүдө өтө этият болуңуз, анткени ширетүү пункттары морт болушу мүмкүн.

-Эми биз эң маанилүү бөлүккө жетип, LED массивин киргиздик. тактайды экинчи сүрөттө көрсөтүлгөндөй жайгаштырыңыз.

-Бир жолу ички панелди алып, аны корпустун ичине LED массивинин арткы панелинин астына коюңуз. бул бөлүк мага бекем дал келиши мүмкүн. улантуудан мурун кургатыңыз.

-Акыркы бөлүккө жеттиңиз. Мен бул акыркы бөлүктүн бир тарабын (LED Ички Арткы) кара же ак түс менен светодиоддор менен бул бөлүктүн ортосундагы карама -каршылыкты сунуштайм.

-Биз муну түздөн -түз LED колдоосунун артына жайгаштырып, аларды кыймылга келтирбөө үчүн жарыктын артына жеңил басабыз. бир жолу жылып кетпеши үчүн четине клей сүйкөп коюңуз. үчүнчү сүрөттө көрсөтүлгөн.

**** Куттуктайм, сиз жыйынды бүтүрдүңүз !!!

оюнду коддоо үчүн акыркы кадамды улантыңыз

6 -кадам: Кодекс

Дагы бир жолу ушул даражага жеткениңиз менен куттуктайм.

бул бөлүмдө мен сизге кодду жана анын иштешин коддогу нерселерге кошумча кылып өзгөртүп, жекечелештире алаарыңызды көрсөтөм.

бирок биз кире электе сизге (adafruit_NeoPixel-master) керек болот, мен дагы жүктөөнү байланыштырдым.

мастерди орнотуу үчүн arduino программаңызды ачыңыз

1. эскизге баруу

2. ачык китепкана кирет

3. чыкылдатуу (add.zip китепканасы)

4. (adafruit_NeoPixel-master) файлын тандаңыз жана бүтүрдүңүз

төмөндө мен оюндун кодун чаптадым.

#кошуу

#кошуу

long ballXabs = 12;

long ballYabs = 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 paddle1 = 4;

int paddle2 = 4;

260

#аныктоо PIN 6

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

жараксыз орнотуу () {

piksel.begin ();

Serial.begin (9600);

}

void loop () {

clearScreen ();

updateBall ();

updatePaddle1 ();

updatePaddle2 ();

displayBall ();

displayPaddle1 ();

displayPaddle2 ();

piksel.show ();

detectCollision ();

кечигүү (fps);

}

жараксыз clearScreen () {

үчүн (int i = 0; i <NUMPIXELS; i ++) {

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

}

}

жараксыз updateBall () {

ballXabs += ballvelX;

ballYabs += ballvelY;

}

void detectCollision () {

Serial.print (ballYabs);

Serial.print ("");

Serial.println (калак1);

if (ballvelX> 0 && ballXabs> = 25) {// оң дубалды сүзүшөт

Serial.println ("CollisionX");

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

}

if (ballvelX <0 && ballXabs <= 0) {// сол дубалды сүзүшөт

Serial.println ("CollisionX");

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

}

if (ballvelY> 0 && ballYabs> = 9) {// жогорку дубалды сүзүшөт

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

}

if (ballvelY <0 && ballYabs <= 0) {// астынкы дубалды сүзүшөт

Serial.println ("CollisionY");

ballvelY *= -1;

}

// калак 2 кагылышуусун аныктоо

эгер ((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 / (узун) кнопсег);

}

жараксыз displayBall () {

ballX = тегерек (ballXabs);

ballY = тегерек (ballYabs);

эгер (ballX % 2! = 0) {

индекс = (9 - шарY) + 10 * ballX;

эгер (ballX! = 0) {

pixel.setPixelColor (ballY + 10 * (ballX - 1), пиксел. Color (30, 0, 0)); // түстүү түстүн сол жагы

}

if (ballX! = 25) {piksel.setPixelColor (ballY + 10 * (ballX + 1), пиксел. Color (30, 0, 0)); // шар түстүн оң жагы

}

if (ballY! = 9) {piksel.setPixelColor (индекс - 1, пиксел. Color (30, 0, 0))); // шар түстүн астыңкы капталдары

}

if (ballY! = 0) {piksel.setPixelColor (индекс + 1, пиксел. Color (30, 0, 0))); // топтун түсүнүн үстү жагы

}

}

башка {

индекс = шарY + 10 * ballX; эгер (ballX! = 0) {

pixel.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) {

pixel.setPixelColor (индекс + 1, пиксел. Color (30, 0, 0)); // топтун астынкы жагы жуп катар

}

if (ballY! = 0) {пиксель.setPixelColor (индекс - 1, пиксел. Color (30, 0, 0)); // топтун үстү жагы жуп катар

}

}

pixel.setPixelColor (индекс, пиксел. Color (255, 0, 0)); /// топтун түсүнүн борбору

}

жараксыз DisplayPaddle1 () {

үчүн (int i = 0; i <paddlewidth; i ++) {pixel.setPixelColor (paddle1+i, pixel. Color (0, 0, 255));

}

}

жараксыз DisplayPaddle2 () {

for (int i = 0; i <paddlewidth; i ++) {pixel.setPixelColor (NUMPIXELS - 1 - paddle2 - i, пиксел. Color (0, 0, 255));

}

}

жараксыз балл1 () {

resetBall (0);

}

жараксыз балл2 () {

resetBall (1);

}

void resetBall (int player) {

кечигүү (1000);

ballXabs = 12

; ballYabs = 4;

ballvelX = оюнчу? 1: -1;

ballvelY = 1;

clearScreen ();

кечигүү (1000);

displayBall ();

piksel.show ();

кечигүү (1000);

displayPaddle1 ();

displayPaddle2 (); piksel.show (); кечигүү (2000); }

7 -кадам: бүтүрүү

Аяктоо
Аяктоо

Сиз кодду жүктөгөндөн кийин, арткы панелде сиздин баррель джек кубат адаптериңиз үчүн чоң тешик жасаңыз. аны ардуиного туташтырып, акыры арткы бөлүгүн кайра чогултуп алыңыз.

Мен ошондой эле бөлүктөрдүн тизмесине LED диффузорунун акрилин коштум, эми сиз аны светодиоддордун үстүнө коюп, жабыштыра аласыз.

Муну аткаргандан кийин, сиз үй -бүлөңүзгө жана досторуңузга каршы атаандаштык оюндарынын сааттарын ойноого жана ырахат алууга даярсыз.

Акырында мен сизди долбоорду аяктаганыңыз менен куттуктагым келет.

Эгерде сизде кандайдыр бир көйгөйлөр болсо, мага ушул жерден кайрылыңыз жана мен маселени чечүүгө жардам бергим келет.

Сунушталууда: