Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Ky është kostumi im i Halloween për vitin 2013. Ka qenë në punë për rreth një vit dhe i janë dashur mjaft orë për ta krijuar. Ekrani është 14 me 15 piksele, pra, me rezolucion mjaft të ulët, por prapë mund të bëjë disa gjëra argëtuese. Physshtë fizikisht fleksibël në të gjitha drejtimet, edhe pse nuk mund të paloset pa dëmtime. Ka një kontrollues të përbërë nga një buton i vetëm dhe tenxhere rrëshqitëse, e lidhur me një mega mega përmes USB. Për ta mbajtur gjallë për një kohë të gjatë, ai përdor dy bateri monstruoze 2200 mAh të lidhura në seri për të marrë tensionin e nevojshëm, dhe më pas një rregullator 5 Volt për ta bërë atë të përdorshëm. Të gjitha pajisjet elektronike janë të vendosura në xhepa në pjesën e brendshme të këmishës, në mënyrë që të hiqen dhe kështu këmisha mund të lahet. Ajo luan një lojë funksionale të pongut. Së pari zbukuron një me fjalët "PONG PLAY" me shkronja të bukura blu duke përdorur një version të modifikuar të fontit Tom Thumb (mund të gjendet në https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Pas pesë sekondash mund të jepet opsioni për të shtypur butonin për të vazhduar, ose për të mos shtypur butonin dhe për të lënë një përvojë krejtësisht të mirë pas. Kur dikush zgjedh të shtypë butonin, loja fillon. Një vozë e kuqe në të djathtë është vozisja e kompjuterit dhe vozita e gjelbër në të djathtë është vozitja e lojtarëve, e cila kontrollohet nga tenxhereja me rrëshqitje për të lëvizur lart e poshtë. Topi kthehet kur secila palë përpiqet të shënojë një pikë. Lojtari mund ta godasë topin me skajin e vozit të tyre për ta shpejtuar atë (një veçori e bukur) ndërsa kompjuteri nuk mund ta bëjë këtë, dhe në vend të kësaj përfundon duke u mbërthyer duke lëvizur pak më ngadalë se topi. Kur shënohet një pikë, një piksel ndryshon në të bardhë në vozitjen e anëve të shënimit. Ai llogaritet në binar nga poshtë. ku jeshile ose e kuqe është zero dhe e bardha është 1. 21 është rezultati për të fituar (ose humbur në varësi të kujt merr 21 pikë) dhe kështu kur lojtari lexon 10101, shfaqet teksti "YOU WIN". Edhe një herë në Tom Thumb të modifikuar. E njëjta gjë ndodh, por në vend të kësaj shfaqet "JU HUMB". Pas fitores ose humbjes loja rifillon në pikën menjëherë pas Pong Play. Për të rinisur plotësisht butonin e rinisjes në "Kutinë Magjike", i njohur gjithashtu si kutia-me-të-të-të-të-elektronikë-përveç ekranit, shtypet.
Hapi 1: Materialet dhe Mjetet
Gjërat e shënuara me një * janë opsionale por rekomandojnë Dhe kështu pa ndonjë renditje të veçantë … Materialet: 4 Jardë Adafruit Neopixle 60 pikselë për metër shirit 1 bluzë * 1 palë pezullues 1/2 oborr pëlhure do të jenë më se të mjaftueshme (Jo pëlhura e shtrirë preferohet) 6 këmbë USB A mashkull në USB B kabllo mashkullore 1 USB A lidhës femër 3 2 lidhje JST femra lidhëse 4 2 pin JST tela meshkuj karikues baterie 2 bateri 6600 mAh 1 Stil Arcade Button 1 arduino pro-mega 1 kokë FTDI 1 lidhës femër USB B me tabelë shpërthimi 1 çelës ndezje/fikje (ndërrim) 1 çelës rivendosje (ndërrim ose çast) 1 potenciometër rrëshqitës *1 çelës rrëshqitës i tenxhere 1 palë lidhës i fortë amp *1 kasë projekti 1 5V 3+ rregullator i tensionit amp një i vogël pak plastikë disa ngjit disa tela disa fije *disa zam të nxehtë *disa elastikë për ca kohë (Ndoshta pak më shumë se "disa") pak këmbëngulje (Ju ndoshta do të keni nevojë për shumë nga kjo aktualisht) disa tuba për tkurrjen e nxehtësisë ose shirit elektrik disa super ngjitës disa hekur në mbështetëse Tools *Hands Helping Normal Hand s (ose dikush me qasje në to) Hekur për saldim *Ngjitës i nxehtë Armë Dremel ose Letër zmerile Dërrasa me tela Tela Prerës Tela Kapëse Gun Vidë Shofer Sharrë kunja Makinë qepëse Pëlhurë Gërshërë
Hapi 2: Pritini shiritin LED në shirita më të vegjël
Përdorni veglën tuaj të preferuar të prerjes dhe prerë shiritin në 14 segmente, secila 15 pikselë të gjatë. Pritini vetëm midis gjurmëve të bakrit, të etiketuar si "Bëj" "DIN" "+5V" dhe "GND". Nëse është ngjitur tashmë mbi bakrin, ato thjesht priten. Mundohuni të mos pritni shumë në bakrin e ekspozuar, por nëse e përtypni pak është mirë. Pasi të jenë prerë të 14 shiritat, shkurtoni pak gome nga secili skaj për ta hequr atë nga rruga për bashkimin e shiritave.
Hapi 3: Bashkimi i ekranit së bashku
Merrni telin dhe priteni në segmente rreth 3.5 inç (9 cm). Në rastin tim unë kam tre ngjyra të ndryshme për ta bërë më të lehtë të qëndroj drejt gjatë bashkimit, por një ngjyrë do të funksiononte mirë. Ju do të keni nevojë për rreth 40 nga këta djem të vegjël, por shkurtoni edhe një çift për çdo rast. Pasi të keni mbaruar prerjen e telit, hiqini dhe kallajoni skajet (Nëse keni përvojë me saldim mund të kaloni në paragrafin tjetër), që do të thotë pasi të keni hequr pak plastikë vendosni pak saldim në skajet e secilit tel. Mos e ngrohni lidhësin dhe përpiquni të kaloni te tela, ngrohuni me hekurin e saldimit nga fundi i bakrit dhe vendoseni lidhësin në majë. Jini të durueshëm dhe prisni që tela e nxehtë të shkrijë lidhësin. Temshtë joshëse të forcosh hekurin për saldim për të filluar (Padurimi im dhe unë e di saktësisht se si ndihesh), por saldimi nuk do të ngjitet gjithashtu. Bëni të njëjtën gjë për gjurmët e ekspozuara të bakrit në secilin skaj të pjesëve të shiritit. Nëse tashmë është ngjitur, mos u shqetësoni për të. Për shiritin ju mund të dëshironi të ndërtoni një kodër të vogël për ta bërë më të lehtë më vonë. Kur punoni me shiritin, bëjeni shpejt dhe përpiquni të mos shpenzoni shumë kohë duke aplikuar nxehtësi në shirit. Bëni vetëm atë që duhet të bëni për të shkrirë lidhësin në gjurmë. Ngjitni një tel në secilën gjurmë deri në fund të shiritit të parë (Shiriti i parë është ai me tela dhe lidhës, ngjiteni atë në skajin e ekspozuar). Nëse shikoni shiritin, do të shihni shigjeta të vogla mbi të që shkojnë deri në fund, ku keni ngjitur tela. Merrni një rrip tjetër në mënyrë që shigjetat të tregojnë drejtimin e kundërt dhe lidhni tela që vjen nga gjurma GND në gjurmën GND të tjetrës, +5V në +5V dhe kështu me radhë. Përsëriteni këtë duke u siguruar që shigjetat të ndryshojnë drejtimet pas çdo seksioni, në mënyrë që nëse i ndiqni ato, të bëhet zig -zag lart e poshtë, dhe që të mund të shtrihet deri në shirit të gjatë në fund. Pasi të jenë bashkuar të 14 shiritat, vendosini ato dhe rreshtojini në mënyrë që LED të formojnë një rrjet. Pastaj mbajini së bashku duke përdorur një metodë që mund të hiqet më vonë pa dëmtuar shiritin. Kam përdorur shirit ngjitës. Yshtë mjaft ngjitëse për të mbajtur gjithçka së bashku, por jo aq ngjitëse sa të lërë një mbetje. Unë nuk i rekomandoj asgjë të përhershme, si kapëse ose shirit ngjitës. Pasi të jetë ngjitur gjithçka lidhni një tel nga shiriti në pjesën e poshtme +5V në atë menjëherë pranë tij. Përsëriteni derisa të gjithë pjesën e poshtme të ketë çezmat e energjisë që kalojnë përgjatë gjithë rrugës. Kjo është kështu që ekrani nuk zbehet ndërsa linja e LED -ve përparon.
Hapi 4: Saldimi i elektronikës bazë
Bashkoni bordin e shpërthimit USB B (BOB) në lidhësin USB B. Lidhni telat e duhur në lidhësin USB A. Unë ju këshilloj të shikoni daljen e lidhësit siç gjendet në këtë faqe në internet, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Mos u shqetësoni se ku të bashkoni skajet e tjera të telave në lidhësin USB A tani; që do të mbulohet në hapin e kontrolluesit. Pritini lidhësin e të dhënave nga shiriti, lidhësin femër, jo lidhësin mashkullor (Lidhësi femër është marrë nga skaji tjetër). Lidhni lidhësit meshkuj JST në skajet e baterisë në mënyrë që e kuqja të shkojë në të kuqe dhe e zeza të shkojë në të zezë. Shkrirja e tubave të tkurrjes së nxehtësisë mbi telat e ekspozuar (rrëshqiteni para bashkimit) në mënyrë që të mos shkurtohen ose të përdorin diçka tjetër si shirit elektrik ose zam i nxehtë. Lidhni disa tela në të gjithë lidhësit femra JST. Sigurohuni që të keni një fund mashkull të kyçur në mënyrë që kunjat të mos lëvizin përreth. Kini kujdes nga polariteti dhe sigurohuni që telat të përputhen me lidhësit meshkuj. Lidhni telat në një lidhës të tensionit të lartë (por jo në çift), edhe një herë, duke u siguruar që çdo ngjyrë të përputhet dhe se ato janë të lidhura së bashku për të parandaluar çdo kunja që zhvendosen. Lidhni montimin e lidhësit/telit të femrës vetëm në mënyrë që të lidhen në seri, jo paralel, për ta kaluar atë tensionin e pragut për rregullatorin e energjisë. Pra, lidhni telin pozitiv në telin negativ të asamblesë tjetër, kështu që tani kemi një tel pozitiv të pa ngjitur dhe një tel negativ të pa ngjitur dhe dy telat e ngjitur janë ngjitur në lidhje të ndryshme. Merrni telin negativ dhe ruajeni që të ngjitet tela negative diku tjetër. Tani merrni tela pozitivë dhe ngjiteni në ndërprerës Nëse ka tre ose më shumë kunja (ose më shumë se një mënyrë për të qenë "ndezur") lidheni atë në kunjin e mesëm. Vini re se "Kunja e Mesme" mund të mos jetë fizikisht në mes. Mënyra për ta identifikuar atë është gjetja e kunjit që, kur kaloni është i ndezur në çdo gjendje, gjithmonë do të lidhet me një kunj tjetër. Nëse asnjë kunj nuk është i tillë atëherë keni një ndërprerës shumë të veçantë; thjesht lidheni atë me çdo kunj dhe sigurohuni që teli tjetër i ngjitur në ndërprerës të lidhet me atë tel në të paktën një në gjendje. Tani lidhni telin pozitiv të marrjes në rregullatorin e tensionit në skajin e kundërt të ndërprerës, siç u diskutua më lart. Ngjiteni tensionin postiv në skajin pozitiv të lidhësit të rrymës së lartë të palidhur. Merrni telin negativ të marrjes dhe ngjiteni atë në skajin negativ të lidhësit të rrymës së lartë. Ne tani do të lidhim fuqinë paralelisht me Arduino dhe Power strip. Tani merrni telat e daljes së rregullatorit të tensionit dhe lidhni dy pjesë teli në skajet pozitive dhe negative në mënyrë që ato të dalin në formë Y. Lidhni një lidhës me dy kunja në telat pozitivë dhe negativë të montimit të shiritit të udhëhequr. Nuk ka rëndësi se çfarë lloji të lidhësit përdorni, mund të jetë JST ose në rastin tim ndonjë kabllo energjie/audio ose diçka (nuk jam i sigurt, dhe kërkoj falje që nuk kam asnjë fotografi). Ngjitni një nga telat e fuqisë pozitive në skajin pozitiv të lidhësit të kundërt për shiritin e dritës dhe një nga telat negativë në kunjin tjetër në lidhës. Bëni të njëjtën gjë, por për një bashkim mashkullor të lidhësit/telave. Gjatë gjithë kohës mos harroni të izoloni nyjet e saldimit për të shmangur pantallonat e shkurtra. Tani se çfarë të bëni me lidhësin USB B. Lidhni tela pozitivë në një vrimë 5v në Arduino Pro Mega. Merrni telin e tokëzimit dhe ngjiteni në një vrimë GND. Merrni D+ dhe ngjiteni në kunjin dixhital (ose në këtë rast, vrima) 40. Ngjitës D- në kunj analog 15. Ngjitni skajin e të dhënave të lidhësit femëror i cili bashkohet me lidhësin mashkull të shiritit LED në pinin e të dhënave 6 dhe tela tokëzimi në një kunj GND. Maskimi ose kaseta e skocezit funksionon shkëlqyeshëm për mbajtjen e telave në dërrasë në mënyrë që ato të mos bien kur rrokulliset për t'u ngjitur. Tani merrni një buton të çastit dhe lidhni një tel nga njëra anë në kunjin VCC (ose çdo kunjë dalëse të tensionit) dhe skajin tjetër në kunjin RESET.
Hapi 5: Kontrolluesi
Së pari është zgjedhja e formës së duhur për të filluar. E gjitha varet nga mënyra se si dëshironi të strukturohet kontrolluesi. Doja më shumë një kontrollues të sheshtë kështu që mora një copë dërrasë 3 1/2 "me 3/4". rregulloni pjesët në një mënyrë që duket e përshtatshme dhe e rehatshme për të punuar me të. Përdorni një kurbë franceze, busull, trekëndësh dhe buzë të drejtë për të vizatuar se ku duhet të shkojnë të gjitha pjesët. Pritini skicën bazë duke përdorur mjetin e prerjes sipas dëshirës tuaj. Një sharrë ndalimi do të ishte më e mira, por unë përdor një sharrë përballuese, e cila funksionoi mirë. Lëmojini skajet për t'i bërë ato të kalojnë pa probleme, më pas zmeriloni qoshet për ta bërë atë më të rehatshëm. Shponi vrimën për ndërprerësin, pastaj rërën, daltën dhe/ose Dremel -in çdo pjesë në pjesën e poshtme që do ta bëjë atë të përshtatshme. Mundohuni të mos bëni asgjë me pjesën e sipërme dhe vetëm fshini atë që ju nevojitet për të qenë në gjendje ta përshtatni duke e rrotulluar, kënduar ose çfarëdo tjetër për ta futur. kaloni Shponi zonën që çelësi i potenciometrit të përshtatet dhe të daltë një zonë në mënyrë që të zhytet dhe të përshtatet deri në fund. Shponi disa vrima në mënyrë që një vidë ta mbajë atë. Përkulni pjesët e vogla të lidhësit USB A që e bëjnë gjerësinë e përgjithshme të rritet pak (shikoni fotot). Nxirrni një pjesë për lidhësin, duke kontrolluar në mënyrë progresive për t'u siguruar që lidhësi të përshtatet. Ngjiteni super lidhësin në folenë e tij. Merrni një copë të vogël plastike dhe priteni atë në një formë që do të përshtatet mbi lidhësin (shikoni fotot), dhe më pas kapeni atë në dru. Pritini çdo pjesë që mund të pengojë. Vidhosni potenciometrin dhe lidhni çelësin. Lidhni tela pozitivë në njërën nga skajet e potenciometrit (jo pjesën e ndryshueshme) dhe tela negative në skajin e kundërt. Ngjiteni kunjin D në kunjin e ndryshueshëm në tenxhere. Lidhni një tel nga kunja në tenxhere me tela pozitive në një nga kunjat në buton. Ngjiteni D+ në kunjin tjetër në buton. Prisni telin rezervë dhe izoloni pjesët që kanë nevojë për të.
Hapi 6: Këmishë
Gjeni një këmishë të rehatshme që do të lëshojë dritën. Zgjodha këtë bluzë bazë të bardhë. Nuk ka shumë rëndësi ngjyra ose stili për sa kohë që drita mund të shihet duke shkëlqyer nga brenda. Sidoqoftë, unë nuk rekomandoj grafikë në pjesën e përparme. Vendosni gjithçka në këmishë për t'ju ndihmuar të vendosni se ku dëshironi dhe përdorni një mjet shënues të fshirshëm për ta tërhequr atë. Unë (do të thotë disa njerëz që njoh) kam një laps të destinuar për të shënuar pëlhura që lahen lehtë. Matni madhësinë e baterive, kutinë e kontrolluesit dhe ekranin dhe prerë copa letre që përputhen. Pastaj lidhni letrën me një copë pëlhure jo të shtrirë. Një endje funksionon mirë për këtë. Pastaj prerë drejtkëndëshin duke lënë rreth një të katërtën inç për një qepje gjatë gjithë rrugës. Pastaj duke përdorur copën e letrës si një hekur hekuri palosjet në pëlhurë. Tani letra mund të hiqet. Në pjesën e xhepit që do të jetë në pjesën e sipërme, paloseni atë mbi vete tre herë. Hekuroseni dhe fiksojeni për ta mbajtur në vend. Qepni një pamje deri në mes të palosjes. Tani merrni këndin dhe paloseni atë në mënyrë që skajet e qepura pingul me njëra-tjetrën të jenë paralele dhe të qepni një dukje përgjatë rrudhës së hekurosur më afër qoshes (Fotografitë vërtet ndihmojnë). Bëni këtë edhe për këndin tjetër. Nëse ka mundësi që do të keni një ndërprerës që del nga xhepi, qepni një vrimë me butona në bazën e xhepit ku prek çelësi. Pastaj qepni një vrimë të butonit dhe prerë pjesën e mesme. Unë me të vërtetë nuk mund të jap udhëzime të hollësishme sepse kisha një mjet të lezetshëm për të bërë vrima të butonave. Vetëm sigurohuni që t’i bëni vrimat para se të qepet xhepi. Merrni disa kunja dhe futini nëpër këmishë në cepat e shenjave për xhepin. Merrni xhepin dhe vendoseni çdo cep në një kunj (në pjesën e brendshme të këmishës), duke lënë një çerek inç për tegel dhe ngjiteni në këmishë. Pasi xhepi është fiksuar. hiqni kunjat që nuk mbajnë xhepin brenda dhe qepeni xhepin në këmishë. Përsëriteni për të gjitha xhepat. Për xhepin e madh që mban ekranin lini një hendek për telat në pjesën e poshtme të xhepit. Për të vendosur një vrimë në këmishë shënoni vendin dhe merrni një hekur në pjesën e pasme (me pjesën më të shndritshme në pëlhurë) dhe hekuroseni atë. Pastaj, për një vrimë të vogël (si ajo që kam përdorur për ndërprerësin), bëni një vrimë butoni. Për një vrimë më të madhe, shënoni skicën dhe përdorni një thurje zigzag përgjatë vijës (ose kurbë ose çfarë keni) dhe prerë pjesën e mesme. Nëse dëshironi, mund të përdorni mbajtëse për të mbajtur peshën e xhepave, dy kapëset që mbajnë xhepat në pjesën e përparme dhe kapësen e pasme mbi pantallonat. Gjithashtu mora një mëngë të vogël pëlhure të qepur mbi pjesët e varëseve që do të prekin lëkurën time. Dy këmisha mund të nxehen pak, kështu që unë zgjodha dhe përdor mëngën e vogël prej pëlhure.
Hapi 7: Programimi
Dhe këtu është kodi. Ka disa pjesë të cilat janë komentuar mirë, por shumica dërrmuese nuk është. Nëse keni pyetje për pjesë të ndryshme, ose mund të më jepni numrin e linjës (me #përfshi si numrin e parë) ose më jepni një kopje të linjës (ve) dhe funksionit në të cilin ajo banon (si lak () ose compMovePaddle ()) dhe unë do të bëj çmos që t’jua shpjegoj, pastaj shtoj një koment në kodin që e shpjegon atë. #include #define PIN 6 // thotë se cilat janë kunjat hyrëse për butonin int të lojësPin = 40; // dikton rezultatin, të mbajtur në një grup bianar sepse është esier int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // dikton drejtimin e topit int bvd = 0; // 0 është poshtë, 1 është lart int bhd = 0; // 0 është e drejtë, 1 është lënë // dikton pozicionin e topave int bvp = 8; int bhp = 6; // kontrollon për të parë nëse topi është në modalitetin e shpejtë boolean fast = false; // kontrollon nëse është një rezultat. boolean cIsPoint = false; boolean pIsPoint = false; // pozicionet e vozitjes int cPaddle = 0; int pPaddle = 0; e mëparshmeMillis = 0; e mëparshmeMillisForComp = 0; // caktoni kohën e vonesës për topin me lëvizje të shpejtë dhe të ngadaltë "Int" në normInt dhe fastInt është për intervalin int normInt = 50; int fastInt = 10; // përdoret për të kontrolluar fitoren. 1 është fituesi i lojtarit, -1 në fitimin e kompjuterit, dhe 0 nuk ka asgjë që ka ndodhur ende int win = 0; // për të hequr qafe një defekt. përdoret në deklaratën addOne dhe askund tjetër. int e cila = 0; // Gjëja e shfaqur para fillimit, -1 është një arratisje në 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}; // nëse fitoni në fitore = {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}; // nëse humbni në humbje = {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}; // vendos brezin led Adafruit_NeoPixel = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // vendosja, nuk kthen asnjë pin 40 për hyrje, fillon shiritin, shfaq mesazhin // dhe e tregon atë. void setup () {pinMode (buttonPin, INPUT); strip.filloj (); për (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , shirit. Ngjyra (0, 0, 255)); } strip.shfaq (); vonesa (5000); ndërsa (digitalRead (buttonPin) == LOW) {// ashtë një kurth! (derisa të shtypet butoni.)}} loop void () {clearScreen (); // vizaton vozitjet për të treguar rezultatin për (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } tjetër if ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } if (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } tjetër nëse ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0)); }} // tërheq topin në pozicionin e tij fillestar strip.setPixelColor (98, strip. Color (255, 255, 255)); shirit.shfaq (); // vendos nëse topi shkon lart ose zbret ndërsa (pIsPoint == false && cIsPoint == false) {clearScreen (); rrymë e gjatë e panënshkruarMillis = millis (); // cakton pozicionin e vozitjes së lojtarit pPaddle = checkPaddlePos (); // kontrollon pozicionin e ardhshëm checkNext (); // lëvizja e topit nëse (e shpejtë == false) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} tjetër nëse (e shpejtë == e vërtetë) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }} // tërheq topin nëse (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, shirit. Ngjyra (255, 255, 255)); } tjetër nëse (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // lëvizja e vozitjeve kompjuterike compMovePaddle (); // draw's the paddles drawPaddles (); // aktualisht vendos gjithçka.shirit.shfaq (); // kontrollimi për të parë nëse një pikë është shënuar nëse (pIsPoint == e vërtetë) {e cila = 0; bhd = 0; addOne (); pushim; } tjetër nëse (cIsPoint == e vërtetë) {e cila = 1; bhd = 1; addOne (); pushim; }} if (fito == 1) {clearScreen (); për (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); shirit.shfaq (); } vonesë (5000); për (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } fito = 0; } else if (fito == -1) {clearScreen (); për (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); shirit.shfaq (); } vonesë (5000); për (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } fito = 0; } pIsPoint = false; cIsPoint = false; bvp = 8; bhp = 6; bvd = e rastësishme (0, 2); // 0 është poshtë, 1 është lart shpejt = false; } // UA për lojën pavlefshme compMovePaddle () {aktuale e panënshkruar e gjatëMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = aktualeMillis; if (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } tjetër nëse (bvp = 0 && cPaddle <10) {cPaddle ++; } tjetër if (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } tjetër if (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // lëviz topin void moveBall () {if (bhd == 0) {bhp--; } tjetër nëse (bhd == 1) {bhp ++; } nëse (bvd == 0) {bvp--; } tjetër nëse (bvd == 1) {bvp ++; }} // shton një në grup. Nëse cila është 0, ajo shton rezultatin e lojtarit. Nëse është 1 i shton kompjuterëve void addOne () {if (e cila == 0) {// nëse është rezultati i lojtarit // Shto një. Kjo është mënyra më e thjeshtë që unë di si. për (int i = 0; i <5; i ++) {// lak if (playerScore == 0) {// nëse kjo vlerë është një lojtar zeroScore = 1; // bëjeni 1 pushim; // pastaj ikni} tjetër {// nëse është 1 playerScore = 0; // bëjeni zero dhe lakoni}}} tjetër nëse (e cila == 1) {për (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; pushim; } tjetër {compScore = 0; }}} // Kontrollon nëse dikush ka fituar. nëse (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {fito = -1; } tjetër nëse (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {fito = 1; }} // kontrollon topat pozicioni tjetër void checkNext () {// kontrolloni për të parë nëse një pikë është shënuar nëse (bhp == 13) {pIsPoint = true; } tjetër nëse (bhp == 0) {cIsPoint = true; } // nëse një pikë është shënuar, kaloni mbi pjesën tjetër të këtij artikulli nëse (pIsPoint == false || cIsPoint == false) {// kontrollon topin vertikalisht nëse (bvp+bvd == 15) {bvd = 0; } tjetër nëse (bvp+bvd == 0) {bvd = 1; } // kontrollon topin horizontalaly nëse (bhp+bhd == 13) {// së pari në anën e kompjuterit nëse (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } tjetër nëse (bhd == 0) {bhd = 1; } shpejtë = e rreme; } tjetër nëse (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {nëse (bvp! = 0 && bvp! = 14) {nëse (bvd == 0) {bvd = 1; } tjetër nëse (bvd == 1) {bvd = 0; } bhd = 1; } tjetër nëse (bvp == 0 || bvp == 14) {bhd = 1; } shpejtë = e rreme; }} tjetër nëse (bhp+bhd == 1) {// atëherë nga ana e lojtarit nëse (bvp> = pPaddle && bvp <= pPaddle+4) {// po godet vozitjen në një vend normal? // kërce topin! nëse (bhd == 1) {bhd = 0; } tjetër nëse (bhd == 0) {bhd = 1; }} tjetër nëse (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// po godet vozitjen në qoshe nëse (bvp! = 0 && bvp! = 14) {// është jo lart e poshte poshte? // Kërce topin! nëse (bvd == 0) {bvd = 1; } tjetër nëse (bvd == 1) {bvd = 0; } bhd = 1; shpejtë = e vërtetë; } tjetër nëse (bvp == 0 || bvp == 14) {// është lart lart apo poshtë ulët? // kërce topin! bhd = 0; shpejtë = e vërtetë; // vendosni vlerën që më vonë ta bëni topin të lëvizë shpejt}}}}} int checkPaddlePos () {// lexon tenxheren dhe vendos për pozicionin e vozitjes në përputhje me rrethanat nëse (analogRead (A15) <93) {kthehet 0; } else if (analogRead (A15) <186) {kthehu 1; } else if (analogRead (A15) <279) {kthehu 2; } else if (analogRead (A15) <372) {kthehu 3; } else if (analogRead (A15) <465) {kthehu 4; } else if (analogRead (A15) <558) {kthehu 5; } else if (analogRead (A15) <652) {kthehu 6; } else if (analogRead (A15) <745) {kthehu 7; } else if (analogRead (A15) <837) {kthehu 8; } else if (analogRead (A15) <= 931) {kthehu 9; } else if (analogRead (A15) <= 2014) {kthimi 10; }} void drawPaddles () {// tërheq vozitjet në vendin e duhur dhe shfaq rezultatin në vozitje për (int i = 0; i <5; i ++) {if (playerScore == 1) {shirit. setPixelColor (pPaddle+i, shirit. Ngjyra (255, 255, 255)); } tjetër if ((playerScore == 0)) {strip.setPixelColor (pPaddle+i, strip. Color (255, 0, 0)); } if (compScore == 1) {strip.setPixelColor (199+cPaddle-i, strip. Color (255, 255, 255)); } tjetër nëse ((compScore == 0)) {strip.setPixelColor (199+cPaddle-i, strip. Color (0, 255, 0)); }}} void clearScreen () {për (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0)); } strip.shfaq (); }
Hapi 8: Produkt i përfunduar
Dhe ja ku shkoni, këmisha e përfunduar!