Мазмұны:

Арка ойынының стекерлері: 6 қадам (суреттермен)
Арка ойынының стекерлері: 6 қадам (суреттермен)

Бейне: Арка ойынының стекерлері: 6 қадам (суреттермен)

Бейне: Арка ойынының стекерлері: 6 қадам (суреттермен)
Бейне: ВЛОГ - ҚАЗАҚ ЮТУБЕРЛЕРІ 40 СУШИ ҮШІН ДОПҚА ТАЛАСТЫ 2024, Қараша
Anonim
Стекерлер аркада ойыны
Стекерлер аркада ойыны

Сәлем балалар, бүгін мен сіздермен Ws2812b светодиоды мен микроконтроллер/FPGA көмегімен жасауға болатын таңғажайып аркада ойынымен бөліскім келеді. Backs Stack Overflow - бұл классикалық аркада ойынының біздің аппараттық қосымшасы. Мектептегі жоба ретінде басталғандар тез арада махаббаттың еңбегіне айналды, өйткені біз өз ойын дамытуға және одан көбірек үйренуге көбірек уақыт бөле бастадық (және xD үдерісіндегі оқуларымызды елемеу). Ақырында, біздің ойын біздің мектептің жақсы құрастырылғанын және оны жақсы қабылдағаны соншалық, оны тәркілеп алды (келесі оқушы тобына демо материал ретінде). Біз әрқашан екіншісін жасай аламыз. Бастайық!

Ойынның онлайн нұсқасы:

1 -қадам: Сізге не қажет?

Саған не қажет?
Саған не қажет?
Саған не қажет?
Саған не қажет?
Саған не қажет?
Саған не қажет?
Саған не қажет?
Саған не қажет?

Материалдар:

1. Микроконтроллер/Микрокомпьютер/FPGA - FPGA біздің ойынның логикасын іске асыру үшін қолданылады. Тақтаны таңдаңыз, біздің жоба үшін бізге Mojo FPGA тақтасын қолдану қажет. Жаңадан бастағандар үшін бұл кодты емес, өз функцияларын жүзеге асыру үшін аппараттық құралдарды қолданатын тақтаның түрі. Демек, мен Arduino немесе Pi қолданғаннан гөрі оның деңгейі өте төмен және мүлдем өзгеше деп айтар едім. Егер сіз басқа тақталарды қолдансаңыз, сіз өзіңіздің кодты жазуыңыз керек, бірақ бұл ойынды кодтау өте оңай және эй! Енді сіз кодтауды да үйрене аласыз!

2. Ws2812b светодиодтары - мұнда біз ойынға арналған дисплей құру үшін жарықдиодты қолданамыз. Егер сіз xD -ге дейін Ws2812b -ке қол тигізбесеңіз, өндіруші бола алмайсыз. Бұл жалғыз светодиодтарды өшіріп, оларды өзіңізге ұнайтын кез келген формаға қоюға болатынын білдіреді. Және бұл RGB - бұл сізге ұнайтын кез келген түсті шығара аласыз. Сонымен қатар, FastLED - Ws2812b басқаруға арналған Arduino кітапханасы өте жақсы дамыған. Егер сізде жоқ болса, адамдарға Arduino -ны FPGA -ның орнына қолдануға кеңес берер едім. Жарық диодтарын Taobao/Amazon -дан сатып алуға болады, бірақ біз өзімізді Сингапурдегі Sim Lim мұнарасынан сатып алдық.

3. Ағаш-Сыртқы корпус үшін біз қалыңдығы 1 см фанераны қолдандық, ал жарықдиодты матрица үшін қалыңдығы 0,3 см фанераны қолдандық. Біз ағаш сынықтарын біздің мектептің фабрикасынан таптық.

4. Жарық диффузиялық акрил - Біздің экранда біз акрилдің әр түрін қолдандық, және біз жарық тарату үшін өте қолайлы PL -422 деп аталатын мұзды акрилді таптық. Егер сіз нақты модельді таба алмасаңыз, аязды акрилді іздеп көріңіз. Біз өзімізді Сингапурдегі Dama Plastics дүкенінен сатып алдық.

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

6. Үлкен қызыл түйме - Жарайды, бізде мұндай қызыл түйменің болуы міндетті емес, бірақ адамдарға батырманы басу әрқашан жақсы! xD Біз оны Сингапурдегі Sim Lim мұнарасынан сатып алдық.

Құралдар:

1. Ағаш желімі

2. Пісіру үтігі

3. Дәнекер

4. Сымдар. Егер сізде қаттылармен салыстырғанда жұмсақ сымдар болса жақсы. Және көп ядролыға қарағанда бір ядролы.

5. Сымды тазартқыш

6. Сым кескіш

7. 1 мм бұрғылармен бұрғылау

8. Айналмалы ара

9. Таспалы аралау

Түзету:

1. Айнымалы қоректендіру блогы

2. Осциллограф

2 -қадам: жылдам прототиптеу

Жылдам прототиптеу
Жылдам прототиптеу
Жылдам прототиптеу
Жылдам прототиптеу
Жылдам прототиптеу
Жылдам прототиптеу
Жылдам прототиптеу
Жылдам прототиптеу

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

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

Біз сондай-ақ жарық диодты жарықтандырғышпен PL-422 қондырмас бұрын әр түрлі акрил үлгілерін сынап көрдік. Сепаратор құрылымы үшін біз жарық диодты толық таралуы үшін әр түрлі биіктікті сынап көрдік. Ақыр соңында біз биіктігі 4 см болатын 3 см*3 см шаршыны диффузия үшін ең жақсы деп түсіндік. Осы оңтайлы өлшемге сүйене отырып, біз квадраттар арасындағы көбік үшін 0,5см бос орын қалдырып, 5х11 жарықдиодты матрица үшін фанераның өлшемі қандай болатынын шештік.

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

3 -қадам: қаптаманы жасау

Қаптаманы жасау
Қаптаманы жасау
Қаптаманы жасау
Қаптаманы жасау
Қаптаманы жасау
Қаптаманы жасау
Қаптаманы жасау
Қаптаманы жасау

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

Фанераның артқы жағында біз электроникаға оңай қол жеткізгіміз келді, сондықтан біз оны құлыпталатын бөлікке айналдырдық, оны сіз қалаған кезде оңай алып тастай аласыз.

Түймені бекіту үшін біз алдымен түйменің микросхемасының диаметрі (түйменің төменгі ұзын бөлігі) көлемінде шеңбер сыздық. Содан кейін біз шетіне жақын тесік бұрғыладық және айналдыруды көру үшін айналдыру арасын қолдандық. Содан кейін біз түймені қойып, оны бұрап қойдық.

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

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

4 -қадам: жарықдиодты матрицаны құру

Жарықдиодты матрицаны құру
Жарықдиодты матрицаны құру
Жарықдиодты матрицаны құру
Жарықдиодты матрицаны құру

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

Біз светодиодтардың әр қатарын Data In and Data Out түйреуіштерімен тізбектейміз және әр GND мен VCC-ді ортақ сымға қосамыз. Жетекші Data In әр жол үшін жарық үлгілерін жасайды және біз оны микроконтроллер/FPGA түйісу нүктесіне қостық. Сондай -ақ, бір жолдың соңғы деректерін басқа жолдың жетекші деректер кірісіне дәнекерлеуге болады. Ws2812b светодиодының жұмыс істеу әдісі - әрбір светодиодта сымнан қажетті деректерді алатын және қалғандарын тізбектен өткізетін IC бар. Біз светодиодты тағы бір керемет нұсқаулыққа негіздедік (біз оны дәл көшірдік! XD)

Мұнда біз жұмсақ сымдарды қолданудың маңыздылығына тоқталғымыз келеді. Егер сіз жетекші Data In түйреуіші үшін қатаң, қатты сымдарды қолдансаңыз, сымды тартқан сайын не болады, ол Ws2812b жастықшасын алып тастауы мүмкін, ол оны бұзады. Бұл жобада біз жұмсақ сымдарға ауыспас бұрын, біз 40 жарықдиодты жойдық, бұл біздің жобаға қажетті жарықдиодтардың 1/3 бөлігі.

Нұсқау:

5 -қадам: ойын кодтарын жазу және жабдықты жөндеу

Ойын кодтарын жазу және жабдықты жөндеу
Ойын кодтарын жазу және жабдықты жөндеу
Ойын кодтарын жазу және жабдықты жөндеу
Ойын кодтарын жазу және жабдықты жөндеу
Ойын кодтарын жазу және жабдықты жөндеу
Ойын кодтарын жазу және жабдықты жөндеу

Mojo Lucid HDL -де жұмыс істейді, ол ең танымал тіл емес. Біз Lucid -те Ws2812b жарықдиодты кітапханаларын таба алмаймыз, сондықтан біз өз кітапханамызды жазуға жүгіндік, бұл өте қызықты тәжірибе. Мұны істеу үшін біз алдымен Arduino FastLED кітапханасының көмегімен жіберілген сигналды талдадық және оны қайталау үшін кодтар жаздық. Міне, аппараттық құралдарды жөндеуге арналған трюк, осциллограф сигналдарды талдау үшін өте пайдалы, егер сіз сенімді болмайтын өзіңіздің сигналды жөндеу немесе басқа сигналдарды тексеру және көшіру.

Ws2812b кітапханасын жазғаннан кейін біз ойын кодына көшеміз, біз әр блокты солға және оңға жылжыту үшін Bit shift функцияларын қолдандық және Bitwise AND -ге және әрбір жолдың квадраттарын алдыңғы жолға қолдандық. Сіз оны Arduino -да енгізу туралы ойлана аласыз, бұл қиын болмауы керек. Біз тіпті қызықты болу үшін ойын экрандарын кодтадық!

Біздің ойынның 2 деңгейі болды, бұл көрінетін стекинг ойыны (Жасыл) және екінші деңгейдегі көрінбейтін стекинг ойыны (Көк).

Бізде жұмыс кодтары мен жұмыс істейтін жарықдиодты матрица болғаннан кейін де, кейде біз әлі де шамдардың жыпылықтауы немесе қажет болмаған кезде шамдардың жануы сияқты проблемаларға тап боламыз. Мәселе әдетте жерге тұйықталудың дұрыс болмауынан, қуат көзінің деңгейінен немесе кедергіден болады. Бұл жерде сізге Mojo/Arduino қуат көзі жеткілікті немесе тым жоғары екенін тексеру үшін ауыспалы қоректендіру блогы сияқты аппараттық құралдарды түзету құралдары қажет болады. Менің тәжірибемде, Ws2812b жұмыс кернеуінің кең диапазоны 2,8 - 5 в аралығында. Менде қуатты көбейткеннен кейін шамдардың жынды болып бара жатқанын көрсететін бейне бар.

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

Github кодтары:

Arduino Bitwise Shift:

Arduino Bitwise AND:

6 -қадам: Барлығын біріктіру

Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру
Барлығын біріктіру

Сізде корпус пен жарық диодты матрица бар. Енді бәрін біріктіретін уақыт келді. Алдымен біз көбікті алдыңғы жағына, ал артқы жағына жарықдиодты матрицаны қойып, позицияны реттедік. Көбіктің үйкелісі өте жоғары болғандықтан, ол тек үйкеліспен орнатылған, ал жарық диодты матрица ыстық желіммен жабыстырылған. Осыдан кейін біз экранды тордың алдына қойдық. Содан кейін біз әр жолдың түйреуішін микроконтроллерге қосып, ойнай бастадық!: D

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

Ұсынылған: