Мазмуну:

Stackers аркада оюну: 6 кадам (сүрөттөр менен)
Stackers аркада оюну: 6 кадам (сүрөттөр менен)

Video: Stackers аркада оюну: 6 кадам (сүрөттөр менен)

Video: Stackers аркада оюну: 6 кадам (сүрөттөр менен)
Video: Ирония судьбы, или С легким паром, 1 серия (комедия, реж. Эльдар Рязанов, 1976 г.) 2024, Ноябрь
Anonim
Stackers Аркада оюну
Stackers Аркада оюну

Салам балдар, бүгүн мен сиздер менен Ws2812b LED диоддору жана микроконтроллер/FPGA менен жасай турган укмуштуудай аркада оюну менен бөлүшкүм келет. Мына Stack Overflow - биздин классикалык аркада оюнунун аппараттык аткарылышы. Мектептин долбоору катары башталган нерсе тез эле сүйүүнүн эмгегине айланды, анткени биз оюнубузду өнүктүрүүгө жана андан көбүрөөк үйрөнүүгө көбүрөөк убакыт бөлө баштадык (жана xD процессинде окуубузду этибарга албоо). Акыр-аягы, биздин оюн ушунчалык жакшы курулган жана биздин мектеп тарабынан жакшы кабыл алынгандыктан, конфискацияланган (окуучунун кийинки партиясы үчүн демо материал катары). Ооба, биз ар дайым экинчисин кура алабыз. Кел, баштайлы!

Оюндун онлайн версиясы:

1 -кадам: Сизге эмне керек?

Сизге эмне керек?
Сизге эмне керек?
Сизге эмне керек?
Сизге эмне керек?
Сизге эмне керек?
Сизге эмне керек?
Сизге эмне керек?
Сизге эмне керек?

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

1. Микроконтроллер/Микрокомпьютер/FPGA - FPGA биздин оюндун логикасын ишке ашыруу үчүн колдонулат. Тактаңызды тандаңыз, биздин долбоор үчүн биз Mojo FPGA тактасын колдонушубуз керек. Билбегендер үчүн, бул коддорго эмес, функцияларын ишке ашыруу үчүн аппараттык жабдууларды колдонгон тактанын бир түрү. Демек, мен анын деңгээли төмөн жана Ардуино же Пи колдонуп жаткандан такыр башкача деп айтаар элем. Эгерде сиз башка такталарды колдонсоңуз, анда өзүңүздүн кодуңузду жазышыңыз керек, бирок бул оюнду коддоо оңой жана эй! Эми сиз да коддоону үйрөнө аласыз!

2. Ws2812b светодиоддору - Бул жерде биз оюнубуз үчүн дисплейди куруу үчүн светодиоддорду колдонуп жатабыз. Эгерде сиз xDге чейин Ws2812b'ге тийбесеңиз, анда жаратуучу боло албайт. Бул бирдиктүү диоддорду кесип, каалаган формага чаптап коюуга мүмкүн болгон бирдиктүү мааниге ээ. Жана бул RGB, сиз каалаган түстү чыгара аласыз. Мындан тышкары, FastLED - Ws2812bди көзөмөлдөө үчүн Arduino китепканасы абдан жакшы иштелип чыккан. Эгер сизде жок болсо, адамдарга FPGAнын ордуна Arduino колдонууну сунуштаар элем. Светодиодду Taobao/Amazonдон сатып алсаңыз болот, бирок биздикин Сингапурдагы Sim Lim мунарасынан сатып алдык.

3. Жыгач-Тышкы корпус үчүн биз калыңдыгы 1см фанераны, ал эми LED матрицасы үчүн калыңдыгы 0,3см фанераны колдондук. Биз мектептин фаб лабораториясынан жыгач сыныгын таптык.

4. Жарык чачуучу акрил - Биздин экраныбыз үчүн биз акрилдин ар кандай түрлөрүн колдонуп көрдүк жана PL -422 деп аталган тоңгон акрилди таптык. Эгерде сиз так моделин таба албасаңыз, тоңгон акрилдерди издеп көрүңүз. Биздикилерди Сингапурдагы Dama Plasticsтен сатып алдык.

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

6. Чоң кызыл баскыч - Макул, бизде мындай чоң кызыл баскычтын болушу шарт эмес, бирок анын басылышы үчүн баскыч болгону дайыма жакшы! xD Биз аны Сингапурдагы Sim Lim мунарасынан сатып алганбыз.

Куралдар:

1. Жыгач клей

2. Лампочка

3. Solder

4. Зымдар. Эгер катууларга салыштырмалуу жумшак зымдар болсо эң жакшы. Жана көп ядролукка салыштырмалуу бир ядро.

5. Зымдан тазалоочу

6. Сым кесүүчү

7. 1мм бургу менен бургулаңыз

8. Жылдыруучу араа

9. Тасма араа

Мүчүлүштүктөрдү оңдоо:

1. Variable Power Supply Unit

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

2 -кадам: Тез прототиптөө

Тез прототиптөө
Тез прототиптөө
Тез прототиптөө
Тез прототиптөө
Тез прототиптөө
Тез прототиптөө
Тез прототиптөө
Тез прототиптөө

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

Аппараттык жактан алганда, биринчи этапта биз өзүбүздүн жөнөкөй LED матрицабызга жарык моделдерин которуу боюнча логикабызды сынап көрдүк. Логика жакшы иштеп жатканын текшергенден кийин, биз 5 Ws2812b диоддорунун тилкелерин кесип, оюндун логикасын ар кандай саптар менен текшерүү үчүн чыктык. Бул ишке ашкандан кийин, биз LED матрицасын толук масштабда чыгарууга киришебиз.

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

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

3 -кадам: Корпусту жасоо

Корпустун жасалышы
Корпустун жасалышы
Корпустун жасалышы
Корпустун жасалышы
Корпустун жасалышы
Корпустун жасалышы
Корпустун жасалышы
Корпустун жасалышы

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

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

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

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

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

4 -кадам: LED матрицасын түзүү

LED матрицасын түзүү
LED матрицасын түзүү
LED матрицасын түзүү
LED матрицасын түзүү

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

Биз LEDдин ар бир катарын Data In жана Data Out казыктары менен байлайбыз жана ар бир GND менен VCCди жалпы зымга кошобуз. Жетектөөчү Data In ар бир катар үчүн жарык үлгүлөрүн жаратат жана биз аны микроконтроллердин/FPGA түйүнүнө туташтырдык. Сиз ошондой эле бир катардагы акыркы маалыматтарды башка саптын алдыңкы маалымат киришине кошо аласыз. Ws2812b LEDинин иштөө ыкмасы ар бир LEDде зымдан керектүү маалыматтарды алып, калганын чынжырдан ылдый өткөрө турган IC бар. Биз дагы бир фантастикалык көрсөтмөлөргө LEDибизди негиздедик (Чынында, биз аны так көчүрдүк! XD)

Бул жерде биз ошондой эле жумшак зымдарды колдонуунун маанилүүлүгүн баса белгилегибиз келет. Эгерде сиз алдыңкы Data In пин үчүн каттуу, катуу зымдарды колдонсоңуз, анда зымды тарткан сайын эмне болот, ал Ws2812bдеги жез толтургучту жулуп салышы мүмкүн. Бул долбоордо, биз жумшак зымдарга өткөнгө чейин, биз 40 проектти жок кылдык, бул биздин долбоорго керектүү светодиоддордун 1/3 бөлүгүн түзөт.

Нускамалуу:

5 -кадам: Оюн коддорун жазуу жана аппараттык мүчүлүштүктөрдү оңдоо

Оюн коддорун жазуу жана аппараттык мүчүлүштүктөрдү оңдоо
Оюн коддорун жазуу жана аппараттык мүчүлүштүктөрдү оңдоо
Оюн коддорун жазуу жана аппараттык мүчүлүштүктөрдү оңдоо
Оюн коддорун жазуу жана аппараттык мүчүлүштүктөрдү оңдоо
Оюн коддорун жазуу жана аппараттык мүчүлүштүктөрдү оңдоо
Оюн коддорун жазуу жана аппараттык мүчүлүштүктөрдү оңдоо

Mojo Lucid HDLде иштейт, ал жерде эң популярдуу тил жок. Биз Lucidтен Ws2812b LED китепканаларын таба албайбыз, ошондуктан биз өзүбүздүн китепканабызды жазууга кайрылдык, бул абдан кызыктуу тажрыйба. Бул үчүн, биз алгач Arduino FastLED китепканасынын жардамы менен берилген сигналды анализдеп, аны кайталоо үчүн коддорду жаздык. Бул жерде аппараттык мүчүлүштүктөрдү оңдоонун бир амалы, осциллограф сигналдарды анализдөө үчүн абдан пайдалуу, ал өзүңүздүн ишеничиңиз жок сигналды мүчүлүштүктөрдү оңдоо же башка сигналдарды текшерүү жана көчүрүү.

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

Биздин оюндун 2 деңгээли бар болчу, бул көрүнүүчү стекинг оюну (Жашыл) жана экинчи деңгээлдеги көзгө көрүнбөгөн жыйноо оюну (Көк).

Бизде жумушчу коддору жана иштеп жаткан LED матрицасы болгондон кийин да, кээде биз дагы деле жаркырап же чырактардын күйбөгөнү сыяктуу көйгөйлөргө туш болобуз. Көйгөй көбүнчө туура эмес жерге туташтыруудан, электр менен камсыздоонун деңгээлинен же кийлигишүүдөн келип чыгат. Бул жерде сизге Mojo/Arduino электр энергиясынын жетиштүү же өтө жогору экендигин текшерүү үчүн башка жабдыктарды оңдоо куралдары керек болот, мисалы, өзгөрмөлүү энергия менен жабдуу. Менин тажрыйбам боюнча, Ws2812b 2.8v - 5v чейин иштөө чыңалууларынын кеңири спектрине ээ. Бул жерде менде кубаттуулукту жогорулаткандан кийин жарыктын баары жинди болуп баратканын көрсөткөн видео бар.

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

Github коддору:

Arduino Bitwise Shift:

Arduino Bitwise AND:

6 -кадам: Бардыгын бириктирүү

Баарын бир жерге коюу
Баарын бир жерге коюу
Баарын бир жерге коюу
Баарын бир жерге коюу
Баарын бир жерге коюу
Баарын бир жерге коюу
Баарын бир жерге коюу
Баарын бир жерге коюу

Сизде корпус жана LED матрицасы бар. Азыр бардыгын чогултуу убактысы келди. Алгач көбүктү алдыңкы жагына, ал эми артында LED матрицасын коюп, абалын жөнгө салдык. Көбүктүн сүрүлүүсү өтө жогору болгондуктан, ал жөн эле сүрүлүү менен орнотулган, ал эми LED матрицасы ысык чапталган. Андан кийин экранды тордун алдына койдук. Андан кийин биз ар бир катардын пинин микроконтроллерге туташтырып, ойной баштадык!: D

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

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