Talaan ng mga Nilalaman:
- Hakbang 1: Mga Materyales at Tool
- Hakbang 2: Gupitin ang LED Strip Sa Mas Maliliit na Strip
- Hakbang 3: Magkakasabay sa Paghinang ng Screen
- Hakbang 4: Paghihinang ng Core Electronics
- Hakbang 5: Controller
- Hakbang 6: Shirt
- Hakbang 7: Programming
- Hakbang 8: Tapos na Produkto
Video: Pong Playing Flexible Screen sa isang Shirt: 8 Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:15
Ito ang aking kasuutan sa Halloween para sa taong 2013. Nasa mga gawa ito nang halos isang taon at tumagal ng ilang oras na tao upang lumikha. Ang screen ay 14 by 15 pixel, kaya, medyo mababang resolusyon ngunit maaari pa rin itong gumawa ng ilang mga nakakatuwang bagay. Ito ay pisikal na may kakayahang umangkop sa lahat ng direksyon, kahit na hindi ito maaaring nakatiklop nang walang pinsala. Mayroon itong isang controller na binubuo ng isang solong pindutan at slide pot, na konektado sa isang pro mega sa pamamagitan ng USB. Upang mapanatili itong buhay sa loob ng mahabang panahon gumagamit ito ng dalawang nakasisindak na 2200 mAh na baterya na naka-wire sa serye upang makuha ang kinakailangang boltahe, at pagkatapos ay isang 5 Volt regulator upang magamit ito. Ang lahat ng mga electronics ay nakalagay sa mga bulsa sa loob ng shirt upang maaari silang alisin at sa gayon maaaring hugasan ang shirt. Nagpe-play ito ng isang functional game ng pong. Una nitong binigyan ng grasya ang isa sa mga salitang "PONG PLAY" sa kaibig-ibig asul na pagsulat gamit ang isang binagong bersyon ng Tom Thumb font (maaaring matagpuan sa https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Pagkatapos ng limang segundo maaaring ibigay ang pagpipilian upang pindutin ang pindutan upang magpatuloy, o upang hindi pindutin ang pindutan at iwanan ang isang perpektong mahusay na karanasan sa likod. Kapag pipiliin ng isa na pindutin ang pindutan, nagsisimula ang laro. Ang isang pulang sagwan sa kanan ay ang sagwan ng computer at ang berdeng sagwan sa kanan ay ang player na sagwan, na kinokontrol ng slide pot upang umakyat at pababa. Ang bola ay tumatalbog habang sinusubukan ng bawat panig na puntos ang isang puntos. Maaaring pindutin ng manlalaro ang bola gamit ang gilid ng kanilang sagwan upang mapabilis ito (isang magandang tampok) habang hindi ito magagawa ng computer, at sa halip ay ma-stuck sa paggalaw ng bahagyang mas mabagal kaysa sa bola. Kapag ang isang puntos ay nakapuntos ng isang pixel ay nagbabago sa puti sa pagmamarka sa panig ng sagwan. Nagbibilang ito sa binary mula sa ilalim. kung saan ang berde o pula ay zero at puti ay 1. 21 ang marka upang manalo (o matalo depende sa kung sino ang makakakuha ng 21 puntos) at sa gayon kapag binabasa ng manlalaro ng sagwan 10101, ang teksto na "PANALO KA" ay ipinakita. Muli sa binagong Tom Thumb. Ganun din ang nangyayari ngunit sa halip na sa "IWALA KA" na ipinakita. Matapos ang isang panalo o pagkatalo ang laro ay nagsisimula muli sa puntong kanan pagkatapos ng Pong Play. Upang i-restart nang buo ang restart button sa "Magic Box", na kilala rin bilang the-box-with-all-the-electronics-maliban-sa-screen, ay pinindot.
Hakbang 1: Mga Materyales at Tool
Ang mga bagay na minarkahan ng isang * ay opsyonal ngunit inirerekumenda At sa gayon ay walang partikular na pagkakasunud-sunod … Mga Kagamitan: 4 Yard ng Adafruit Neopixle 60 pixle bawat metro na strip 1 T-shirt * 1 pares ng Suspenders 1/2 bakuran ng tela ay magiging higit sa sapat (Hindi mas gusto ang mahinahon na paghabi) 6 paa USB Isang lalaki sa USB B male cable 1 USB Isang babaeng konektor 3 2 pin JST mga babaeng konektor 4 2 pin JST male wires charger ng baterya 2 6600 mah baterya 1 Estilo ng arcade style 1 arduino pro-mega 1 FTDI header 1 USB B babaeng konektor na may breakout board 1 on / off switch (toggle) 1 reset switch (toggle o panandalian) 1 slide potentiometer * 1 slide pot knob 1 high amp konektor pares * 1 project case 1 5V 3+ amp voltage regulator a maliit kaunting plastik na ilang panghinang na ilang kawad * ilang maiinit na pandikit * ilang nababanat ilang oras (Marahil ay medyo higit pa sa "ilang") ilang pagtitiyaga (Marahil ay kakailanganin mo ng kaunting aktuwal na ito) ilang pag-init ng pag-urong ng tubo o electrical tape ilang sobrang pandikit ng ilang bakal sa pag-backing Mga Tool * Pagtulong sa Mga Kamay Normal na Kamay s (o isang taong may access sa kanila) Soldering Iron * Mainit na Pandikit Dremel o Sandpaper Chisel Wire Strippers Wire Cutters Staple Gun Screw Driver Saw Pins Sewing Machine Fabric Scisors
Hakbang 2: Gupitin ang LED Strip Sa Mas Maliliit na Strip
Gumamit ng mas gusto mong pag-cut utensil at gupitin ang strip sa 14 na mga segment, bawat 15 pixel ang haba. Gupitin lamang sa pagitan ng mga bakas ng tanso, may label na isang bagay tulad ng "DO" "DIN" "+ 5V" at "GND". Kung ito ay na-solder na sa tanso ang kanilang gupitin mismo. Subukang huwag gupitin ng sobra sa nakalantad na tanso ngunit kung palayasin mo ito nang kaunti ay ayos lang. Kapag ang lahat ng 14 na mga piraso ay pinutol, gupitin ng kaunti ang goma sa bawat dulo upang mawala ito sa paraan para sa paghihinang ng mga piraso.
Hakbang 3: Magkakasabay sa Paghinang ng Screen
Kunin ang kawad at gupitin ito sa halos 3.5 pulgada (9 cm) na mga segment. Sa aking kaso mayroon akong tatlong magkakaibang mga kulay upang gawing mas madali itong panatilihing tuwid kapag naghihinang, ngunit ang isang kulay ay gagana nang maayos. Kakailanganin mo ang tungkol sa 40 ng mga maliliit na lalaki, ngunit gupitin ang ilang iba pa kung sakali. Kapag Natapos mo na ang paggupit ng kawad, hubarin at i-lata ang mga dulo (Kung mayroon kang karanasan sa paghihinang maaari kang lumaktaw sa susunod na talata), ibig sabihin pagkatapos mong alisin ang kaunting plastik na maglagay ng ilang panghinang sa mga dulo ng bawat kawad. Huwag painitin ang panghinang at subukang lumipat sa kawad, magpainit sa iyong panghinang na bakal mula sa ilalim ng tanso at ilagay ang panghinang sa itaas. Maging mapagpasensya at hintaying matunaw ng mainit na kawad ang solder. Nakakaakit na matigas ang panghinang sa panghinang upang makapagsimula ito (Ang aking pagkainip at alam ko eksakto ang nararamdaman mo) ngunit ang solder ay hindi din mananatili. Gawin ang pareho para sa nakalantad na mga bakas ng tanso sa bawat dulo ng mga seksyon ng strip. Kung mayroon na itong solder huwag magalala tungkol dito. Para sa strip baka gusto mong bumuo ng isang maliit na tambak upang mas madali ito sa paglaon. Kapag nagtatrabaho sa strip, gawin ito nang mabilis, at subukang huwag gumastos ng maraming oras sa paglalapat ng init sa strip. Gawin lamang ang kailangan mong gawin upang matunaw ang solder papunta sa bakas. Maghinang ng isang wire sa bawat bakas sa dulo ng unang strip (Ang unang strip na ang isa sa mga wire at konektor, solder ito sa nakalantad na dulo). Kung titingnan mo ang strip makikita mo ang maliit na mga arrow dito na umaakyat hanggang sa dulo kung saan mo hinangin ang kawad. Kumuha ng isa pang strip upang ang mga arrow ay tumuturo sa kabaligtaran na direksyon, at solder ang wire na nagmumula sa bakas ng GND sa bakas ng GND ng iba pa, ang + 5V sa + 5V at iba pa. Ulitin ito siguraduhin na ang mga arrow ay lumilipat ng mga direksyon pagkatapos ng bawat seksyon upang kung susundin mo ang mga ito ay mag-zig pataas at pababa, at maaari itong maiunat sa mahabang strip sa huli. Kapag na-solder na ang lahat ng 14 na piraso, ilatag ang mga ito at pumila pagkatapos ay bumubuo ang LED ng isang grid. Pagkatapos ay panatilihin silang magkasama gamit ang isang pamamaraan na maaaring alisin sa paglaon nang walang pinsala sa strip. Gumamit ako ng scotch tape. Ito ay sapat na malagkit upang mapanatili ang lahat ngunit hindi masyadong malagkit na mag-iwan ng nalalabi. Hindi ko inirerekumenda ang anumang permanente, tulad ng mga staple o duct tape. Kapag ang lahat ay na-tape na magkasama maghinang ng isang kawad mula sa strip sa ibaba + 5V sa isa na agad sa tabi nito. Ulitin hanggang sa ang buong ilalim ay may mga power taps na papunta sa kabuuan. Ito ay upang ang screen ay hindi lumabo habang ang linya ng pag-unlad ng LEDs.
Hakbang 4: Paghihinang ng Core Electronics
Solder ang USB B breakout board (BOB) sa konektor ng USB B. Paghinang ng naaangkop na mga wire sa konektor ng USB A. Pinapayuhan ko ang pagtingin sa pin-out ng konektor tulad ng matatagpuan sa website na ito, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Huwag mag-alala tungkol sa kung saan maghinang ang iba pang mga dulo ng mga wire sa konektor ng USB A ngayon din; iyon ay sasakupin sa hakbang ng controller. Gupitin ang data konektor mula sa strip, ang babaeng konektor, hindi ang konektor ng lalaki (Ang babaeng konektor ay nakuha mula sa kabilang dulo). Paghinang ang mga konektor ng lalaki na JST sa mga dulo ng baterya upang ang pula ay mapula at ang itim ay mapula. Matunaw ang init na pag-urong ng tubo sa mga nakalantad na mga wire (nadulas bago maghinang) upang hindi sila maikli o gumamit ng ibang bagay tulad ng electrical tape o mainit na pandikit. Maghinang ng ilang mga wires sa lahat ng mga babaeng konektor ng JST. Siguraduhing naka-plug in ang isang male end upang ang mga pin ay hindi lumipat. Mag-ingat sa polarity at tiyaking tumutugma ang mga wire sa mga konektor ng lalaki. Ang mga wire ng panghinang ay isang konektor ng mataas na boltahe (ngunit hindi ito pares), sa sandaling muli, tinitiyak na ang anumang mga kulay ay tumutugma at na naka-plug ang mga ito upang maiwasan ang anumang mga paglilipat ng mga pin. Paghinang ng babae lamang na konektor / pagpupulong ng wire upang ang mga ito ay wired sa serye, hindi parallel, upang makaraan ito sa boltahe ng threshold para sa power regulator. Kaya, hinihinang ang positibong kawad sa negatibong kawad ng iba pang pagpupulong kaya ngayon mayroon kaming isang hindi solong na positibong kawad at isang negatibong hindi solder na kawad at ang dalawang solder na mga wire ay solder sa iba't ibang mga konektor. Kunin ang negatibong kawad at i-save ito upang ma-solder sa negatibong wire sa ibang lugar. Ngayon kunin ang positibong kawad at solder ito sa switch Kung mayroong tatlo o higit pang mga pin (o higit sa isang paraan ng pagiging "on") na panghinang ito sa gitnang pin. Tandaan na ang "Gitnang pin" ay maaaring hindi pisikal na nasa gitna. Ang paraan upang makilala ito ay upang mahanap ang pin na, kapag ang switch ay nakabukas sa anumang estado ay palaging konektado sa ibang pin. Kung walang ganitong pin ay mayroon kang isang napaka-espesyal na switch; ikonekta lamang ito sa anumang pin at siguraduhin na ang susunod na kawad na solder sa switch ay makakonekta sa kawad na hindi bababa sa isa sa estado. Ngayon solder ang positibong paggamit wire sa boltahe regulator sa kabaligtaran dulo ng switch, tulad ng tinalakay sa itaas. Paghinang ng boltahe ng postive sa positibong dulo ng hindi na-solder na mataas na kasalukuyang konektor. Kunin ang negatibong wire ng pag-inom at i-solder ito sa negatibong dulo ng mataas na kasalukuyang konektor. Pupunta kami ngayon sa paghihinang ng kapangyarihan kahanay sa Arduino at Power strip. Ngayon kunin ang mga boltahe ng output ng regulator ng boltahe at maghinang ng dalawang piraso ng kawad sa parehong positibo at negatibong mga dulo upang lumabas sila sa isang hugis Y. Maghinang ng dalawang konektor sa pin sa positibo at negatibong mga wire ng led strip assembling. Hindi mahalaga kung anong uri ng konektor ang iyong ginagamit, maaari itong maging JST o sa aking kaso ang ilang power / audio cable o isang bagay (Hindi ako sigurado, at humihingi ako ng paumanhin para sa walang anumang mga larawan). Ang panghinang na isa sa mga positibong wire ng kuryente sa positibong dulo ng kabaligtaran na konektor para sa light strip at isa sa mga negatibong wires sa kabilang pin sa konektor. Gawin ang pareho ngunit para sa isang male JST konektor / pagpupulong ng wire. Tuwing tandaan na insulate ang mga solder joint upang maiwasan ang mga maiikling shorts. Ngayon sa kung ano ang gagawin sa konektor ng USB B. Paghinang ang positibong kawad sa isang 5v hole sa Arduino Pro Mega. Kunin ang ground wire at solder ito sa isang butas ng GND. Dalhin ang D + at solder ito sa digital pin (o sa kasong ito, butas) 40. Solder D- to analog pin 15. Solder ang data end ng babaeng konektor na kasama ng LED strip male connector sa data pin 6 at ang ground wire sa isang pin ng GND. Ang masking o scotch tape ay mahusay na gumagana para sa paghawak ng mga wire sa board upang hindi sila mahulog kapag na-flip ito upang ma-solder. Ngayon kumuha ng isang pansamantalang pindutan at maghinang ng isang kawad mula sa isang dulo sa pin ng VCC (o anumang boltahe na output pin) at ang iba pang mga dulo sa RESET pin.
Hakbang 5: Controller
Una ay ang pagpili ng tamang hugis upang magsimula sa. Ang lahat ay nakasalalay sa kung paano mo nais na nakabalangkas ang controller. Gusto ko ng higit pa sa isang flat controller kaya't nakakuha ako ng isang piraso ng 3 1/2 "by 3/4" plank. ayusin ang mga bahagi sa isang paraang tila umaangkop at komportable upang gumana. Gumamit ng isang french curve, compass, tatsulok, at tuwid na gilid upang gumuhit kung saan dapat pumunta ang lahat ng mga piraso. Gupitin ang pangunahing balangkas gamit ang tool sa pagputol na iyong pinili. Ang isang ban saw ay pinakamahusay ngunit gumamit ako ng isang sawing, na gumagana nang maayos. Buhangin ang mga gilid upang maayos silang lumipat, pagkatapos ay buhangin ang mga sulok upang mas komportable ito. I-drill ang butas para sa switch, pagkatapos ay buhangin, pait, at / o Dremel ang anumang bahagi sa ilalim na gagawing angkop. Subukang huwag gumawa ng anumang bagay sa tuktok at i-sand out lamang kung ano ang kailangan mo upang maipasok ito sa pamamagitan ng pag-ikot, pag-angling, o kung ano pa man upang maipasok ito. Kapag naidugtong ito sa plastic nut at ikabit ang lumipat I-drill ang lugar para sa potentiometer knob upang magkasya at paitin ang isang lugar upang maaari itong lumubog at magkasya lahat. Mag-drill ng ilang mga butas upang mapigilan ito ng isang tornilyo. Baluktot ang maliliit na piraso ng USB Ang isang konektor na ginagawa itong pangkalahatang lapad ay tumaas nang kaunti (tingnan ang mga larawan). Payatin ang isang bahagi para sa konektor, unti-unting suriin upang matiyak na umaangkop ang konektor. Super pandikit ang konektor sa puwang nito. Kumuha ng isang maliit na piraso ng plastik at gupitin ito sa isang hugis na magkakasya sa konektor (tingnan ang mga larawan), at pagkatapos ay i-staple ito sa kahoy. Putulin ang anumang mga piraso na maaaring hadlangan. Screw sa potentiometer at ilakip ang knob. Paghinang ang positibong kawad sa isa sa mga dulo ng potentiometer (hindi ang variable na bahagi) at ang negatibong kawad sa kabaligtaran na dulo. Paghinang ang D- pin sa variable pin sa palayok. Maghinang ng isang kawad mula sa pin sa palayok na may positibong kawad sa isa sa mga pin sa pindutan. Solder D + sa iba pang pin sa pindutan. Putulin ang ekstrang kawad at ihiwalay ang mga piraso na nangangailangan nito.
Hakbang 6: Shirt
Humanap ng komportableng shirt na magpapasara sa ilaw. Pinili ko ang pangunahing puting T-shirt na ito. Hindi mahalaga ang kulay o istilo basta ang ilaw ay makikitang nagniningning mula sa loob. Gayunpaman hindi ko inirerekumenda ang mga graphic sa harap. Ilatag ang lahat sa shirt upang matulungan kang magpasya kung saan mo ito gusto at gumamit ng isang nabura na tool sa pagmamarka upang iguhit ito. Ako (nangangahulugang ang ilang mga taong kakilala ko) ay mayroong isang lapis na sinadya para sa pagmamarka ng mga tela na madaling malabhan. Sukatin ang laki ng mga baterya, case ng controller, at i-screen at gupitin ang mga piraso ng papel upang tumugma. Pagkatapos ay i-pin ang papel sa isang piraso ng tela na hindi nababanat. Ang isang habi ay gumagana nang maayos para dito. Pagkatapos ay gupitin ang rektanggulo na nag-iiwan ng halos isang-kapat na pulgada para sa isang tahi hanggang sa paligid. Pagkatapos ay gamit ang piraso ng papel bilang isang gabay na bakal sa mga natitiklop sa tela. Ngayon ang papel ay maaaring alisin. Sa bahagi ng bulsa na magiging tuktok na itupi ito sa sarili nitong tatlong beses. Iron at i-pin ito upang mapanatili ito sa lugar. Tumahi ng isang tila lahat ng mga paraan kasama ang gitna ng kulungan. Ngayon kunin ang sulok at tiklupin ito upang ang mga hindi natahi na gilid na patayo sa bawat isa ay magkapareho at tumahi ng tila kasama ang ironed tupi na pinakamalapit sa sulok (Talagang makakatulong ang mga larawan). Gawin ito para sa kabilang sulok din. Kung magkakaroon ka ng isang switch ng toggle na lalabas sa isang bulsa, tumahi ng butas ng butones sa base ng bulsa kung saan hinawakan ng switch. Pagkatapos ay tahiin ang isang butas ng pindutan at gupitin ang gitnang bahagi. Hindi ko talaga maibigay ang detalyadong mga tagubilin dahil nagkaroon ako ng isang cool na tool upang makagawa ng mga butas sa pindutan. Tiyaking gumawa ka lang ng mga butas bago maitahi ang bulsa. Kumuha ng ilang mga pin at sundutin ang mga ito sa shirt sa mga sulok ng mga marka para sa bulsa. Kunin ang bulsa at ilagay ang bawat sulok sa isang pin (sa loob ng shirt), naiwan ang isang isang pulgada pulgada para sa tahi, at i-pin ito sa shirt. Matapos ma-pin ang bulsa. alisin ang mga pin na hindi hawak ang bulsa at itahi ang bulsa sa shirt. Ulitin para sa lahat ng mga bulsa. Para sa malaking bulsa na humahawak sa screen mag-iwan ng puwang para sa mga wire sa ilalim ng bulsa. Upang maglagay ng isang butas sa shirt markahan ang lugar at kumuha ng isang bakal sa pag-back (na may shinier bahagi sa tela) at bakal sa. Pagkatapos, para sa isang maliit na butas (tulad ng ginamit ko para sa switch ng toggle), gumawa ng butas ng buton. Para sa isang mas malaking butas, markahan ang balangkas at gumamit ng isang zigzag stitch kasama ang linya (o kurba o kung anong mayroon ka) at gupitin ang gitnang bahagi. Kung nais mo maaari kang gumamit ng mga suspender upang hawakan ang bigat ng mga bulsa, ang dalawang clip na hawak sa mga bulsa sa harap at ang back clip papunta sa pantalon. Nakuha ko rin ang isang maliit na manggas ng tela na tinahi sa mga bahagi ng mga suspender na hahawak sa aking balat. Ang dalawang kamiseta ay maaaring maging isang napakainit kaya nag-opt out ako at ginamit ang maliit na telang manggas.
Hakbang 7: Programming
At narito ang code. Mayroong ilang mga bahagi na mahusay na nagkomento ngunit ang karamihan ay hindi. Kung mayroon kang mga katanungan sa iba't ibang mga bahagi maaari mong ibigay sa akin ang numero ng linya (na may # isama bilang linya na numero uno) o bigyan ako ng isang kopya ng (mga) linya at ang pagpapaandar kung saan ito naninirahan (tulad ng loop () o compMovePaddle ()) at gagawin ko ang aking makakaya upang ipaliwanag ito sa iyo, pagkatapos ay magdagdag ng isang puna sa code na nagpapaliwanag nito. # isama ang # tukuyin ang PIN 6 // na nagsasabi kung alin ang mga input pin para sa game int buttonPin = 40; // nagdidikta ng iskor, itinatago sa isang bianary array dahil mas esier int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // dictates the ball's direction int bvd = 0; // 0 is down, 1 is up int bhd = 0; // 0 is right, 1 is left // dictates the bola posisyon int bvp = 8; int bhp = 6; // check to see if the ball is in fast mode boolean fast = false; // check kung ito ay isang marka. boolean cIsPoint = false; boolean pIsPoint = false; // paddle posisyon int cPaddle = 0; int pPaddle = 0; matagal nang nakaraangMillis = 0; matagal nang nakaraangMillisForComp = 0; // itakda ang mga oras ng pagkaantala para sa mabilis at mabagal na paglipat ng bola ng "Int" sa normInt at fastInt ay para sa interval int normInt = 50; int fastInt = 10; // ginamit upang suriin para sa isang panalo. Ang 1 ay panalo ng manlalaro, -1 sa panalo sa computer, at ang 0 ay wala pang nalulugod sa int win = 0; // upang mapupuksa ang isang bug. ginamit sa pahayag ng addOne at kung saan man. int na = 0; // Thing ipinakita bago simulan, -1 ay isang pagtakas int pongPlay = {1, 2, 3, 4, 10, 11, 12, 13, 16, 18, 20, 27, 29, 33, 34, 41, 42, 61, 62, 63, 70, 71, 72, 76, 85, 86, 88, 91, 92, 94, 100, 101, 102, 103, 131, 132, 136, 139, 144, 145, 146, 147, 148, 161, 162, 166, 175, 183, 185, 192, 194, 195, 196, 197, 198, 199, 204, 205, 206, 207, 208, -1}; // if you win int youWin = {1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 27, 33, 34, 39, 46, 47, 48, 49, 54, 55, 56, 57, 58, 77, 78, 79, 84, 88, 91, 92, 93, 94, 95, 99, 103, 106, 110, 114, 118, 130, 131, 132, 144, 145, 146, 147, 151, 162, 163, 168, 169, 170, 177, 181, 192, 193, 204, 205, 206, 207, -1}; // if you lost int youLose = {1, 3, 5, 16, 17, 18, 19, 20, 24, 26, 28, 31, 32, 32, 33, 34, 35, 39, 46, 47, 48, 49, 62, 65, 77, 78, 79, 84, 86, 88, 91, 94, 99, 103, 106, 110, 122, 123, 124, 130, 131, 132, 144, 148, 152, 153, 154, 162, 163, 168, 169, 170, 181, 192, 193, 204, 205, 206, 207, 208, -1}; // set up the led strip Adafruit_NeoPixel strip = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // setting up, walang pin 40 para sa pag-input, nagsisimula ang strip, ipinapakita ang // message at ipinapakita ito. void setup () {pinMode (buttonPin, INPUT); strip.begin (); para sa (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); pagkaantala (5000); habang (digitalRead (buttonPin) == LOW) {// Ito ay isang bitag! (hanggang sa mapindot ang pindutan.)}} void loop () {clearScreen (); // draw the paddles to show the score for (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } iba pa kung ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } kung (compScore == 1) {strip.setPixelColor (5 + i, strip. Color (255, 255, 255)); } iba pa kung ((compScore == 0)) {strip.setPixelColor (5 + i, strip. Color (255, 0, 0)); }} // kumukuha ng bola sa pagsisimula nito ng posisyon strip.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // nagpapasya kung ang bola ay pataas o pababa habang (pIsPoint == false && cIsPoint == false) {clearScreen (); unsigned long currentMillis = millis (); // itatalaga ang posisyon ng manlalaro sagwan pPaddle = checkPaddlePos (); // sumusuri sa susunod na posisyon na suriinSusunod (); // paglipat ng bola kung (mabilis == maling) {kung (currentMillis - nakaraangMillis> normInt) {nakaraangMillis = currentMillis; ilipat ang Ball (); }} iba pa kung (mabilis == totoo) {kung (currentMillis - nakaraangMillis> fastInt) {nakaraangMillis = currentMillis; ilipat ang Ball (); }} // iguhit ang bola kung (bhp% 2! = 0) {strip.setPixelColor (bhp * 15 + 14-bvp, strip. Color (255, 255, 255)); } iba pa kung (bhp% 2 == 0) {strip.setPixelColor (bhp * 15 + bvp, strip. Color (255, 255, 255)); } // computer paddle movement compMovePaddle (); // draw's the paddles drawPaddles (); // actualy ilagay ang lahat.strip.show (); // pagsuri upang makita kung ang isang puntos ay nakuha kung (pIsPoint == totoo) {na = 0; bhd = 0; addOne (); pahinga; } iba pa kung (cIsPoint == totoo) {alin = 1; bhd = 1; addOne (); pahinga; }} kung (manalo == 1) {clearScreen (); para sa (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } pagkaantala (5000); para sa (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } manalo = 0; } iba pa kung (manalo == -1) {clearScreen (); para sa (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } pagkaantala (5000); para sa (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } manalo = 0; } pIsPoint = false; cIsPoint = false; bvp = 8; bhp = 6; bvd = random (0, 2); // 0 ay down, 1 ay up up mabilis = false; } // The AI for the game void compMovePaddle () {unsigned long currentMillis = millis (); kung (currentMillis - nakaraangMillisForComp> 51) {nakaraangMillisForComp = currentMillis; kung (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } iba pa kung (bvp = 0 && cPaddle <10) {cPaddle ++; } iba pa kung (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } iba pa kung (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // gumagalaw ang bola na walang bisa moveBall () {kung (bhd == 0) {bhp--; } iba pa kung (bhd == 1) {bhp ++; } kung (bvd == 0) {bvp--; } iba pa kung (bvd == 1) {bvp ++; }} // nagdadagdag ng isa sa array. Kung alin ang 0 ay nagdaragdag ito sa iskor ng manlalaro. Kung ito ay 1 nagdaragdag ito sa mga computer na walang bisa addOne () {kung (alin == 0) {// kung ito ang iskor ng manlalaro // Magdagdag ng isa. Ito ang simpleng paraan na alam ko kung paano. para sa (int i = 0; i <5; i ++) {// loop kung (playerScore == 0) {// kung ang halagang iyon ay isang zero playerScore = 1; // gawin itong 1 break; // pagkatapos ay umalis} iba pa {// kung ito ay 1 playerScore = 0; // gawin itong zero at loop}}} iba pa kung (aling == 1) {para sa (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; pahinga; } iba pa {compScore = 0; }}} // Sinusuri kung may nanalo. kung (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {win = -1; } iba pa kung (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }} // sinusuri ang mga bola sa susunod na posisyon na walang bisa na checkNext () {// check's upang makita kung ang isang puntos ay nakuha kung (bhp == 13) {pIsPoint = true; } iba pa kung (bhp == 0) {cIsPoint = totoo; } // kung ang isang puntos ay nakuha kaysa sa laktawan ang natitirang bagay na ito kung (pIsPoint == false || cIsPoint == false) {// sinusuri ang bola nang patayo kung (bvp + bvd == 15) {bvd = 0; } iba pa kung (bvp + bvd == 0) {bvd = 1; } // sinusuri ang bola nang pahalang kung (bhp + bhd == 13) {// una sa panig ng computer kung (bvp> = 10-cPaddle && bvp <= 10-cPaddle + 4) {kung (bhd == 1) {bhd = 0; } iba pa kung (bhd == 0) {bhd = 1; } mabilis = maling; } iba pa kung (bvp + bvd == 10-cPaddle || bvp + bvd == 10-cPaddle + 5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } iba pa kung (bvd == 1) {bvd = 0; } bhd = 1; } iba pa kung (bvp == 0 || bvp == 14) {bhd = 1; } mabilis = maling; }} iba pa kung (bhp + bhd == 1) {// pagkatapos ay sa panig ng manlalaro kung (bvp> = pPaddle && bvp <= pPaddle + 4) {// pinindot ba ang sagwan sa isang normal na lugar? //patalbugin ang bola! kung (bhd == 1) {bhd = 0; } iba pa kung (bhd == 0) {bhd = 1; }} iba pa kung (bvp + bvd == pPaddle || bvp + bvd-5 == pPaddle) {// pinindot ba ang sagwan sa sulok kung (bvp! = 0 && bvp! = 14) {// ay ito hindi mataas o baba? //Patalbugin ang bola! kung (bvd == 0) {bvd = 1; } iba pa kung (bvd == 1) {bvd = 0; } bhd = 1; mabilis = totoo; } iba pa kung (bvp == 0 || bvp == 14) {// ito ay mataas o pababa ng mababang? //patalbugin ang bola! bhd = 0; mabilis = totoo; // itakda ang halaga upang magawa ang bola nang mabilis}}}}} int checkPaddlePos () {// binabasa ang palayok at nagpasya sa posisyon ng sagwan alinsunod kung (analogRead (A15) <93) {return 0; } iba pa kung (analogRead (A15) <186) {return 1; } iba pa kung (analogRead (A15) <279) {return 2; } iba pa kung (analogRead (A15) <372) {return 3; } iba pa kung (analogRead (A15) <465) {return 4; } iba pa kung (analogRead (A15) <558) {return 5; } iba pa kung (analogRead (A15) <652) {return 6; } iba pa kung (analogRead (A15) <745) {return 7; } iba pa kung (analogRead (A15) <837) {return 8; } iba pa kung (analogRead (A15) <= 931) {return 9; } iba pa kung (analogRead (A15) <= 2014) {return 10; }} void drawPaddles () {// draw's the paddles sa tamang lugar at ipinapakita ang marka sa sagwan para sa (int i = 0; i <5; i ++) {if (playerScore == 1) {strip. setPixelColor (pPaddle + i, strip. Color (255, 255, 255)); } iba pa kung ((playerScore == 0)) {strip.setPixelColor (pPaddle + i, strip. Color (255, 0, 0)); } kung (compScore == 1) {strip.setPixelColor (199 + cPaddle-i, strip. Color (255, 255, 255)); } iba pa kung ((compScore == 0)) {strip.setPixelColor (199 + cPaddle-i, strip. Color (0, 255, 0)); }}} void clearScreen () {para (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0)); } strip.show (); }
Hakbang 8: Tapos na Produkto
At ayan na, ang natapos na shirt!
Inirerekumendang:
FLEXBALL - isang Daang Pixel Flexible PCB Ball Na May WiFi: 6 na Hakbang (na may Mga Larawan)
FLEXBALL - isang Daang Pixel Flexible PCB Ball Sa WiFi: Kamusta mga gumagawa, gumagawa ito ng moekoe! Ang Flexball ay batay sa isang nababaluktot na PCB na nilagyan ng 100 WS2812 2020 na direksyong LED. Kinokontrol ito ng isang ESP8285-01f - ang pinakamaliit na module na batay sa ESP ng Espressif. Bilang karagdagan mayroon itong ADXL345 acceleromete
Paano Magtahi ng mga LED Sa isang T-Shirt: 9 Mga Hakbang (na may Mga Larawan)
Paano Magtahi ng mga LED Sa isang T-Shirt: Itinuro ko ang proyektong ito bilang isang pagawaan sa ITP Camp sa linggong ito. Gumawa ako ng isang video upang makita ng aking mga mag-aaral ang aking ginagawa (online ang lahat!) Dahil naging maganda ang tingin ko ay ibabahagi ko rin ito rito! Ito ay isang natatahi na proyekto sa circuit
Tchaibotsky (isang Piano Playing Robot): 12 Hakbang (na may Mga Larawan)
Tchaibotsky (isang Piano Playing Robot): Ang itinuro na ito ay nilikha bilang pagtupad sa kinakailangan ng proyekto ng Makecourse sa University of South Florida (www.makecourse.com) Ang Tchaibotsky ay isang robot na tumutugtog ng piano ng Arduino. Ang pagganyak ay upang bumuo ng isang bagay na maaaring
Paano Gumawa ng isang Autonomous Basketball Playing Robot Paggamit ng isang IRobot Lumikha Bilang Base: 7 Mga Hakbang (na may Mga Larawan)
Paano Gumawa ng isang Autonomous Basketball Playing Robot Paggamit ng isang IRobot Lumikha Bilang Base: Ito ang aking entry para sa hamon sa iRobot Lumikha. Ang pinakamahirap na bahagi ng buong prosesong ito para sa akin ay ang pagpapasya kung ano ang gagawin ng robot. Nais kong ipakita ang mga cool na tampok ng Lumikha, habang nagdaragdag din sa ilang robo flair. Lahat ng akin
Paano Gumawa ng isang RockBand Guitar Playing Robot !: 15 Hakbang (na may Mga Larawan)
Paano Gumawa ng isang RockBand Guitar Playing Robot !: Para sa aking unang itinuro … Ano ang masasabi ko, gustung-gusto kong mag-drum sa rockband set ngunit bihirang mayroon akong isang makakalaro; marahil kailangan ko ng higit pang mga kaibigan, ngunit sa aking tila malungkot na buhay (jk) ay dumating ang isang medyo cool na hindi makakaakit. Mayroon akong disenyo