Мазмуну:

PixelWall: 7 кадам (Сүрөттөр менен)
PixelWall: 7 кадам (Сүрөттөр менен)

Video: PixelWall: 7 кадам (Сүрөттөр менен)

Video: PixelWall: 7 кадам (Сүрөттөр менен)
Video: Pixel LED Patta || Pixel LED Belt || Pixel LED Wholesale Rate || Pixel LED Patta Wholesale 2024, Ноябрь
Anonim
PixelWall
PixelWall

Сиз Pixel-Table долбоорун билесизби? Менде мындай пикселдик нерсени ишке ашыруу идеясы бар болчу, бирок аны столго эмес, дубалга орнотуу.

Мен диванда жатып, эс алып жатып анын үстүндө оюн ойной алам.:)

Ишке ашырылган оюндар:

  • Тетрис
  • Space Invaders
  • Snake
  • Pixel Draw

кошумча функциялар болуп төмөнкүлөр саналат:

  • Учурдагы убакытты көрсөтүү
  • Түс анимацияларын көрсөтүү

PixelWallда ESP8266 бар, ошондуктан ал менин үйүмө WLANга туташа алат. Бирок PixelWallды кирүү чекити катары колдонууга жана ага түз туташууга да болот.

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

Кошумча NES контролери бар, ал оюндарды ойнотууну жеңилдетет.

Ачык булак

Мен githubга койгон бардык программалык камсыздоо жана механикалык чиймелер: https://github.com/C3MA/PixelWallFeel free to use its own project.

1 -кадам: Электрондук менен баштоо

Электрондук менен баштоо
Электрондук менен баштоо
Электрондук менен баштоо
Электрондук менен баштоо
Электрондук менен баштоо
Электрондук менен баштоо

Башка долбоордон WS2812 светодиоддору бар болгон PCB бар. ПХБда 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" деп аталган бөлүк). Бул аларды PCBде оңдоо үчүн абдан жакшы иштеген.

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

Рамка ылдый жагында электр менен камсыздоо үчүн кошумча тешик алат.

Плексиглас алдыңкы плитасы мен дагы интернеттен заказ кылдым. Бул WN770 опал Milchglasoptik LD45% өлчөмү: 567x344x2mm

Анын тунуктугу 45%ды түзөт.

Бардык бөлүктөрдү кадрга бириктирүү.

Акыр -аягы, баары оңдолуп, түшүп кетпеши үчүн, арткы жагына бир нече тилкелер сайылат.

Эч кандай WLAN байланышы жок pixelWallдын иштөө мүмкүнчүлүгүнө ээ болуу үчүн, мен фреймдин оң жагына (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

Мен жазган биринчи класс LED-Matrix класс. Бул класс WS2812 светодиоддорун көзөмөлдөөнү жана карта түзүүнү карайт.

Бул класс эки жолу жазылган: бир жолу ESP8266 контроллери үчүн (LEDMatrixArduino.cpp) жана симуляциядагы Form GUIдеги фигураларды башкара турган дагы бирөө (LEDMatrixGUI.cpp).

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

Мындан тышкары, ал setBrightness функциясын камсыз кылат. Бул көрсөткүч LED коюлса каралат. Ошентип, бардык LED орнотулган буйруктар толук жарыктыкта аткарылышы мүмкүн. Мисалы: Жарыктык 50% га коюлса жана setLed () функциясы RGBColor (255, 255, 255) менен чакырылган болсо, анда LEDди 127, 127, 127ге коёт.

LED панели

LED Matrix классынын үстүнө мен LED Panel классын койдум. Бул класс каалаган тиркеме үчүн пайдалуу функцияларды камсыз кылат. Бул эки көз карандысыз катмарды камсыз кылат. Бул колдонмо үчүн пайдалуу болушу мүмкүн. Мисалы, тетрис оюнунда: layer0 астындагы бекитилген таштар үчүн, ал эми layer1 - түшкөн ташты көрсөтүү. Ошентип, ар бир цикл таш бир пикселдин түбүнө түшөт, тиркеме 1 катмарын тазалап, ташты жаңы абалына тарта алат. Анын түбүндөгү бардык бекитилген таштарды кайра тартуунун кажети жок.

Кошумча панель камсыз кылат

printImage - смайликтер же WLAN символу сыяктуу кээ бир сүрөтчөлөрдү басып чыгарууDigit - белгилүү бир позицияда бир цифраны басып чыгарууFormatedNumber - префикстери бар сандарды басуу zerosprintNumber - бүтүн санды басып чыгарууLineH - горизонталдык конкреттүү узундуктаLineV - белгилүү узундуктагы горизонталдык сызык

4 -кадам: Программалык камсыздоо - Колдонмо Концепциясы

Программа - Колдонмо Концепциясы
Программа - Колдонмо Концепциясы

Пиксел дубалынын жалпы түшүнүгү:

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

Колдонмо интерфейси

PixelWall үчүн жаңы тиркемелерди иштеп чыгууну жеңилдетүү үчүн, мен "IPixelApp.h" аттуу тиркемелер үчүн интерфейс түздүм. Бул интерфейс 8 аныктаманы камтыйт:

  • виртуалдык боштук баштоо () = 0;
  • virtual void end () = 0;
  • virtual void loop () = 0;
  • newWebsocketData виртуалдык жараксыздыгы (uint8_t * жүгүн, size_t узундугун) = 0;
  • виртуалдык WebsiteResponse_t getWebsiteResponse (String parameter) = 0;
  • Virtual void buttonEvent () = 0;
  • виртуалдык боштук timerTick () = 0;
  • виртуалдык String getName () = 0;

баштоо / аяктоо - бул функция, эгерде тиркеме башталса / бүтсө, чакырылат, анткени башка тиркеме башталат

цикл - бул функция негизги программанын башкы циклинен чакырылат. Бул чалуу жөнсүз жана үзгүлтүктөн тышкары.

newWebsocketData - бул функция веб -фронтто маалыматтарды жөнөтсө чакырылат.

getWebsiteResponse - бул башкы программа тарабынан веб -баракчаны алуу үчүн колдонулат, ал суроо -талапка жооп бериши керек.

buttonEvent - бул башкаруу панелиндеги кандайдыр бир баскыч басылганда же бошотулганда чакырылат.

timerTick - бул функция ар бир 10ms деп аталат, таймердин үзгүлтүккө учурашынан улам. Бул убакыт базасы үчүн колдонулушу мүмкүн, бирок эч кандай интенсивдүү нерселерди камтыбашы керек, анткени анын үзгүлтүккө учуроочу контексти.

getName - бул URL үчүн колдонмонун атын кайтарышы керек

5 -кадам: Программалык камсыздоо - Тиркемелер

Программалык камсыздоо - Тиркемелер
Программалык камсыздоо - Тиркемелер
Программалык камсыздоо - Тиркемелер
Программалык камсыздоо - Тиркемелер
Программалык камсыздоо - Тиркемелер
Программалык камсыздоо - Тиркемелер
Программалык камсыздоо - Тиркемелер
Программалык камсыздоо - Тиркемелер

Төмөнкү 7 колдонмо учурдагы версияда ишке ашырылат:

Демейки колдонмо

Бул PixelWallдын учурдагы WLAN абалын көрсөтүүчү атайын колдонмо. Эгерде дубал азыркы WLANга туташа алса, анда ал тармактан алган IP дарегин көрсөтөт.

Эгер бул мүмкүн болбосо (ssid орнотулбаган же WLAN жок болсо же сырсөз туура эмес болсо), ал Accesspoint ачат. Бул учурда сиз PixelWallга ESP8266дан демейки Accesspoint IP аркылуу туташа аласыз: 192.168.4.1

Желе интерфейсинде бул колдонмо 6 баскычты сунуштайт. Баскычты басуу менен сиз тийиштүү Колдонмону баштай аласыз.

Орнотуулар колдонмосу

Бул WLAN SSID жана паролду орнотуу үчүн колдонмо. Жөн гана WLANыңыздын грамоталарын киргизиңиз жана PixelWillдин кийинки башталышында бул WLANга туташууга аракет кылат.

Оюндар

PixelWallда программаланган үч классикалык оюн бар:

  • Тетрис
  • Snake
  • Space Invaders

Бардык оюндарды веб -интерфейс же NES контроллери аркылуу ойнотсо болот.

Сүрөт колдонмосу

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

Pixel It

Бул колдонмо менен сиз Webinterface манжаңыз менен таптап, ар бир пикселди өзүнчө орното аласыз. Ошентип, сиз кээ бир кооз сүрөттөрдү тарта аласыз:)

6 -кадам: Twitch Extension аркылуу көзөмөлдөө

Twitch Extension аркылуу башкаруу
Twitch Extension аркылуу башкаруу

Twitchте GetInTouch аттуу кеңейтүү бар. Бул кеңейтүү Arduino долбоорлорун жандуу агымга интеграциялоого мүмкүндүк берет, ошондо көрүүчүлөр агым учурунда сиздин ардуинону башкара алышат.

Бул үчүн Arduino китепканасы Arduinos үчүн жазылган. Бирок ал ESP8266 менен да иштээри белгилүү болду.

Аны Агымда колдонуу үчүн төмөнкү кадамдар керек:

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

7 -кадам: Nintendo NES Controller тарабынан көзөмөл

Nintendo NES Controller тарабынан көзөмөл
Nintendo NES Controller тарабынан көзөмөл

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

Ошондуктан мен эски Nintendo NES контроллерин сатып алууну чечтим. Бул контроллер абдан жөнөкөй интерфейске ээ. Бул жөн эле 4021 нөөмөт реестри, ал 3, 3V менен иштейт. Ошентип, аны ESP8266 менен түз байланыштырса болот.

ButtonEvent () функциясы аркылуу иштеп жаткан колдонмого жөнөтүлгөн контроллердеги бардык баскыч окуялары.

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