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

PixelWall: 7 алхам (зурагтай)
PixelWall: 7 алхам (зурагтай)

Видео: PixelWall: 7 алхам (зурагтай)

Видео: PixelWall: 7 алхам (зурагтай)
Видео: 🎶 ДИМАШ "ОПЕРА 2". История выступления и анализ успеха | Dimash "Opera 2" 2024, Есдүгээр
Anonim
PixelWall
PixelWall

Pixel-Table төслийг та мэдэх үү? Ийм пикселийн зүйлийг хүснэгт хэлбэрээр биш харин хананд наах санаа надад төрсөн юм.

Би буйдан дээр хэвтэж, амрах зуураа түүн дээр хэдэн тоглоом тоглож чадна.:)

Хэрэгжүүлсэн тоглоомууд нь:

  • Тетрис
  • Сансрын довтлогчид
  • Могой
  • Pixel Draw

нэмэлт функцууд нь:

  • Одоогийн цагийг харуулах
  • Өнгөт анимацийг үзүүлэх

PixelWall нь ESP8266 төхөөрөмжтэй тул миний гэрийн WLAN-тай холбогдох боломжтой. Гэхдээ PixelWall -ийг хандалтын цэг болгон ашиглаж, түүнтэй шууд холбогдох боломжтой.

Миний PixelWall -ийг ашиглахад хялбар болгохын тулд хана нь холбосны дараа вэбсайтыг хянадаг. Бүх програмыг вэб хуудсаар дамжуулан хянах/тоглуулах боломжтой. Тиймээс ашиглахын тулд ямар нэгэн програм суулгах шаардлагагүй юм.

Нэмж хэлэхэд NES хянагч байдаг бөгөөд энэ нь тоглоом тоглоход хялбар болгодог.

Нээлттэй эх сурвалж

Миний github дээр байрлуулсан бүх програм хангамж, механик зургууд: https://github.com/C3MA/PixelWallFeel үүнийг өөрийн төсөлд ашиглахад чөлөөтэй болно.

Алхам 1: Цахим төхөөрөмжөөс эхэлье

Цахим төхөөрөмжөөс эхэлье
Цахим төхөөрөмжөөс эхэлье
Цахим төхөөрөмжөөс эхэлье
Цахим төхөөрөмжөөс эхэлье
Цахим төхөөрөмжөөс эхэлье
Цахим төхөөрөмжөөс эхэлье

Өөр төслөөс WS2812 LED бүхий одоо байгаа ПХБ байна. ПХБ нь 3 эгнээтэй бөгөөд эгнээ тус бүрт 12 LED байна.

Би энэ ПХБ -ийг 6 удаа ашиглахаар шийдсэн. Тиймээс би 12x18 хэмжээтэй LED матриц авах болно.

Эхний алхам бол бүх 216 LED, 100 орчим конденсатор, ESP8266 гагнах явдал байв.

Гараар гагнах ажилд 10 орчим цаг шаардагддаг.

Эхний хурдан шалгалтын дараа бүх зүйл ажиллаж байгааг олж мэдэв.

Тиймээс бид механик хэсэг рүү явж болно.

Алхам 2: Механик бүтээх

Механик бүтээх
Механик бүтээх
Механик бүтээх
Механик бүтээх
Механик бүтээх
Механик бүтээх
Механик бүтээх
Механик бүтээх

Юуны өмнө бидэнд пиксел тус бүрт тусгаарлагч хэрэгтэй болно. Хэвтээ ба босоо туузыг V зүсэлтээр хооронд нь холбох санаа юм.

Хамтлаг бүрийн зузаан нь 3 мм, өндөр нь 17 мм байна. Тэдгээрийг HDF хавтангаас лазер хайчаар хайчилж авдаг.

Ласкертерын бүх зургийг FreeCad дээр зурсан (github төслийн механик хавтсанд "Leiste" гэж нэрлэдэг)

Сүлжээг ПХБ -ийн зохион байгуулалтаар өгсөн болно. Энэ нь баганын өргөн 28 мм, эгнээний өндөр 31 мм байна.

Дараагийн асуулт бол ПХБ дээрх туузыг хэрхэн яаж засах вэ? Наалдах нь тийм ч сайн санаа биш, учир нь ямар нэгэн согог байвал задлах боломжтой байх ёстой. Тиймээс би үүнийг таслахаар шийдсэн. Гэхдээ шураг нь 3 мм нимгэн туузыг хуваах болно. Тиймээс би 3D принтерээр хамтлагийн халаасыг хэвлэв (энэ бол github төслийн "Halter" нэртэй хэсэг юм). Энэ нь тэдгээрийг ПХБ дээр засахын тулд маш сайн ажилласан.

Дараагийн алхам бол түүнд зориулж хүрээ авах явдал юм. Бие даасан зургийн жааз хайчлахыг санал болгодог зарим онлайн дэлгүүрүүд байдаг. Тиймээс би 343mm x 565mm хэмжээтэй хүрээ захиалсан.

Хүрээ нь доод талд нэмэлт тэжээлийн нүх гаргадаг.

Plexiglas урд хавтан Би бас онлайнаар захиалсан. Энэ бол WN770 opal Milchglasoptik LD45% хэмжээтэй: 567x344x2mm

Энэ нь тунгалаг 45%байдаг.

Бүх хэсгүүдийг хүрээ рүү оруулна.

Төгсгөлд нь бүх туузыг нуруун дээр нь боож, бүх зүйлийг засч, унах боломжгүй болно.

PixelWall -ийг ямар ч WLAN холболтгүйгээр ашиглах боломжтой байхын тулд би залгагддаг хяналтын самбарыг бүтээсэн бөгөөд үүнийг хүснэгтийн баруун талд оруулах боломжтой (github төсөлд "Bedieneinheit" гэж нэрлэдэг).

Алхам 3: Програм хангамж - Үндсэн ойлголтууд

Програм хангамж - Үндсэн мэдээлэл
Програм хангамж - Үндсэн мэдээлэл

Хэрэглэх тохиолдлуудын нэг бол PixelWall дээр тоглоом тоглох явдал юм.

Гэхдээ пиксел тоглоом бичихэд дибаг хийх ашигтай орчин үргэлж хэрэгтэй болно. Би ESP8266 хянагчийг тохирох аргаар дибаг хийх ямар ч арга мэдэхгүй байна. Тиймээс би кодыг компьютер дээрээ дуурайхаар шийдсэн. ESP кодыг Arduino C ++ дээр бичсэн тул би компьютер дээр симуляци хийхийн тулд Visual Studio C ++/CLI хэлийг ашигласан. Стандарт C ++ ба C ++/CLI хэлний хооронд зарим ялгаа байдаг. Жишээлбэл, C ++/CLI дээр String төрлийн объект үүсгэх боломжгүй, хог цуглуулдаг тул ийм объект руу объект эсвэл лавлах/заагч үүсгэхийг зөвшөөрдөггүй. C ++/CLI дээр та бариулыг ашиглах ёстой: String^. Гэхдээ ийм бариул C ++ стандартад байдаггүй. Тиймээс би хоёр ертөнцийг нэгтгэхийн тулд бүтээлч байх ёстой байсан. Би үүнийг симуляц хийх өөрийн Arduino.h файлыг бий болгосноор шийдсэн. Энэ файл нь симуляц хийх явцад бүх мөрүүдийг "#define String String^" гэж тодорхойлж дардаг. Энэ бол нийтлэг арга биш, гэхдээ энэ нь ажилладаг:) Зарим жижиг хөрвүүлэгчийн шилжүүлэгчээс бусад бүх ESP код нь Visual Studio C ++/CLI дээр хөрвүүлэгддэгээс өөр юм.

LED матриц

Миний бичсэн анхны анги бол LED-Matrix анги юм. Энэ анги нь WS2812 LED -ийн хяналт, зураглалыг зохицуулдаг.

Энэ ангийг хоёр удаа бичсэн: нэг удаа ESP8266 хянагчийн хувьд (LEDMatrixArduino.cpp), нөгөө нь загварчлалын хэлбэрээр GUI дээрх хэлбэрийг хянадаг (LEDMatrixGUI.cpp).

Энэ анги нь тусдаа LED -ийг багана, эгнээгээр нь тохируулах, цэвэрлэх үндсэн аргуудыг өгдөг.

Нэмж дурдахад энэ нь setBrightness функцийг өгдөг. Хэрэв LED тохируулсан бол энэ утгыг харгалзан үзнэ. Тиймээс LED-ийн бүх командуудыг бүрэн гэрэлтүүлгээр гүйцэтгэх боломжтой. Жишээлбэл: Гэрэлтүүлгийг 50% болгож, setLed () функцийг RGBColor (255, 255, 255) -ээр дуудвал LED -ийг 127, 127, 127 болгож тохируулна.

LED самбар

LED матрицын ангийн дээр би LED хавтангийн анги тавив. Энэ анги нь ямар ч програмд хэрэгтэй зарим функцийг өгдөг. Энэ нь бие даасан хоёр давхаргыг өгдөг. Энэ нь аппликешнд тустай байж болно. Жишээлбэл, тетрис тоглоомын хувьд: layer0 нь доод хэсэгт бэхлэгдсэн чулуунд зориулагдсан бөгөөд 1 давхарга нь унаж буй чулууг харуулна. Тиймээс мөчлөг бүрт чулуу нь нэг пикселийн ёроолд унадаг тул програм нь давхаргыг цэвэрлэж, чулууг шинэ байрлал дээрээ зурах боломжтой болно. Доод талд байгаа бүх чулууг дахин зурах шаардлагагүй.

Нэмж дурдахад самбар нь үүнийг өгдөг

printImage - инээмсэглэл эсвэл WLAN тэмдгийн хэв гэх мэт зарим дүрсийг хэвлэхDigit - тодорхой байрлалд нэг оронтой тоог хэвлэхХэвлэсэн тоо

Алхам 4: Програм хангамж - Хэрэглээний тухай ойлголт

Програм хангамж - Хэрэглээний тухай ойлголт
Програм хангамж - Хэрэглээний тухай ойлголт

Пикселийн хананы ерөнхий ойлголт нь:

  • Өргөдөл бүр өөрийн гэсэн нэртэй байдаг
  • Аппликешн нь pixelWall URL -ийг дуудаж програмын нэрийг оруулаад эхэлдэг (жишээ нь: 192.168.4.1/tetris)
  • URL нь GET параметрүүдтэй байж болох бөгөөд үүнийг програм руу дамжуулах болно
  • Програм бүр хөтөч дээр харуулсан вэбсайтыг хүргэх ёстой.
  • Энэ вэбсайт нь хурдан харилцан үйлчлэх зорилгоор програмын вэбсокет холболтыг нээх боломжтой
  • Аппликешн нь энэ вэбсокет холболтыг ашиглан вэб фронт руу буцаж холбогдох боломжтой.
  • Вэб интерфэйсээс гадна програм нь хяналтын самбар болон NES контроллероос товчлуурын үйл явдлыг нэмж авдаг.

Хэрэглээний интерфейс

PixelWall -д зориулсан шинэ аппликейшн боловсруулахад хялбар болгох үүднээс би "IPixelApp.h" нэртэй програмуудын интерфэйсийг бүтээсэн. Энэхүү интерфэйс нь 8 тодорхойлолтыг агуулдаг.

  • виртуал хүчингүй эхлэх () = 0;
  • виртуал void end () = 0;
  • виртуал хоосон давталт () = 0;
  • виртуал хүчингүй newWebsocketData (uint8_t * ачаалал, size_t урт) = 0;
  • виртуал WebsiteResponse_t getWebsiteResponse (String параметр) = 0;
  • virtual void buttonEvent () = 0;
  • виртуал void timerTick () = 0;
  • виртуал String getName () = 0;

эхлэх / дуусгах - өөр програм эхэлж байгаа тул програмыг эхлүүлж / дуусгавал энэ функцийг дуудна

давталт - энэ функцийг үндсэн програмын үндсэн давталтаас дууддаг. Энэ дуудлага нь тогтмол бус бөгөөд тасалдлын гадна байна.

newWebsocketData - хэрэв вэб урд өгөгдөл илгээсэн бол энэ функцийг дуудна.

getWebsiteResponse - энэ нь хүсэлтийг биелүүлэх ёстой вэб хуудсыг авахын тулд үндсэн програм ашигладаг.

buttonEvent - хэрэв хяналтын самбар дээрх аль нэг товчлуур дарагдсан эсвэл суллагдсан бол үүнийг дуудна.

timerTick - энэ функцийг таймер тасалдахад хүргэдэг 10ms тутамд дууддаг. Үүнийг цаг хугацааны хувьд ашиглаж болох боловч тасалдсан контекст учраас цаг их шаардсан зүйлийг агуулж болохгүй.

getName - энэ нь URL програмын нэрийг буцааж өгөх ёстой

Алхам 5: Програм хангамж - Програм

Програм хангамж - Програм
Програм хангамж - Програм
Програм хангамж - Програм
Програм хангамж - Програм
Програм хангамж - Програм
Програм хангамж - Програм
Програм хангамж - Програм
Програм хангамж - Програм

Дараах 7 програмыг одоогийн хувилбарт хэрэгжүүлсэн болно.

Өгөгдмөл апп

Энэ бол PixelWall -ийн одоогийн WLAN байдлыг харуулдаг тусгай програм юм. Хэрэв хана нь одоогийн WLAN -тэй холбогдож чадвал сүлжээнээс авсан IP хаягийг харуулна.

Хэрэв энэ боломжгүй байсан бол (ssid тохируулагдаагүй эсвэл WLAN байхгүй эсвэл нууц үг буруу байвал) Accesspoint -ийг нээнэ. Энэ тохиолдолд та PixelWall -д ESP8266: 192.168.4.1 -ээс анхдагч Accesspoint IP -ээр холбогдож болно.

Вэб интерфэйс дээр энэ програм нь 6 товчлууртай. Товчлуурыг дарснаар та тохирох програмыг эхлүүлж болно.

Тохиргооны апп

Энэхүү програм нь WLAN SSID болон нууц үгийг тохируулахад зориулагдсан болно. WLAN -ийнхээ итгэмжлэлийг оруулаад PixelWill -ийн дараагийн эхэнд энэ WLAN -тай холбогдохыг оролдох болно.

Тоглоом

PixelWall дээр програмчилсан гурван сонгодог тоглоом байдаг.

  • Тетрис
  • Могой
  • Сансрын довтлогчид

Бүх тоглоомыг вэб интерфэйсээр эсвэл NES хянагчаар тоглох боломжтой.

Зургийн апп

Энэ бол PixelWall дээр өнгийг харуулдаг програм юм. Янз бүрийн өнгийг бүдгэрүүлж, статик өнгө харуулах эсвэл зүгээр л санамсаргүй өнгөт пиксел харуулах хөдөлгөөнтэй солонго байх эсэхийг та сонгож болно.

Pixel It

Энэхүү програмын тусламжтайгаар та вэб интерфэйс дээр хуруугаараа дарж пиксел бүрийг тус тусад нь тохируулж болно. Тиймээс та хэдэн зураг зурж болно:)

Алхам 6: Twitch өргөтгөлөөр хянах

Twitch өргөтгөлөөр хянах
Twitch өргөтгөлөөр хянах

Twitch дээр GetInTouch нэртэй өргөтгөл байдаг. Энэхүү өргөтгөл нь Arduino төслүүдийг шууд дамжуулалтад нэгтгэх боломжийг олгодог бөгөөд ингэснээр үзэгчид дамжуулах явцад таны arduino -г хянах боломжтой болно.

Үүнд зориулагдсан Arduino номын санг Arduinos -д зориулж бичсэн болно. Гэхдээ энэ нь ESP8266 дээр бас ажилладаг гэсэн үг юм.

Үүнийг урсгалд ашиглахын тулд дараах алхмуудыг хийх шаардлагатай байна.

  • GetInTouch номын санг кодонд нэгтгэх (зааврыг үзнэ үү)
  • PixelWall -ийг USB/RS232 хөрвүүлэгчээр дамжуулан компьютер дээрээ холбоно уу (үүнийг ESP -ийг асаахад бас ашигладаг)
  • GetInTouch програмыг вэбсайтаас суулгана уу
  • GetInTouch өргөтгөлийг Twitch суваг дээрээ суулгаарай (зааврыг үзнэ үү)

Алхам 7: Nintendo NES Controller -ийн хяналт

Nintendo NES хянагчийн хяналт
Nintendo NES хянагчийн хяналт

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

Тиймээс би хуучин Nintendo NES хянагч худалдаж авахаар шийдсэн. Энэхүү хянагч нь маш энгийн интерфэйстэй. Зүгээр л 4021 ээлжийн бүртгэл нь 3, 3V -тэй ажилладаг. Тиймээс үүнийг ESP8266 -тай шууд холбож болно.

ButtonEvent () функцээр дамжуулан ажиллаж буй програм руу дамжуулдаг хянагч дээрх бүх товчлуурын үйл явдал.

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