Агуулгын хүснэгт:

Stackers аркад тоглоом: 6 алхам (зурагтай)
Stackers аркад тоглоом: 6 алхам (зурагтай)

Видео: Stackers аркад тоглоом: 6 алхам (зурагтай)

Видео: Stackers аркад тоглоом: 6 алхам (зурагтай)
Видео: Playing Mega Stackers 2024, Арваннэгдүгээр
Anonim
Овогчдын аркад тоглоом
Овогчдын аркад тоглоом

Сайн байна уу залуусаа, өнөөдөр би та бүхэнтэй Ws2812b LED болон микроконтроллер/FPGA ашиглан хийж болох энэхүү гайхалтай аркад тоглоомыг хуваалцахыг хүсч байна. Stack Overflow -ийг сонгоорой - бидний сонгодог аркад тоглоомын техник хангамжийн хэрэгжилт. Сургуулийн төслөөс эхэлсэн зүйл нь бид тоглоомоо хөгжүүлэх, түүнээс илүү ихийг сурахад илүү их цаг зарцуулж эхэлснээр (мөн xD процессын явцад хичээлээ үл тоомсорлох) эхэлснээр маш хурдан хайрын хөдөлмөр болж хувирсан. Эцэст нь манай тоглоомыг манай сургууль маш сайн зохион байгуулж, маш сайн хүлээж авсан тул хурааж авлаа (дараагийн оюутнуудын демо материал болгон). За, бид үргэлж хоёр дахь хэсгийг барьж болно. Эхэлцгээе!

Тоглоомын онлайн хувилбар:

Алхам 1: Танд юу хэрэгтэй вэ?

Чамд юу хэрэгтэй?
Чамд юу хэрэгтэй?
Чамд юу хэрэгтэй?
Чамд юу хэрэгтэй?
Чамд юу хэрэгтэй?
Чамд юу хэрэгтэй?
Чамд юу хэрэгтэй?
Чамд юу хэрэгтэй?

Материал:

1. Микроконтроллер/Микрокомпьютер/FPGA - FPGA нь манай тоглоомын логикийг хэрэгжүүлэхэд ашиглагддаг. Самбараа сонгоорой, манай төслийн хувьд бид Mojo FPGA хавтанг ашиглах шаардлагатай болно. Анхан шатны бус хүмүүсийн хувьд энэ нь код гэхээсээ илүү чиг үүргээ хэрэгжүүлэхийн тулд техник хангамж ашигладаг самбар юм. Тиймээс, та Arduino эсвэл Pi ашиглаж байгаагаас хамаагүй доогуур түвшинд байгаа гэж би хэлэх болно. Хэрэв та өөр самбар ашигладаг бол та өөрөө код бичих ёстой, гэхдээ энэ тоглоомыг кодлоход маш хялбар байдаг. Одоо та код бичиж сурах боломжтой боллоо!

2. Ws2812b LED - Энд бид LED -ийг ашиглан тоглоомынхоо дэлгэцийг бүтээж байна. Хэрэв та xD -ээс өмнө Ws2812b -т хүрээгүй бол үйлдвэрлэгч байж чадахгүй. Энэ бол ганц LED -г тасалж, дуртай формац руу буулгах гэсэн утгатай. Мөн энэ нь RGB гэсэн утгатай бөгөөд та хүссэн өнгөөрөө гарч болно. Цаашилбал, FastLED - Ws2812b -ийг удирдах Arduino номын сан маш сайн хөгжсөн. Хэрэв танд байхгүй бол FPGA -ийн оронд Arduino ашиглахыг хүмүүст зөвлөж байна. Та LED -ийг Taobao/Amazon -оос худалдаж авч болно, гэхдээ бид Сингапурын Sim Lim tower -аас худалдаж авсан.

3. Мод-Гадна бүрхүүлийн хувьд 1см зузаантай фанер, LED матрицад 0.3см зузаантай фанер ашигласан. Манай сургуулийн хаягдал модны нөөцийг сургуулийнхаа үйлдвэрлэх лаборатороос олсон.

4. Хөнгөн сарнисан нийлэг - Бидний дэлгэцийн хувьд бид янз бүрийн төрлийн нийлэгийг туршиж үзсэн бөгөөд энэ нь гэрлийг сарниулахад үнэхээр тохиромжтой PL -422 нэртэй царцсан нийлэгийг олсон. Хэрэв та яг загварыг нь олж чадаагүй бол царцсан нийлэгийг хайж үзээрэй. Бид өөрсдийнхөө бүтээгдэхүүнийг Сингапурын Dama Plastics -ээс худалдаж авсан.

5. Хөөс хавтан - Гэрлийн тус бүрийн пиксел тус бүрийг салгахын тулд бидэнд сүлжээний бүтэц хэрэгтэй байсан бөгөөд энэ хөөс нь үүнийг хийхэд хамгийн тохиромжтой материал юм. Бид сургуулийнхаа номын дэлгүүрээс 0.5см зузаантай хөөсөнцөр хавтан худалдаж авсан.

6. Том улаан товчлуур - За, бидэнд ийм том улаан товчлуур байх шаардлагагүй, гэхдээ хүмүүс дарах товчлууртай байх нь үргэлж сайн байдаг! xD Бид үүнийг Сингапур дахь Sim Lim tower -аас худалдаж авсан.

Хэрэгсэл:

1. Модны цавуу

2. Гагнуурын төмөр

3. Гагнуур

4. Утаснууд. Хатуу утастай харьцуулахад зөөлөн утастай байвал сайн. Мөн олон судалтай харьцуулахад нэг цөмтэй.

5. Утас хуулагч

6. Утас таслагч

7. 1мм -ийн өрмийн битээр өрөмдөх

8. Гүйлгэх хөрөө

9. Туузан хөрөө

Дебаг хийх:

1. Хувьсах цахилгаан хангамжийн нэгж

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

Алхам 2: Прототипийг хурдан гаргах

Прототипийг хурдан гаргах
Прототипийг хурдан гаргах
Прототипийг хурдан гаргах
Прототипийг хурдан гаргах
Прототипийг хурдан гаргах
Прототипийг хурдан гаргах
Прототипийг хурдан гаргах
Прототипийг хурдан гаргах

Төслийнхөө хувьд бид LED матрицаа бүтээж, тоглоомоо програмчлахаасаа өмнө хурдан загварчлах аргыг ашигласан. Үүнийг хийх болсон шалтгаан нь бид код ажиллахгүй байгаа эсвэл тоглоомын логик ямар нэгэн байдлаар алдаатай байгааг ойлгохын тулд LED матрицыг бүтээхийг хүсэхгүй байгаа явдал юм.

Тоног төхөөрөмжийн хувьд эхний шатанд бид гэрлийн хэв маягийг өөрийн энгийн LED матриц руу шилжүүлэх логикоо туршиж үзсэн. Логик сайн ажиллаж байгааг туршиж үзсэнийхээ дараа бид тоглоомын логикоо өөр өөр мөрөөр шалгахын тулд 5 Ws2812b LED -ийн тууз хайчлахаар гарлаа. Үүнийг хийсний дараа бид LED матрицыг бүрэн хэмжээгээр үйлдвэрлэх ажлыг үргэлжлүүлнэ.

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

Програм хангамжийн хувьд бид аль болох модульчлагдсан байхыг хичээдэг. Эхлээд ээлжийн функцийг нэмж оруулахаасаа өмнө LED -үүдийг асааж болох эсэхийг шалгадаг бөгөөд хэрэв та үүнийг хийхгүй бол үр дүн нь сүйрэлд хүргэж болзошгүй юм. Бид үүнийг дибаг хийх боломжгүй гэдгээ ухаарахаасаа өмнө бүхэл бүтэн тоглоомыг том хэмжээтэй кодлохыг оролдож байхдаа үүнийг маш хэцүү аргаар сурсан. Өө!

Алхам 3: Бүрхүүл хийх

Бүрхүүлийг хийх
Бүрхүүлийг хийх
Бүрхүүлийг хийх
Бүрхүүлийг хийх
Бүрхүүлийг хийх
Бүрхүүлийг хийх
Бүрхүүлийг хийх
Бүрхүүлийг хийх

Суултын яндангийн хувьд бид сонгодог аркад машины мэдрэмж, дүр төрхийг сонгосон. Нэгдүгээрт, бид нимгэн фанерыг хайчилж, хэлбэрийг нь хурдан гаргахын тулд нимгэн фанер хайчилж, турших нь илүү хялбар бөгөөд хурдан байдаг. Хэмжээ, хэлбэртээ сэтгэл хангалуун болмогц бид бүрээсийг бүтээхдээ зузаан фанер ашиглаж эхлэв. Бид зузаан фанерыг хайчилж авахын тулд туузан хөрөө, нимгэн хэсгийг хайчилж авахын тулд хайчаар хийсэн. Үүний дараа бид модон цавуугаар хооронд нь наалдуулсан.

Фанерын арын хувьд бид доторх электрон төхөөрөмжид хялбархан хандахыг хүссэн тул үүнийг хүссэн үедээ амархан арилгаж болох цоожтой хэсэг болгон хийв.

Товчлуурыг холбохын тулд бид эхлээд товчлуурын микро түлхүүрийн диаметртэй тэнцэх тойргийг зурсан (товчлуурын доод урт хэсэг). Дараа нь бид ирмэгийн ойролцоо цооног өрөмдөж, гүйлгэх хөрөөг ашиглан тойрог харав. Дараа нь бид товчлуурыг тавиад шургуулав.

Мөн бид өмнө нь тооцоолсон хэмжээгээрээ LED матрицын суурь болгон нимгэн фанер хайчилж авдаг.

Тэмдэглэл: Алхам алхамаар хийгдээгүйд хүлцэл өчье. Бид алхамуудыг бүхэлд нь баримтжуулаагүй бөгөөд алхмуудыг баримтжуулах шаардлагатай гэдгийг ойлгосноор бүрхүүл нь аль хэдийн хийгдсэн байсан. Диаграм нь мөн эцсийн хэмжээс биш юм.

Алхам 4: LED матриц хийх

LED матриц хийх
LED матриц хийх
LED матриц хийх
LED матриц хийх

Өмнө нь хайчилж авсан нимгэн хэсгийг ашиглан бид хөөсөнцөр бүтэц дээрээ үндэслэн дөрвөлжин зурж, LED -ийг наах ёстой газрыг дөрвөлжин дунд хөндлөн зурж LED тус бүрийн байрлалыг тэмдэглэнэ. Дараа нь бид LED -ийн тал бүр дээр 3 жижиг нүх өрөмдөж, утсыг дамжуулж, LED бүрт гагнана.

Бид LED-ийн мөр бүрийг Data In and Data Out тээглүүрээр холбож, GND ба VCC тус бүрийг нийтлэг утсаар гагнана. Тэргүүлэх Data In нь эгнээ тус бүрийн гэрлийн хэв маягийг үүсгэх бөгөөд бид үүнийг микроконтроллер/FPGA -ийн холбогч руу холбосон. Та мөн нэг мөрийн сүүлчийн өгөгдлийг нөгөө эгнээний тэргүүлэх өгөгдөл болгон гагнах боломжтой. Ws2812b LED -ийн ажиллах арга нь LED тус бүр нь IC -ийг агуулдаг бөгөөд энэ нь утаснаас шаардлагатай өгөгдлийг авч, үлдсэн хэсгийг гинжин хэлхээгээр дамжуулдаг. Бид LED -ээ өөр гайхалтай зааварчилгаанд суурилсан (Үнэндээ бид үүнийг яг хуулсан! XD)

Энд бид зөөлөн утас ашиглахын ач холбогдлыг онцлон тэмдэглэхийг хүсч байна. Хэрэв та тэргүүлэгч Data In зүүг ашиглахын тулд хатуу, хатуу утас ашигладаг бол утсыг татах бүртээ Ws2812b дээрх зэс бүрээсийг гаргаж авахад юу болох вэ. Энэ төсөлд бид зөөлөн утас руу шилжихээсээ өмнө манай төсөлд шаардлагатай LED -ийн 1/3 нь болох нийт 40 LED -ийг устгасан.

Зааварлах боломжтой:

Алхам 5: Тоглоомын код бичих, тоног төхөөрөмжийг дибаг хийх

Тоглоомын код бичих, тоног төхөөрөмжийг дибаг хийх
Тоглоомын код бичих, тоног төхөөрөмжийг дибаг хийх
Тоглоомын код бичих, тоног төхөөрөмжийг дибаг хийх
Тоглоомын код бичих, тоног төхөөрөмжийг дибаг хийх
Тоглоомын код бичих, тоног төхөөрөмжийг дибаг хийх
Тоглоомын код бичих, тоног төхөөрөмжийг дибаг хийх

Mojo нь Lucid HDL дээр ажилладаг бөгөөд энэ нь хамгийн алдартай хэл биш юм. Бид Lucid -ээс Ws2812b LED номын сан олж чадахгүй байгаа тул бид өөрсдийн номын санг бичихээр шийдсэн нь маш сонирхолтой туршлага юм. Үүнийг хийхийн тулд бид эхлээд Arduino FastLED номын санг ашиглан дамжуулж буй дохиог шинжилж, үүнийг хуулбарлах код бичжээ. Тоног төхөөрөмжийн дибаг хийх нэг арга бол осциллограф нь дохиог шинжлэхэд маш их хэрэгтэй байдаг.

Ws2812b -ийн номын санг бичсэний дараа бид тоглоомын кодыг үргэлжлүүлж, Bit shift функцийг ашиглан блок бүрийг зүүн, баруун тийш шилжүүлж, Bitwise AND to AND квадратуудыг өмнөх эгнээнд шилжүүлэв. Та үүнийг Arduino дээр хэрэгжүүлэх талаар бодож болно, энэ нь тийм ч хэцүү биш байх ёстой. Бид хөгжилтэй байхын тулд тоглоомын дэлгэцийг хүртэл кодлодог байсан!

Манай тоглоом 2 шаттай байсан бөгөөд энэ нь харагдах стек тоглоом (Ногоон), хоёр дахь түвшний үл үзэгдэх стек тоглоом (Цэнхэр) байв.

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

Гэсэн хэдий ч цаашдын шалгалтаар бид зохисгүй гагнууртай байсан нь тогтоогдсон тул дахин гагнуурын дараа бидний асуудал шийдэгдсэн. Түүнчлэн хөндлөнгөөс оролцох, хөндлөн юм ярихад асуудал үүсч болох боловч аз болоход бид тэдний нэг нь ч тулгарч байгаагүй.

Github кодууд:

Arduino Bitwise Shift:

Arduino Bitwise AND:

Алхам 6: Бүх зүйлийг нэгтгэх

Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх
Бүх зүйлийг хамтад нь хийх

Танд бүрхүүл ба LED матриц байна. Одоо бүх зүйлийг нэгтгэх цаг болжээ. Эхлээд бид хөөсийг урд талд, LED матрицыг ар талд байрлуулж, байрлалыг нь тохируулав. Хөөс нь маш их үрэлттэй тул LED матрицыг халуун цавуугаар наасан байхад зүгээр л үрэлтийг суурилуулсан болно. Үүний дараа бид дэлгэцийг сүлжээний урд байрлуулав. Дараа нь бид мөр бүрийн зүүг микроконтроллерт залгаад тоглож эхлэв!: D

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

Зөвлөмж болгож буй: