Мазмұны:

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

Бейне: LED Strip Atari Pong аркадалық машинасы: 8 қадам

Бейне: LED Strip Atari Pong аркадалық машинасы: 8 қадам
Бейне: Pong 1D - LED game 2024, Шілде
Anonim
LED Strip Atari Pong аркадалық машинасы
LED Strip Atari Pong аркадалық машинасы

Менің атым Габриэль Подевин және бұл менің бірінші көнбейтін сөзім. Мен қазір 16 жасар мектеп оқушысымын, ол электроникаға, робототехникаға, схемаға және бағдарламалауға қызығушылық танытып, заттарды жасауды және құруды жақсы көреді. Сіз бұл табылмайтын нәрсені таба аласыз деп үміттенемін.

Бұл нұсқаулықта мен сізге ретро стиліндегі Atari Pong ойынын ретро аркадалық корпустың ішінде қалай жасау керектігін көрсетемін. Жобаның демонстрациясы үшін жоғарыдағы бейнені көруге болады, сонымен қатар дайын жобаны және корпусты жалғыз және екі суретте көруге болады. Бұл қиынның соңында мен кодты тереңірек зерттеймін және оны жекелендіру үшін оны қалай өңдеу керектігін айтамын.

Бөліктердің негізгі тізімі келесі бөлімдерге бөлінеді: Құралдар, құрастыру бөлшектері және компоненттер

Сізге қажет құралдар мыналарды қамтиды:

- Бұрғылау

- Пісіру үтігі

- бұрағыш (бұрандалар сәйкес келеді)

- Мультиметр

- айналмалы ара, таспа немесе лазерлік кескіш, егер сізде біреу болса

-Сым кескіш немесе қайшы

- Желім тапанша

Құрастыру үшін сізге қажет бөлшектер кіреді

- Ағаш желімі

- 10 дюймден бір дюймдік ағаш блоктар

- ширек дюймдік ағаштан немесе таңдаулы ағаштан жасалған үлкен парақ

- ұзындығы жарты дюйм болатын 24 бұранда

- 14 x 6,5 дюймдік LED диффузиялық пластик (міндетті емес)

- қызыл және көк электрлік таспа

Сізге қажет компоненттер:

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

- 8 метр жеке адресті жарықдиодты жолақ (бір метрге 30 лед)

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

- бірнеше метрлік сым немесе бірнеше түсті сымдар

- баррель ұясының ашасы арқылы 6В шығатын тұрақты ток адаптері

- 1 arduino Uno R3

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

Егер сіз arduino uno қолдансаңыз, бірінші қадамға өтіңіз.

1 -қадам: жарық диодты массив құру

Жарықдиодты массив құру
Жарықдиодты массив құру
Жарықдиодты массив құру
Жарықдиодты массив құру
Жарықдиодты массив құру
Жарықдиодты массив құру

Бұл қадам - барлық дәнекерлеуге байланысты уақытты қажет ететін қарапайым қадам.

-бастау үшін сізге 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 дюйм

- Жарықдиодты сидинг: 6 1/4 дюйм X 1 дюйм (олардың екеуін кесіңіз)

- Ішкі жарық диоды: 13 1/4 дюйм X 4 1/2 дюйм

- ішкі артқы жарықдиодты панель: 13 1/4 дюйм X 9 дюйм

- Блоктар: 1 дюйм X 1 дюйм X 1 дюйм (10 блокты кесіңіз)

- Акрил панель: 13 3/4 дюйм X 6 1/2 дюйм

Жоғарыдағы суреттер бүйірлік панельдің бұрыштары мен өлшемдерін көрсетеді. сонымен қатар осы бөліктің екеуін кесу қажет болады

4 -қадам: Іс құрастыру

Істерді жинау
Істерді жинау
Істерді жинау
Істерді жинау
Істерді жинау
Істерді жинау

Нұсқаулықтағы осы сәтте сіз бәрін дерлік аяқтадыңыз. Менің ойымша, менде бұл бөлшектер мен қиықтар бар, олармен не істеймін. Бұл соңғы қадам сіздің қапты қалай жинау керектігін көрсетеді.

-Біз бірінші болып корпусты жинай бастаймыз. мұнда алдыңғы қадамнан ағаштан жасалған барлық кесектер пайдалы болады.

-Құрастыруды бастау үшін бізге 1x1x1 көлемді ағаштан 4 блок қажет, екі бүйірлік панель, артқы және алдыңғы түбі. 4 блокты түбінің әр бұрышына қойып, екінші суретте көрсетілгендей жиек пен блок арасында ширек дюйм қалдырыңыз.

-одан кейін ағаш пен блоктардан бірнеше ұшқыш тесіктерді бұрғылау қажет болады. Сіз бұл бұранданы жасағаннан кейін түбіне қарай.

-Келесіде біз бүйірлік тақталарды орнатамыз. Панельдерді блоктың сыртқы жағындағы ширек дюймдік бос орынға қойыңыз. бүйірлік панельден және ағаш блоктан пилоттық тесік бұрғылаңыз және панельдерді бұраңыз. екінші жағынан қайталаңыз.

-Бүйірлік панельдерді аяқтағаннан кейін. біз алдыңғы төменгі панельді қоямыз. панельді төменгі жағымен біркелкі орналастырыңыз, ал бүйірлері блоктарға тесіктерді бұрғылап, панельді бұраңыз.

-Ақырында біз артқы жағын киеміз. Алдыңғы төменгі панельде жасағаныңызды дәл солай жасаңыз және оны қайтадан бұраңыз.

-Осы сәтте сізде бұл істі қалай құрастыру керектігі туралы түсінік бар.

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

-Осы уақытқа дейін салған нәрсені артқы жағына қойыңыз және блоктарды бұрыштардан жоғарыдан ширек дюйм қашықтықта қойыңыз. (басында үшінші суретте көрсетілгендей)

-бүйірлік және артқы жағындағы ұшқыш тесіктерді бұрғылап, бұраңыз.

-енді біз қалған бөлікті жинаймыз

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

-бұл ұя бөлігі сәл күрделі. сізге алдыңғы панель және соңғы екі блок қажет болады. Алдыңғы панель арқылы алдыңғы блоктарға алдымен пилоттық тесіктерді бұрғылаңыз және бұраңыз. Енді сіз соңғы екі блокты алып, оларды бұрышқа қойыңыз, бүйірлік панельді және алдыңғы жоғарғы панельді блоктарға бұраңыз. корпусты тағы бір рет төңкеріп, ішкі үстіңгі тақтаны блокқа қойып, бұраңыз.

-сізге осындай нәрсе қалдыру керек (осы қадамның бірінші суретте көрсетілген)

келесі қадам құрастырудың қалған бөлігін түсіндіреді.

5 -қадам: Ассамблеяны аяқтау

Ассамблеяның аяқталуы
Ассамблеяның аяқталуы
Ассамблеяның аяқталуы
Ассамблеяның аяқталуы
Ассамблеяның аяқталуы
Ассамблеяның аяқталуы

Осы сәтте сіз іс пен құрылысты дерлік аяқтап қойдыңыз, және сіз жасай аласыз.

Енді электрониканы орнату ғана қалды.

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

-Сіз тесіктерді бұрғылағаннан кейін, біз бұл панельді корпусқа қоямыз. оны бұрап қалудың орнына, біз оны желімдейтін боламыз, корпустың шетіне көп мөлшерде желім салып, панельді бекітіп, қысқыштармен немесе ауыр затпен ұстаңыз.

-Желімді кептіру аяқталғаннан кейін біз электронды бөлшектерді саламыз. Бірақ алдымен біз артқы панельді алып тастауымыз керек.

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

-Енді сізде артқы жағыңыз болса, біз потенциометрді корпустың ішіне орналастырамыз, оларды біз бұрғыланған тесіктерден өткізіп, ыстық желімнің мол мөлшерін қоямыз.

*** Абайлаңыз ***-Жарықдиодты массивті қою кезінде өте абай болыңыз, себебі дәнекерлеу нүктелері нәзік болуы мүмкін.

-Енді біз жетекші массивті енгізіп, ең маңызды бөлікке жеттік. тақтаны екінші суретте көрсетілгендей орналастырыңыз.

-Бірден ішкі панельді алып, оны корпустың ішіне жарық диодты жиектің артқы панелінің астына қойыңыз. бұл бөлік маған қатты сәйкес келуі мүмкін. жалғастырмас бұрын оны құрғатыңыз.

-Сіз соңғы бөлімге жеттіңіз. Мен светодиодтар мен осы бөліктің арасындағы контраст үшін осы соңғы бөліктің бір жағын (Ішкі жарықдиодты LED) қара немесе ақ түске бояуды ұсынамын.

-Біз мұны тікелей жарықдиодты артқы жағына қоюды білеміз және оларды жылжытпау үшін жарық диодтардың артқы жағына сәл басыңыз. қозғалмауы үшін шетіне желім жағыңыз. үшінші суретте көрсетілген.

**** сені жиналысты аяқтағаныңмен құттықтаймын !!!

ойын кодтау үшін соңғы қадамды жалғастырыңыз

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

Осы уақытқа дейін жеткеніңіз үшін тағы да құттықтаймын.

бұл бөлімде мен сізге кодты және оны қалай өзгерту керектігін көрсетемін, оны өзгертуге және жекелендіруге болады.

бірақ бұған кіріспес бұрын сізге жүктеуді байланыстырған (adafruit_NeoPixel-master) қажет болады.

мастерді орнату үшін arduino бағдарламасын ашыңыз

1. эскизге өтіңіз

2. ашық кітапхана кіреді

3. басыңыз (add.zip кітапханасы)

4. (adafruit_NeoPixel-master) файлын таңдап, жасаңыз

төменде мен ойынның кодын қойдым.

#қосу

#қосу

ұзын ballXabs = 12;

ұзын доп Ябс = 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;

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 ();

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

detectCollision ();

кідіріс (fps);

}

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

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

pixel.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»);

балл1 (); // ballvelX*=-1;

}

if (ballvelX <0 && ballXabs <= 0) {// сол жақ қабырғаға соқтығысады

Serial.println («CollisionX»);

балл2 (); // ballvelX*=-1;

}

if (ballvelY> 0 && ballYabs> = 9) {// жоғарғы қабырға соқтығысады

Serial.println («СоқтығысуY»); шар деңгейY *= -1;

}

if (ballvelY <0 && ballYabs <= 0) {// төменгі қабырғаға соқтығысады

Serial.println («СоқтығысуY»);

шар деңгейY *= -1;

}

// 2 қалақшаның соқтығысуын анықтау

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

{// оң қабырға соқтығысады

Serial.println («CollisionPaddle»);

ballvelX *= -1;

}

// 1 қалақшаның соқтығысуын анықтау

егер ((ballvelX = paddle1) && (ballYabs <= paddle1 + paddlewidth - 1)))

{// оң қабырға соқтығысады

Serial.println («CollisionPaddle»);

ballvelX *= -1;

}

}

жарамсыз updatePaddle1 () {

int тұтқасы = analogRead (A0);

қалақ1 = дөңгелек ((ұзын) тұтқасы / (ұзын) тұтқасы);

}

жарамсыз updatePaddle2 () {

int тұтқасы2 = analogRead (A1);

қалақ2 = дөңгелек ((ұзын) тұтқасы2 / (ұзын) тұтқасы);

}

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

ballX = дөңгелек (ballXabs);

ballY = дөңгелек (ballYabs);

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

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

егер (ballX! = 0) {

pixel.setPixelColor (ballY + 10 * (ballX - 1), пиксель Түс (30, 0, 0)); // шар бояудың сол жағы

}

if (ballX! = 25) {piksel.setPixelColor (ballY + 10 * (ballX + 1), пиксель. Түс (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) {

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

piksel.setPixelColor (индекс + 1, пиксель. Түс (30, 0, 0)); // доптың жұп қатарының төменгі жақтары

}

if (ballY! = 0) {piksel.setPixelColor (индекс - 1, пиксель. Түс (30, 0, 0)); // доптың жұп қатарының жоғарғы жақтары

}

}

piksel.setPixelColor (индекс, пиксель Түсі (255, 0, 0)); /// шардың центрі

}

жарамсыз displayPaddle1 () {

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

}

}

жарамсыз displayPaddle2 () {

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

}

}

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

resetBall (0);

}

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

resetBall (1);

}

void resetBall (int player) {жарамсыз

кешіктіру (1000);

ballXabs = 12

; ballYabs = 4;

ballvelX = ойыншы? 1: -1;

шар деңгейY = 1;

clearScreen ();

кешіктіру (1000);

displayBall ();

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

кешіктіру (1000);

displayPaddle1 ();

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

7 -қадам: Аяқтау

Аяқталуда
Аяқталуда

Сіз кодты жүктегеннен кейін артқы панельде баррель ұясының қуат адаптері үшін жеткілікті үлкен тесік бұрғылаңыз. оны arduino -ға қосыңыз, соңында артқы жағын қайта жинаңыз.

Мен сонымен қатар бөлшектер тізіміне акрилді жарықдиодты диффузорды енгіздім, енді оны жарықдиодты үстіне қойып, жабыстыруға болады.

Сіз мұны жасағаннан кейін сіз отбасыңызбен және достарыңызбен бәсекелес ойындар ойнауға және ләззат алуға дайынсыз.

Соңында мен сізді жобаның аяқталуымен құттықтағым келеді.

Егер сізде қандай да бір мәселелер туындаса, менімен хабарласыңыз, мен мәселені шешуге көмектесуге дайынмын.

Ұсынылған: