Orodha ya maudhui:

PixelWall: Hatua 7 (na Picha)
PixelWall: Hatua 7 (na Picha)

Video: PixelWall: Hatua 7 (na Picha)

Video: PixelWall: Hatua 7 (na Picha)
Video: Федя Великий – Хата на тата 7 сезон. Выпуск 9 от 22.10.2018 2024, Septemba
Anonim
PixelWall
PixelWall

Je! Unajua mradi wa Jedwali la Pixel? Nilikuwa na wazo la kugundua kitu kama pikseli, lakini sio kama meza, badala yake kuiweka ukutani.

Ili niweze kulala kitandani na kucheza michezo kadhaa juu yake wakati wa kupumzika.:)

Michezo iliyotekelezwa ni:

  • Tetris
  • Wavamizi wa Nafasi
  • Nyoka
  • Mchoro wa Pixel

kazi za ziada ni:

  • Onyesha wakati wa sasa
  • Onyesha michoro za rangi

PixelWall ina ESP8266 ili iweze kuungana na nyumba yangu-WLAN. Lakini inawezekana pia kutumia PixelWall kama kituo cha kufikia na unganisha moja kwa moja nayo.

Ili kuifanya iwe rahisi kutumia PixelWall yangu, ukuta hutoa Tovuti ya kudhibiti baada ya kuunganisha. Programu zote zinadhibitiwa / kuchezewa kupitia ukurasa wa wavuti. Kwa hivyo sio lazima kusanikisha programu yoyote ya matumizi.

Kwa kuongeza kuna mtawala wa NES ambayo inafanya iwe rahisi kucheza michezo.

Chanzo wazi

Michoro yote ya programu na michoro niliyoweka kwenye github: https://github.com/C3MA/PixelWallFeel huru kuitumia kwa mradi wako mwenyewe.

Hatua ya 1: Kuanzia na Elektroniki

Kuanzia na Elektroniki
Kuanzia na Elektroniki
Kuanzia na Elektroniki
Kuanzia na Elektroniki
Kuanzia na Elektroniki
Kuanzia na Elektroniki

Kutoka kwa mradi mwingine kuna PCB iliyopo na WS2812 LEDs. PCB ina safu 3 na LED 12 kila safu.

Niliamua kutumia PCB hii mara 6. Kwa hivyo napata tumbo la 12x18 la LED.

Hatua ya kwanza ilikuwa kuunganisha taa zote za 216, karibu capacitors 100 na ESP8266.

Uuzaji wa mikono ulihitaji kama masaa 10.

Baada ya jaribio la kwanza la haraka iligundua: kila kitu kinafanya kazi.

Kwa hivyo tunaweza kwenda kwenye sehemu ya fundi.

Hatua ya 2: Kuunda Fundi

Kuunda Fundi
Kuunda Fundi
Kuunda Fundi
Kuunda Fundi
Kuunda Fundi
Kuunda Fundi
Kuunda Fundi
Kuunda Fundi

Kwanza kabisa tunahitaji seperater kwa kila pixel. Wazo ni kuweka bendi ya usawa na wima kupitia V-kata pamoja.

Kila bendi ina unene wa 3mm na urefu wa 17mm. Wao hukatwa kutoka kwa sahani ya HDF na lasercutter.

Michoro yote ya lasercutter imechorwa katika FreeCad (iitwayo "Leiste" kwenye folda ya fundi wa mradi wa github)

Gridi ya taifa hutolewa na Mpangilio wa PCB. Inayo safu ya safu ya 28mm na urefu wa safu 31mm.

Swali linalofuata ni: Jinsi ya kurekebisha bendi kwenye PCB? Gluing sio wazo nzuri sana, kwa sababu inapaswa kutenganishwa ikiwa kitu ni kasoro. Kwa hivyo niliamua kuikunja. Lakini screw itagawanya bendi nyembamba ya 3mm. Kwa hivyo nilichapisha na 3D printer mfukoni kwa bendi (hii ndio sehemu inayoitwa "Halter" katika mradi wa github). Hii ilifanya kazi vizuri kuirekebisha kwenye PCB.

Hatua inayofuata ni kupata sura yake. Kuna maduka kadhaa ya mkondoni ambayo hutoa kukata muafaka wa picha za kibinafsi. Kwa hivyo niliamuru fremu na saizi 343mm x 565mm.

Sura inapata shimo la kuongeza upande wa chini kwa usambazaji wa umeme.

Sahani ya mbele ya plexiglas pia niliamuru mkondoni. Ni WN770 opal Milchglasoptik LD45% saizi: 567x344x2mm

Ina kubadilika kwa 45%.

Kuweka sehemu zote pamoja kwenye fremu.

Mwishowe kutakuwa na visu kadhaa nyuma, ili kila kitu kiwe sawa na kianguke.

Ili kuwa na chaguo la utendakazi wa pixelWall bila mawasiliano yoyote ya WLAN, niliunda paneli inayoweza kubebeka inayoweza kuingizwa kwa hiari upande wa kulia wa fremu (iitwayo "Bedieneinheit" katika mradi wa github).

Hatua ya 3: Programu - Misingi

Programu - Misingi
Programu - Misingi

Moja ya matumizi ni kucheza michezo kwenye PixelWall.

Lakini kuandika mchezo wa pikseli utahitaji mazingira ya utatuzi muhimu kila wakati. Sijui njia yoyote ya kurekebisha mtawala wa ESP8266 kwa njia inayofaa. Kwa hivyo niliamua kuiga nambari yote kwenye PC yangu. Nambari ya ESP imeandikwa kwa Arduino C ++, kwa hivyo nilitumia lugha ya Visual Studio C ++ / CLI kwa masimulizi kwenye PC. Kuna tofauti kati ya kiwango C ++ na lugha ya C ++ / CLI. Kwa mfano katika C ++ / CLI huwezi kuunda kitu cha aina ya Kamba, kwa sababu ya ukusanyaji wa takataka hairuhusiwi kuunda kitu au kumbukumbu / pointer kwa kitu kama hicho. Katika C ++ / CLI lazima utumie vipini: Kamba ^. Lakini vipini vile havipo katika kiwango cha C ++. Kwa hivyo ilibidi niwe mbunifu ili kuleta ulimwengu wote pamoja. Nilitatua hii kwa kuunda faili ya Arduino.h kwa masimulizi. Faili hii inapita tu katika masimulizi masharti yote kupitia fafanua "#fafanua Kamba ya Kamba ^". Hii sio njia ya kawaida, lakini inafanya kazi:) Isipokuwa kwa swichi ndogo za mkusanyaji nambari zote za ESP ni zaidi ya kupatikana katika Visual Studio C ++ / CLI.

Matrix ya LED

Darasa la kwanza nililoandika ni darasa la LED-Matrix. Darasa hili linashughulikia udhibiti na ramani za WS2812 LEDs.

Darasa hili liliandikwa mara mbili: mara moja kwa mtawala wa ESP8266 (LEDMatrixArduino.cpp) na nyingine ambayo itadhibiti maumbo kwenye Fomu ya GUI katika masimulizi (LEDMatrixGUI.cpp).

Darasa hili hutoa njia kadhaa za msingi za kuweka na kusafisha LED ya kibinafsi kwa safu na safu yake.

Kwa kuongeza hutoa kazi ya kuwekaBrightness. Thamani hii itazingatiwa ikiwa LED itawekwa. Kwa hivyo amri zote za kuweka LED zinaweza kufanywa na mwangaza kamili. Kwa mfano: Ikiwa mwangaza umewekwa hadi 50% na kazi ya setLed () inaitwa na RGBColor (255, 255, 255) itaweka LED kuwa 127, 127, 127.

Jopo la LED

Juu ya darasa la Matrix ya LED niliweka darasa la Jopo la LED. Darasa hili hutoa huduma muhimu kwa programu yoyote. Inatoa tabaka mbili zisizo na maana. Hii inaweza kusaidia kwa programu. Kwa mfano kwenye mchezo wa tetris: safu0 ni ya mawe yaliyowekwa chini na safu1 inapaswa kuonyesha jiwe linaloanguka. Kwa hivyo kila mzunguko wa jiwe huanguka kwa pikseli moja chini, programu inaweza kufuta safu1 na kuteka jiwe kwenye nafasi yake mpya. Sio ya lazima kuunda tena mawe yote yaliyowekwa chini.

Kwa kuongeza paneli hutoa

printImage - kuchapisha ikoni zingine kama tabasamu au alama ya alama ya WLAN Chapa - kuchapisha nambari moja katika nafasi maalum ya alama Iliyoundwa Nambari - kuchapisha nambari na viambishi zerosprintNumber - kuchapisha nambari kamili ya nambariLineH - laini ya usawa na urefu maalum wa urefu

Hatua ya 4: Programu - Dhana ya Maombi

Programu - Dhana ya Maombi
Programu - Dhana ya Maombi

Dhana ya jumla ya Ukuta wa pikseli ni:

  • Kila programu ina jina lake
  • Programu imeanza kwa kupiga pixelWall URL pamoja na jina la programu (kwa mfano: 192.168.4.1/tetris)
  • URL inaweza pia kuwa na vigezo vya GET ambavyo vitapelekwa kwa programu
  • Kila programu inapaswa kutoa wavuti ambayo imeonyeshwa kwenye kivinjari.
  • Tovuti hii inaweza hiari kufungua unganisho la wavuti kwa programu ya mwingiliano wa haraka
  • Programu inaweza kutumia unganisho hili la wavuti ili kuwasiliana tena na mbele ya wavuti.
  • Kando na kiolesura cha wavuti programu hupata nyongeza za kushinikiza hafla kutoka kwa jopo la kudhibiti na mtawala wa NES.

Maingiliano ya Maombi

Ili kurahisisha kukuza programu mpya za PixelWall, niliunda kiolesura cha programu zilizoitwa "IPixelApp.h". Muunganisho huu una ufafanuzi 8:

  • kuanza batili kabisa () = 0;
  • mwisho wa utupu () = 0;
  • kitanzi batili () = 0;
  • utupu mpyaWebsocketData (uint8_t * upakiaji wa malipo, size_t lenght) = 0;
  • Tovuti ya kawaidaResponse_t getWebsiteResponse (parameter ya String) = 0;
  • kitufe cha batili kabisaTukio () = 0;
  • kipima muda tupuTick () = 0;
  • Kamba halisi ya GetName () = 0;

anza / mwisho - kazi hii inaitwa ikiwa programu itaanza / kumaliza kwa sababu programu nyingine inaanza

kitanzi - kazi hii inaitwa kutoka kitanzi kuu cha programu kuu. Simu hii sio ya kawaida na nje ya kukatiza.

newWebsocketData - kazi hii inaitwa ikiwa mbele ya wavuti ilituma data.

GetWebsiteResponse - hii hutumiwa na programu kuu kupata ukurasa wa wavuti ambao unapaswa kujibu ombi.

buttonEvent - hii inaitwa ikiwa kitufe chochote kwenye jopo la kudhibiti kilibonyezwa au kutolewa.

timerTick - kazi hii inaitwa kila 10ms, iliyosababishwa na kukatisha kwa timer. Inaweza kutumika kwa msingi wa wakati lakini haipaswi kuwa na vitu vikali vya wakati wowote, kwa sababu ni muktadha wa kukatiza.

getName - hii inapaswa kurudisha jina la programu ya URL

Hatua ya 5: Programu - Maombi

Programu - Maombi
Programu - Maombi
Programu - Maombi
Programu - Maombi
Programu - Maombi
Programu - Maombi
Programu - Maombi
Programu - Maombi

Maombi 7 yafuatayo yanatekelezwa katika toleo la sasa:

Programu chaguomsingi

Hii ni Programu ya kupendeza inayoonyesha hali ya sasa ya WLAN ya PixelWall. Ikiwa ukuta ungeweza kuungana na WLAN ya sasa, itaonyesha Anwani ya IP ambayo ilipata kutoka kwa Mtandao.

Ikiwa haingewezekana (haina ssid iliyowekwa au WLAN haipo au nenosiri haliko) itafungua Accesspoint. Katika kesi hii unaweza kuungana na PixelWall kupitia IP ya chaguo-msingi ya Ufikiaji kutoka ESP8266: 192.168.4.1

Kwenye uso wa wavuti Programu hii inatoa Vifungo 6. Kwa kubonyeza kitufe unaweza kuanza Programu inayofaa.

Programu ya Mipangilio

Programu hii ya kuanzisha WLAN SSID na nywila. Ingiza tu hati za WLAN yako na mwanzoni mwa PixelItajaribu kuungana na WLAN hii.

Michezo

Kuna michezo mitatu ya kawaida iliyowekwa kwenye PixelWall:

  • Tetris
  • Nyoka
  • Wavamizi wa Nafasi

Michezo yote inaweza kuchezwa kupitia kiolesura cha wavuti au na mtawala wa NES.

Programu ya Picha

Hii ni App inayoonyesha rangi kwenye PixelWall. Unaweza kuchagua ikiwa inapaswa kuwa upinde wa mvua unaosonga, kufifia rangi tofauti, kuonyesha rangi ya tuli au kuonyesha tu saizi za rangi za nasibu.

Pikseli Ni

Ukiwa na Programu hii unaweza kuweka kila pikseli kando kwa kugonga kwa kidole chako kwenye Kiolesura cha Wavuti. Kwa hivyo unaweza kuteka picha za ujinga:)

Hatua ya 6: Dhibiti Kupitia Ugani wa Twitch

Dhibiti Kupitia Ugani wa Twitch
Dhibiti Kupitia Ugani wa Twitch

Kuna Ugani kwenye Twitch inayoitwa GetInTouch. Ugani huu unaruhusu kujumuisha miradi ya Arduino kwenye mtiririko wako wa moja kwa moja, ili watazamaji waweze kudhibiti arduino yako wakati wa utiririshaji.

Maktaba ya Arduino kwa hii imeandikwa kwa Arduinos. Lakini ikawa kwamba inaendesha pia kwenye ESP8266 ipasavyo.

Ili kuitumia kwenye Mkondo zifuatazo ni muhimu:

  • Unganisha maktaba ya GetInTouch kwenye nambari (tazama mafunzo)
  • Unganisha pikseli Ukuta na PC yako kupitia kibadilishaji cha USB / RS232 (ambayo hutumiwa pia kuwasha ESP)
  • Sakinisha Maombi ya GetInTouch kutoka kwa Wavuti
  • Sakinisha Ugani wa GetInTouch kwenye kituo chako cha Twitch (angalia mafunzo)

Hatua ya 7: Udhibiti na Mdhibiti wa Nintendo NES

Udhibiti na Mdhibiti wa Nintendo NES
Udhibiti na Mdhibiti wa Nintendo NES

Baada ya kuitumia kwa muda, zinageuka kuwa kucheza kwenye simu ya rununu sio rahisi sana. Mara kwa mara unakosa vifungo kwa sababu hauna maoni kwenye kidole chako ikiwa uko juu ya kitufe au la. Kwa kuongezea wakati mwingine mawasiliano ya Websocket yanaweza kuvuja kwa muda mfupi.

Kwa hivyo niliamua kununua mtawala wa zamani wa Nintendo NES. Mdhibiti huyu ana interface rahisi sana. Rejista yake ya kuhama tu ya 4021 ambayo inaendesha na 3, 3V. Kwa hivyo inaweza kushikamana moja kwa moja na ESP8266.

Matukio yote ya kitufe kwenye kidhibiti ambapo hupelekwa kwa programu inayotumia kupitia kitufe cha kifungoEvent ().

Ilipendekeza: