Мазмуну:
- 1 -кадам: LED массивин куруу
- 2 -кадам: Paddle Controls
- 3 -кадам: ишти кыскартуу
- 4 -кадам: Case Ассамблеясы
- 5 -кадам: Ассамблеяны бүтүрүү
- 6 -кадам: Кодекс
- 7 -кадам: бүтүрүү
Video: LED Strip Atari Pong Аркада машинасы: 8 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Менин атым Габриэль Подевин жана бул менин эң биринчи киргизилбес сөзүм. Мен азыр 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 массивин куруу
Бул кадам, сиз жасашыңыз керек болгон бардык ширетүүгө байланыштуу, убакытты талап кылган эң жөнөкөй кадам.
-Баштоо үчүн сизге 10 3/4 дюймдан 6 1/2 дюйм жыгач керек болот.
-бир жолу жыгачыңызды алсаңыз, Led тилкесиңизди кармап, ар бир 10 людстун же 6 1/2 дюймдун 26 сегментин кесиңиз.
-сегменттерди кескенден кийин, аларды үстүңкү вертикалдуу түрдө жыгачыңызга чаптаңыз, жогорудагы биринчи сүрөттө көрсөтүлгөн төмөнкү сүрөттөрдөгүдөй.
-тилкелерди ылдый чаптап койгондон кийин, биз ширетүүнү баштайбыз.
-сизге үч түрдүү түстөгү зым керек болот
-ал бардык зымдарды бир зымга, ал эми бардык терс жактарын бир зымга туташтыруу керек, ал эми акыркы зым алып келген тилкелерди бириктирет. Бул кадамдын башындагы экинчи сүрөттөр зымдарды кантип туташтыруу керек экенин көрсөтүүчү диаграмма.
-Акырында, сиз аларды ширеткенден кийин, жөн гана тиешелүү түстөр менен ширетүүчү туташууларыңызга электр тилкесин ороп коёсуз. үчүнчү сүрөттө көрсөтүлгөндөй.
-акыры биз Arduino менен туташабыз. сиздин санариптик киришиңиз же ортоңку зымыңыз сизге 6 санариптик кириш менен туташат жана сиздин жериңиз жана позитивиңиз тактадагы оң жана терс рельстерге туташат.
2 -кадам: 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 Ассамблеясы
Бул көрсөтмөлөрдүн ушул пунктунда сиз дээрлик баарын бүтүрдүңүз. Сиздин оюңузча, менде ушул бөлүктөр жана кесилиштер бар, алар менен эмне кылам. Бул акыркы кадам сиздин ишиңизди кантип чогултууну үйрөтөт.
-Эң биринчи биз корпусту чогулта баштайбыз. Бул жерде мурунку кадамдан жыгачтан жасалган бардык нерселер сизге жардам берет.
-Монтажды баштоо үчүн бизге 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 диффузорунун акрилин коштум, эми сиз аны светодиоддордун үстүнө коюп, жабыштыра аласыз.
Муну аткаргандан кийин, сиз үй -бүлөңүзгө жана досторуңузга каршы атаандаштык оюндарынын сааттарын ойноого жана ырахат алууга даярсыз.
Акырында мен сизди долбоорду аяктаганыңыз менен куттуктагым келет.
Эгерде сизде кандайдыр бир көйгөйлөр болсо, мага ушул жерден кайрылыңыз жана мен маселени чечүүгө жардам бергим келет.
Сунушталууда:
Аркада машинасы: 5 кадам
Үстөл аркада машинасы: Бул долбоор эски dell жумушчу станциясынан жасалган рабочий аркада машинасы. Кызыккандар үчүн, компьютерде 8 ГБ DDR3 эс тутуму (4 x 2 ГБ), Intel Core i3 жана 300 ватт кубаттуулугу бар. Эч кандай графикалык карта кереги жок, анткени эски оюндар жок
LED маркасын өзгөртүү менен аркада машинасы: 5 кадам (сүрөттөр менен)
Аркада машинасы LED маркасын өзгөртүү менен: Талап кылынган бөлүктөр: Сиз инструкциядагы файлдарды колдонуп же лазердик кескичке кире албагандар үчүн LED маркасын орното аласыз, ал дагы толугу менен чогултулган. LED Marquee
Аркада машинасы NES контролерунда .: 5 кадам
Аркада машинасы NES контролерунда .: Сиз эски жана сынган NES контроллери менен бир нерсе кылгыңыз келеби? Алар жөн эле ыргытып жиберүү үчүн өтө баалуу көрүнөт, бирок жип үзүлгөндөн кийин, аларга жаңы жашоо берүү үчүн эч нерсе таппасаңыз, негизинен эч нерсеге жараксыз! Мен аларды айкалыштырууну жакшы көрөм
DIY Аркада машинасы: 4 кадам
DIY Аркада машинасы: Бул долбоор Оснабрюк прикладдык илимдер университетиндеги биздин долбоор жумалыгынын алкагында жасалды. Ал буга чейин жеткиликтүү болгон көрсөтмөлөрдөн шыктандырылган: Arcade Spielekonsole Mit Raspberry Pi Barcade Аркадия Аркадий машинасы болгондон кийин
Модулдук Аркада машинасы: 12 кадам
Модулдук аркада машинасы: Менин эки балам экөөбүз аркада машинасын кургубуз келген, бирок биз толук туруучу шкафтын, бардын үстүндө же мушташ таякчасынын консолуна сыналгыга туташтыра турган түрдү чече алган жокпуз. Акыры биз үчөөнү тең кура алабыз деп ойлодук