Мазмұны:

PixelWall: 7 қадам (суреттермен)
PixelWall: 7 қадам (суреттермен)

Бейне: PixelWall: 7 қадам (суреттермен)

Бейне: PixelWall: 7 қадам (суреттермен)
Бейне: Қасымхан - Кім сенің жаныңды жаралап кеткен (сөзі/текст) 2024, Қыркүйек
Anonim
PixelWall
PixelWall

Сіз Pixel-Table жобасын білесіз бе? Менде осындай пиксельді іске асыру идеясы болды, бірақ оны үстел ретінде емес, оны қабырғаға қою.

Мен диванда жатып, демалып жатқанда оған ойын ойнай аламын.:)

Іске асырылған ойындар:

  • Тетрис
  • Ғарыштық басқыншылар
  • Жылан
  • Pixel Draw

қосымша функциялар:

  • Ағымдағы уақытты көрсету
  • Түрлі түсті анимацияларды көрсету

PixelWall-да ESP8266 бар, сондықтан ол үйдегі WLAN желісіне қосыла алады. Бірақ сонымен қатар PixelWall -ды кіру нүктесі ретінде пайдалануға және оған тікелей қосылуға болады.

PixelWall қолдануды жеңілдету үшін қабырға қосқаннан кейін бақылауға арналған веб -сайтты ұсынады. Барлық қосымшалар веб -бет арқылы басқарылады/ойнатылады. Сондықтан пайдалану үшін кез келген бағдарламалық жасақтаманы орнату қажет емес.

Сонымен қатар, ойындарды ойнауды жеңілдететін NES контроллері бар.

Ашық көзі

Мен github -ға қойған барлық бағдарламалық жасақтама мен механикалық сызбалар: https://github.com/C3MA/PixelWallFeel free to use it your own project.

1 -қадам: Электрондыдан бастаңыз

Электрондыдан бастау
Электрондыдан бастау
Электрондыдан бастау
Электрондыдан бастау
Электрондыдан бастау
Электрондыдан бастау

Басқа жобада WS2812 светодиодтары бар бар ПХД бар. ПХД -де әр қатарда 12 жарық диоды бар 3 жол бар.

Мен бұл ПХД 6 рет қолдануға шешім қабылдадым. Сондықтан мен 12x18 жарықдиодты матрицаны аламын.

Бірінші қадам барлық 216 жарықдиодты, шамамен 100 конденсатор мен ESP8266 дәнекерлеу болды.

Қолмен дәнекерлеуге шамамен 10 сағат қажет болды.

Алғашқы жылдам тестілеуден кейін анықталды: бәрі жұмыс істейді.

Сондықтан біз механикалық бөлімге бара аламыз.

2 -қадам: Механик құру

Механик құру
Механик құру
Механик құру
Механик құру
Механик құру
Механик құру
Механик құру
Механик құру

Ең алдымен, әр пиксель үшін бөлгіш қажет. Көлденең және тік жолақты V кесіндісі арқылы біріктіру идеясы.

Әр топтың қалыңдығы 3 мм және биіктігі 17 мм. Олар HDF пластинасынан лазермен кесіледі.

Барлық лазерлік кескіндемелер FreeCad -те салынған (github жобасының механикалық қалтасында «Leiste» деп аталады)

Тор ПХД орналасуымен беріледі. Оның ені 28 мм, жол биіктігі 31 мм.

Келесі сұрақ: ПХД жолақтарын қалай түзетуге болады? Желімдеу - бұл жақсы идея емес, себебі егер бірдеңе ақаулы болса, оны бөлшектеуге болады. Сондықтан мен оны жоюды шештім. Бірақ бұранда 3 мм жұқа жолақты бөледі. Мен 3D принтермен топқа арналған қалтаны басып шығардым (бұл github жобасында «Halter» деп аталатын бөлік). Бұл оларды ПХД -де түзету үшін жақсы жұмыс жасады.

Келесі қадам - бұл жақтауды алу. Жекелеген сурет жақтауларын кесуді ұсынатын кейбір интернет -дүкендер бар. Сондықтан мен 343мм х 565мм рамкаға тапсырыс бердім.

Рамка төменгі жағында қуат көзі үшін қосымша тесік алады.

Плексигластың алдыңғы тақтасы мен желіде тапсырыс берді. Бұл WN770 опал 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-Matrix класы. Бұл класс WS2812 светодиодтарын басқару мен картаға түсіреді.

Бұл сынып екі рет жазылды: бір рет ESP8266 контроллері үшін (LEDMatrixArduino.cpp), екіншісі модельдеудегі GUI формасындағы пішіндерді басқаратын (LEDMatrixGUI.cpp).

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

Сонымен қатар, ол setBrightness функциясын ұсынады. Егер жарық диоды орнатылса, бұл мән қарастырылады. Осылайша, барлық жарықдиодты командалар толық жарықтықпен орындалуы мүмкін. Мысалы: Егер жарықтылық 50% -ға орнатылса және setLed () функциясы RGBColor (255, 255, 255) көмегімен шақырылса, ол жарық диодты 127, 127, 127 -ге орнатады.

Жарықдиодты панель

LED Matrix класының үстіне мен LED панелінің класын қойдым. Бұл сынып кез келген қосымшаға пайдалы функцияларды ұсынады. Ол екі тәуелсіз қабатты қамтамасыз етеді. Бұл қосымшаға пайдалы болуы мүмкін. Мысалы, тетрис ойынында: 0 қабаты төменгі жағында бекітілген тастарға арналған, ал 1 -қабат құлап жатқан тасты көрсетеді. Әр циклда тас бір пиксельге дейін төмен түседі, қосымша 1 қабатты тазартып, тасты жаңа орнына түсіре алады. Төмендегі барлық бекітілген тастарды қайта салу қажет емес.

Сонымен қатар, панель қамтамасыз етеді

printImage - смайликтер немесе WLAN таңбасы сияқты кейбір белгішелерді басып шығару үшін Digit - белгілі бір позицияда бір цифрды басып шығаруPormatedNumber - префикстері бар санды басу үшін zerosprintNumber - бүтін санды басып шығару printLineH - көлденең сызықпен арнайы ұзындығы printLineV - белгілі бір ұзындығы бар көлденең сызық

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;
  • виртуалды жарамсыздық таймеріTick () = 0;
  • getName виртуалды жолы () = 0;

start / end - бұл функция, егер бағдарлама басқа қосымшаның басталуына байланысты басталса / аяқталса шақырылады

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

newWebsocketData - бұл функция егер веб -фронды деректер жіберсе шақырылады.

getWebsiteResponse - бұл сұранысты қанағаттандыратын веб -бетті алу үшін негізгі бағдарламада қолданылады.

buttonEvent - бұл басқару тақтасындағы кез келген түйме басылған немесе босатылған жағдайда шақырылады.

timerTick - бұл функция таймер үзілісімен іске қосылатын әр 10 мс деп аталады. Ол уақыт базасы үшін пайдаланылуы мүмкін, бірақ уақытты қажет ететін нәрселер болмауы керек, себебі бұл үзіліс контексті.

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 контроллері арқылы басқару

Nintendo NES контроллері арқылы басқару
Nintendo NES контроллері арқылы басқару

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

Сондықтан мен ескі Nintendo NES контроллерін сатып алуды шештім. Бұл контроллер өте қарапайым интерфейске ие. Бұл 3, 3В жұмыс істейтін 4021 ауысымдық регистр. Сондықтан оны тікелей ESP8266 -ға қосуға болады.

ButtonEvent () функциясы арқылы жұмыс істеп тұрған бағдарламаға жіберілетін контроллердегі барлық түйме оқиғалары.

Ұсынылған: