INHOUDSOPGAWE:
- Stap 1: materiaal en gereedskap
- Stap 2: Sny die LED -strook in kleiner stroke
- Stap 3: Saam soldeer die skerm
- Stap 4: soldeer die kernelektronika
- Stap 5: Beheerder
- Stap 6: hemp
- Stap 7: Programmering
- Stap 8: Klaar produk
Video: Pong speel buigsame skerm op 'n hemp: 8 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Dit is my Halloween -kostuum vir die jaar 2013. Dit is ongeveer 'n jaar aan die werk en het 'n hele paar uur geneem om dit te skep. Die skerm is 14 by 15 pixels, dus 'n redelike lae resolusie, maar dit kan nog steeds prettige dinge doen. Dit is fisies buigbaar in alle rigtings, hoewel dit nie sonder skade gevou kan word nie. Dit het 'n kontroleerder wat bestaan uit 'n enkele knoppie en 'n skuifpot, gekoppel aan 'n pro mega via USB. Om dit vir 'n lang tyd aan die lewe te hou, gebruik dit twee monsteragtige 2200 mAh -batterye wat in serie gekoppel is om die nodige spanning te kry, en dan 'n 5 Volt -reguleerder om dit bruikbaar te maak. Al die elektronika is in die sakke aan die binnekant van die hemp, sodat dit verwyder kan word en die hemp gewas kan word. Dit speel 'n funksionele speletjie pong. Dit is eers 'n genade met die woorde "PONG PLAY" in 'n pragtige blou letters met behulp van 'n aangepaste weergawe van die Tom Thumb-lettertipe (kan gevind word op https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Na vyf sekondes kan u die knoppie druk om verder te gaan, of om nie op die knoppie te druk nie en 'n goeie ervaring agter te laat. As 'n mens kies om op die knoppie te druk, begin die spel. 'N Rooi paddle aan die regterkant is die rekenaar paddle en die groen paddle aan die regterkant is die speler paddle, wat beheer word deur die gly pot om op en af te beweeg. Die bal wip rond terwyl elke span probeer om 'n punt aan te teken. Die speler kan die bal met die rand van sy spaan slaan om dit te bespoedig ('n goeie funksie) terwyl die rekenaar dit nie kan doen nie, maar uiteindelik in 'n effense stadiger beweging as die bal vasloop. As 'n punt aangeteken word, verander 'n pixel na wit op die paaltjie. Dit tel van onder af in binêre. waar groen of rooi nul is en wit 1. 21 is die telling om te wen (of verloor, afhangende van wie 21 punte kry), en sodra die speler se roeier 10101 lees, word die 'YOU WIN' -teks vertoon. Weereens in die aangepaste Tom Thumb. Dieselfde gebeur, maar in plaas daarvan word 'YOU LOSE' vertoon. Na 'n oorwinning of verlies, begin die spel weer na die punt na Pong Play. Om die herbegin-knoppie op die "Magic Box", ook bekend as die-boks-met-al-die-elektronika-behalwe-die-skerm, heeltemal weer te begin, word gedruk.
Stap 1: materiaal en gereedskap
Dinge gemerk met 'n * is opsioneel, maar word aanbeveel. En dus in geen spesifieke volgorde nie … Materiaal: 4 Yards Adafruit Neopixle 60 pixel per meter strook 1 T-hemp * 1 paar bretels 1/2 meter stof sal meer as genoeg wees (nie rekbare weefsel word verkies) 6 voet USB A manlik na USB B male kabel 1 USB A female aansluiting 3 2 pin JST female connectors 4 2 pin JST male draden batterylaaier 2 6600 mAh batterye 1 Arcade style Button 1 arduino pro-mega 1 FTDI header 1 USB B vroulike aansluiting met uitbreekbord 1 aan/uit -skakelaar (skakelaar) 1 herstelschakelaar (skakelaar of kortstondig) 1 skuifpotentiometer *1 skuifpotknop 1 aansluitpaar met hoë versterker *1 projektiekas 1 5V 3+ amp spanningsreguleerder 'n klein 'n bietjie plastiek 'n bietjie soldeer 'n bietjie draad 'n bietjie draad *'n bietjie warm gom *'n bietjie elasties 'n bietjie (miskien 'n bietjie meer as ''n bietjie' ') 'n bietjie supergom 'n bietjie yster op die gereedskap *Helpende hande Normale hand s (of iemand met toegang daartoe) Soldeerbout *Warmlijmpistool Dremel- of skuurpapier beiteldraadstroppers Draadsnyers Stapelgeweer Skroewedraaier Saagpenne Naaimasjien Stofskêr
Stap 2: Sny die LED -strook in kleiner stroke
Sny die gereedskap wat u verkies en sny die strook in 14 segmente, elk 15 pixels lank. Sny slegs tussen die koperspore, gemerk soos "DO" "DIN" "+5V" en "GND". As dit reeds oor die koper gesoldeer is, word dit net regdeur gesny. Probeer om nie te veel in die blootgestelde koper te sny nie, maar as u 'n bietjie knik, is dit goed. Sodra al 14 die stroke gesny is, sny 'n bietjie van die rubber van elke kant af om dit uit die weg te ruim om die stroke te soldeer.
Stap 3: Saam soldeer die skerm
Neem die draad en sny dit in segmente van ongeveer 3,5 duim (9 cm). In my geval het ek drie verskillende kleure om dit makliker te maak om reguit te bly tydens soldeer, maar een kleur werk goed. U benodig ongeveer 40 van hierdie ouens, maar sny 'n paar meer vir die geval. As u klaar is met die sny van die draad, strooi en maak u die ente vas (as u soldeerervaring het, kan u na die volgende paragraaf gaan), wat beteken dat nadat u die klein bietjie plastiek verwyder het, 'n bietjie soldeer aan die ente van elke draad gesit het. Moenie die soldeer verhit nie en probeer om na die draad te verhit; verhit met die soldeerbout van die onderkant van die koper en plaas die soldeer bo -op. Wees geduldig en wag totdat die warm draad die soldeer smelt. Dit is aanloklik om die soldeerbout aan die soldeerbout vas te maak om aan die gang te kom (my ongeduld en ek weet presies hoe u voel), maar die soldeer sal nie so goed kleef nie. Doen dieselfde vir die blootgestelde koperspore aan elke kant van die strookafdelings. Moenie bekommerd wees as dit reeds soldeer bevat nie. Vir die strook wil u dalk 'n klein heuwel opbou om dit later makliker te maak. As u met die strook werk, doen dit vinnig en probeer nie te veel tyd spandeer om hitte op die strook aan te bring nie. Doen slegs wat u moet doen om die soldeer op die spoor te smelt. Soldeer 'n draad aan elke spoor aan die einde van die eerste strook (die eerste strook is die een met die drade en aansluiting, soldeer dit aan die blootgestelde kant). As u na die strook kyk, sien u klein pyltjies tot aan die einde waar u die draad gesoldeer het. Neem nog 'n strook sodat die pyle in die teenoorgestelde rigting wys, en soldeer die draad wat van die GND -spoor kom, na die GND -spoor van die ander, die +5V na die +5V, ensovoorts. Herhaal dit en maak seker dat die pyle na elke afdeling van rigting verander, sodat as u dit volg, dit op en af sou zig en dat dit uiteindelik op 'n lang strook kan uitrek. Sodra al 14 stroke gesoldeer is, lê dit uit en voer dit uit sodat die LED's 'n rooster vorm. Hou dit dan bymekaar met 'n metode wat later verwyder kan word sonder om die strook te beskadig. Ek het plakband gebruik. Dit is taai genoeg om alles bymekaar te hou, maar nie so taai om 'n oorskot te laat nie. Ek beveel niks aan permanent, soos krammetjies of kleefband. Sodra alles vasgemaak is, soldeer u 'n draad van die strook aan die onderkant +5V aan die een wat onmiddellik daarby is. Herhaal totdat die hele onderkant van die krane regdeur is. Dit is sodat die skerm nie verdof namate die lyn met LED's vorder nie.
Stap 4: soldeer die kernelektronika
Soldeer die USB B -uitbreekbord (BOB) aan die USB B -aansluiting. Soldeer die toepaslike drade aan die USB A -aansluiting. Ek raai u aan om na die pin-out van die connector te kyk, soos op hierdie webwerf, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Moenie bekommerd wees oor waar u nou die ander ente van die drade op die USB A -aansluiting moet soldeer nie; wat in die beheerstap behandel sal word. Sny die data -aansluiting van die strook, die vroulike aansluiting, nie die manlike aansluiting nie (die vroulike aansluiting word aan die ander kant gehaal). Soldeer die manlike JST -verbindings aan die punte van die battery sodat rooi na rooi en swart na swart gaan. Smelt die krimpbuis oor die blootgestelde drade (gly dit voor soldeer) sodat dit nie kortkom of iets anders soos elektriese band of warm gom gebruik nie. Soldeer 'n paar drade aan al die vroulike JST -verbindings. Maak seker dat 'n manlike uiteinde ingeprop is, sodat die penne nie skuif nie. Wees versigtig vir die polariteit en maak seker dat die drade ooreenstem met die manlike verbindings. Soldeer die drade aan die hoogspanningaansluiting (maar dit is nie 'n paar nie), en maak seker dat enige kleure bymekaar pas en dat hulle aan mekaar gekoppel is om te verhoed dat penne skuif. Soldeer die vroulike netaansluiting/draadsamestelling sodat hulle in serie gekoppel is, nie parallel nie, om dit verby die drumpelspanning van die kragreguleerder te kry. Soldeer dus die positiewe draad aan die negatiewe draad van die ander samestelling, en nou het ons een positiewe draad wat nie gesoldeer is nie en een negatiewe ongesoldeerde draad, en die twee gesoldeerde drade word aan verskillende verbindings gesoldeer. Neem die negatiewe draad en stoor dit om elders aan die negatiewe draad te word gesoldeer. Neem nou die positiewe draad en soldeer dit aan die skakelaar As daar drie of meer penne (of meer as een manier om aan te wees) soldeer dit aan die middelste pen. Let daarop dat die 'middelste pen' fisies nie in die middel is nie. Die manier om dit te identifiseer, is om die pen te vind wat, wanneer die skakelaar in enige toestand aan is, altyd aan 'n ander pen gekoppel sal wees. As geen pen so is nie, het u 'n baie spesiale skakelaar; verbind dit net met enige pen en maak seker dat die volgende draad wat aan die skakelaar gesoldeer is, in ten minste een op die toestand aan die draad gekoppel is. Soldeer nou die positiewe inlaatdraad op die spanningsreguleerder aan die teenoorgestelde kant van die skakelaar, soos hierbo bespreek. Soldeer die postiewe spanning tot by die positiewe kant van die nie-gesoldeerde hoëstroomaansluiting. Neem die negatiewe inlaatdraad en soldeer dit aan die negatiewe kant van die aansluiting. Ons gaan nou die krag parallel aan die Arduino en Power strook soldeer. Neem nou die uitgangsdrade van die spanningsreguleerder en soldeer twee stukke draad aan beide die positiewe en negatiewe ente sodat hulle in 'n Y -vorm uitkom. Soldeer 'n tweepen -aansluiting aan die positiewe en negatiewe drade van die LED -strook. Dit maak nie saak watter tipe aansluiting u gebruik nie; dit kan JST wees, of in my geval 'n stroom-/klankkabel of iets (ek is nie seker nie, en ek vra om verskoning dat ek nie foto's het nie). Soldeer een van die positiewe kragdrade aan die positiewe kant van die teenoorgestelde aansluiting vir die ligstrook en een van die negatiewe drade aan die ander pen op die aansluiting. Doen dieselfde, maar vir 'n manlike JST -aansluiting/draadsamestelling. Onthou altyd om die soldeerverbindings te isoleer om kortbroek te vermy. Kyk nou wat u met die USB B -aansluiting moet doen. Soldeer die positiewe draad aan 'n 5v -gat op die Arduino Pro Mega. Neem die gronddraad en soldeer dit aan 'n GND -gat. Neem die D+ en soldeer dit aan die digitale pen (of in hierdie geval, gat) 40. Soldeer D- na analoog pen 15. Soldeer die data-einde van die vroulike konneksie wat met die LED-strook mannetjie-aansluiting pas by datapen 6 en die gronddraad na 'n GND -pen. Maskeerband of plakband werk uitstekend om die drade aan die bord te hou, sodat dit nie val as dit omgedraai word om te soldeer nie. Neem nou 'n kort knoppie en soldeer 'n draad van die een kant na die VCC -pen (of enige spanningsuitsetpen) en die ander kant aan die RESET -pen.
Stap 5: Beheerder
Die eerste is om die regte vorm te kies om mee te begin. Dit hang alles af van hoe u die beheerder gestruktureer wil hê. Ek wou meer van 'n plat kontroleerder hê, so ek het 'n stuk van 3 1/2 "by 3/4" plank gekry. rangskik die dele op 'n manier wat gepas en gemaklik lyk om mee te werk. Gebruik 'n Franse kromme, kompas, driehoek en reguit rand om te teken waarheen al die stukke moet gaan. Sny die basiese uiteensetting met behulp van die snywerktuig van u keuse. 'N Bansaag sou die beste wees, maar ek het 'n kappersaag gebruik, wat baie goed gewerk het. Skuur die rande af sodat hulle glad kan oorgaan, en skuur dan oor die hoeke om dit gemakliker te maak. Boor die gat vir die skakelaar en skuur, beitel en/of trek die onderkant uit wat dit pas. Probeer om niks met die bokant te doen nie, en skuur slegs die materiaal wat u nodig het om dit in te pas deur te draai, te hengel of wat ook al om dit in te laat gaan. skakelaar. Boor die gebied uit sodat die potensiometerknop daardeur kan pas en beitel 'n gebied sodat dit kan insink en heeltemal kan inpas. Boor 'n paar gate sodat 'n skroef dit kan inhou. Buig die klein stukkies van die USB A -aansluiting sodat die algemene breedte 'n bietjie toeneem (kyk na die foto's). Beitel 'n gedeelte vir die aansluiting, kyk geleidelik of die aansluiting pas. Plak die aansluiting in die gleuf vas. Neem 'n stukkie plastiek en sny dit in 'n vorm wat oor die aansluiting pas (kyk na die foto's) en heg dit dan aan die hout vas. Sny stukke wat in die pad kan val, af. Skroef die potensiometer in en bevestig die knop. Soldeer die positiewe draad aan een van die punte van die potensiometer (nie die veranderlike gedeelte nie) en die negatiewe draad aan die teenoorgestelde kant. Soldeer die D-pen aan die veranderlike pen op die pot. Soldeer 'n draad van die pen op die pot met die positiewe draad aan een van die penne op die knoppie. Soldeer D+ aan die ander pen op die knoppie. Sny die ekstra draad af en isoleer die stukke wat dit nodig het.
Stap 6: hemp
Soek 'n gemaklike hemp wat die lig deurlaat. Ek het hierdie basiese wit T-hemp gekies. Dit maak nie regtig saak wat die kleur of styl is nie, solank die lig van binne gesien kan word. Ek beveel egter nie grafika aan die voorkant aan nie. Sit alles op die hemp neer om u te help besluit waar u dit wil hê, en gebruik 'n uitvee -merkmerk om dit op te teken. Ek (bedoelende sommige mense wat ek ken) het 'n potlood wat bedoel is om weefsels te merk wat maklik uitwas. Meet die grootte van die batterye, kontroleerderkas en skerm en sny stukke papier wat by pas. Speld dan die papier vas aan 'n stuk nie-rekbare stof. 'N Weefsel werk goed hiervoor. Sny dan die reghoek uit en laat ongeveer 'n kwart duim vir 'n naat regdeur. Gebruik die stuk papier as 'n gids om die voue in die stof te stryk. Nou kan die papier verwyder word. Vou dit drie keer aan die kant van die sak wat aan die bokant sal wees. Stryk en speld dit vas om dit op sy plek te hou. Werk 'n stuk stuk langs die middel van die vou vas. Neem nou die hoek en vou dit sodat die ongesaaide rande loodreg op mekaar ewewydig is, en maak 'n voorkoms langs die gestrykte vou naaste aan die hoek (die foto's help regtig). Doen dit ook vir die ander hoek. As daar 'n skakelaar uit die sak is, kan u 'n knoopsgat aan die onderkant van die sak vasmaak waar die skakelaar raak. Naai dan 'n knoopsgat en sny die middelste gedeelte uit. Ek kan nie regtig gedetailleerde instruksies gee nie, want ek het 'n goeie hulpmiddel gehad om knoopsgate te maak. Maak seker dat u die gate maak voordat die sak vasgemaak word. Neem 'n paar penne en steek dit deur die hemp op die hoeke van die merke vir die sak. Neem die sak en sit elke hoek teen 'n pen (aan die binnekant van die hemp), laat 'n kwart duim vir die naat en plak dit aan die hemp vas. Nadat die sak vasgemaak is. verwyder die penne sonder om die sak in te hou en stik die sak aan die hemp vas. Herhaal vir al die sakke. Vir die groot sak wat die skerm hou, laat 'n gaping vir die drade onderaan die sak. Om 'n gaatjie in die hemp te plaas, merk die plek en neem 'n strykyster op die agterkant (met die blink gedeelte op die stof) en stryk dit aan. Maak dan 'n knoopsgat vir 'n klein gaatjie (soos wat ek vir die skakelaar gebruik het). Vir 'n groter gat, merk die buitelyn en gebruik 'n zigzagsteek langs die lyn (of kromme of wat het u) en sny die middelste deel uit. As u wil, kan u 'n bretel gebruik om die gewig van die sakke vas te hou; die twee klampe op die voorkant en die agterkant van die broek. Ek het ook 'n klein mou stof toegewerk oor die dele van die bretels wat my vel sal raak. Twee hemde kan 'n bietjie te warm word, so ek het gekies en die stofmou gebruik.
Stap 7: Programmering
En hier is die kode. Daar is 'n paar dele wat goed kommentaar lewer, maar die oorgrote meerderheid is nie. As u vrae het oor verskillende dele, kan u my die reëlnommer gee (met #include as reëlnommer een) of 'n afskrif van die reël (s) en die funksie waarin dit voorkom (soos lus () of compMovePaddle ()) en ek sal my bes doen om dit aan u te verduidelik, en dan 'n opmerking by die kode voeg wat dit verduidelik. #include #define PIN 6 // sê wat die invoerpenne is vir die game int buttonPin = 40; // bepaal die telling, gehou in 'n bianêre skikking omdat dit esier int playerScore [5] = {0, 0, 0, 0, 0} is; int compScore [5] = {0, 0, 0, 0, 0}; // bepaal die rigting van die bal int bvd = 0; // 0 is af, 1 is op int bhd = 0; // 0 is regs, 1 is links // bepaal die balle se posisie int bvp = 8; int bhp = 6; // kyk of die bal in die vinnige modus is Boolean fast = false; // kyk of dit 'n telling is. boolean cIsPoint = false; booleaanse pIsPoint = vals; // paddle posisies int cPaddle = 0; int pPaddle = 0; lank vorigeMillis = 0; lank vorigeMillisForComp = 0; // stel die vertragingstye in vir die vinnig en stadig bewegende bal, die "Int" in normInt en fastInt is vir interval int normInt = 50; int fastInt = 10; // gebruik om te kyk vir 'n oorwinning. 1 is speler wen, -1 in rekenaar oorwinning, en 0 het nog niks gebeur nie int win = 0; // om van 'n gogga ontslae te raak. gebruik in die addOne -verklaring en nêrens anders nie. int wat = 0; // Ding wat voor die begin vertoon word, -1 is 'n ontsnapping 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}; // as jy wen, wen jy = {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}; // as jy int verloor, verloor jy = {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}; // stel die ledstrook Adafruit_NeoPixel strook op = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // opstel, draai geen pen 40 vir invoer nie, begin die strook, vertoon die // boodskap en wys dit. leemte opstelling () {pinMode (knoppie, INPUT); strip.begin (); for (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); vertraging (5000); terwyl (digitalRead (buttonPin) == LOW) {// Dit is 'n lokval! (totdat die knoppie ingedruk word.}}} void lus () {clearScreen (); // teken die spane om die telling vir (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } anders as ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } if (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } anders as ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0)); }}} // trek die bal in sy beginposisie strip.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // besluit of die bal op of af gaan terwyl (pIsPoint == false && cIsPoint == false) {clearScreen (); ongetekende lang stroomMillis = millis (); // ken die speler se paddle posisie toe pPaddle = checkPaddlePos (); // kontroleer die volgende posisie checkNext (); // die bal beweeg as (fast == false) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} anders if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }}} // trek die bal as (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, strip. Color (255, 255, 255)); } anders as (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // computer paddle movement compMovePaddle (); // draw's the paddles drawPaddles (); // sit eintlik alles op.strip.show (); // kyk of 'n punt behaal is as (pIsPoint == true) {which = 0; bhd = 0; addOne (); breek; } anders as (cIsPoint == waar) {wat = 1; bhd = 1; addOne (); breek; }} if (wen == 1) {clearScreen (); for (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } vertraging (5000); vir (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } wen = 0; } anders as (wen == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } vertraging (5000); vir (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } wen = 0; } pIsPoint = vals; cIsPoint = vals; bvp = 8; bhp = 6; bvd = random (0, 2); // 0 is af, 1 is up up = false; } // Die AI vir die spel leegte compMovePaddle () {unsigned long currentMillis = millis (); as (currentMillis - previousMillisForComp> 51) {previousMillisForComp = currentMillis; as (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } anders as (bvp = 0 && cPaddle <10) {cPaddle ++; } anders as (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } anders as (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}}} // beweeg die leegte van die bal moveBall () {if (bhd == 0) {bhp--; } anders as (bhd == 1) {bhp ++; } as (bvd == 0) {bvp--; } anders as (bvd == 1) {bvp ++; }}} // voeg een by die skikking. As die een 0 is, dra dit by tot die speler se telling. As dit 1 is, voeg dit by die rekenaars void addOne () {if (which == 0) {// as dit die speler se telling is // Voeg een by. Dit is die eenvoudigste manier waarop ek weet hoe. vir (int i = 0; i <5; i ++) {// lus if (playerScore == 0) {// as die waarde 'n zero playerScore = 1; // maak 1 breek; // gaan dan weg} anders {// as dit 1 spelerscore = 0 is; // maak dit nul en lus}}} anders as (wat == 1) {vir (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; breek; } anders {compScore = 0; }}}} // Kyk of iemand gewen het. as (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {wen = -1; } anders as (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }}} // kontroleer die balle se volgende posisie leegte checkNext () {// kontrole om te sien of 'n punt behaal is as (bhp == 13) {pIsPoint = true; } anders as (bhp == 0) {cIsPoint = waar; } // as 'n punt behaal is, slaan dan die res van hierdie goed oor as (pIsPoint == false || cIsPoint == false) {// die bal vertikaal kontroleer as (bvp+bvd == 15) {bvd = 0; } anders as (bvp+bvd == 0) {bvd = 1; } // kontroleer die bal horisontaal as (bhp+bhd == 13) {// eers aan die rekenaarkant as (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } anders as (bhd == 0) {bhd = 1; } vinnig = vals; } anders as (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } anders as (bvd == 1) {bvd = 0; } bhd = 1; } anders as (bvp == 0 || bvp == 14) {bhd = 1; } vinnig = vals; }} anders as (bhp+bhd == 1) {// dan aan die spelerskant as (bvp> = pPaddle && bvp <= pPaddle+4) {// dit op 'n normale plek teen die paddle slaan? // weerkaats die bal! as (bhd == 1) {bhd = 0; } anders as (bhd == 0) {bhd = 1; }} anders as (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// dit die spaan op die hoek tref as (bvp! = 0 && bvp! = 14) {// is dit nie hoog of laer nie? // Wip die bal! as (bvd == 0) {bvd = 1; } anders as (bvd == 1) {bvd = 0; } bhd = 1; vinnig = waar; } anders as (bvp == 0 || bvp == 14) {// is dit hoog of laag? // weerkaats die bal! bhd = 0; fast = true; // stel die waarde in om die bal later vinnig te laat beweeg}}}}} int checkPaddlePos () {// lees die pot en besluit oor die paddle -posisie ooreenkomstig of (analogRead (A15) <93) {return 0; } anders as (analogRead (A15) <186) {opgawe 1; } anders as (analogRead (A15) <279) {opgawe 2; } anders as (analogRead (A15) <372) {opgawe 3; } anders as (analogRead (A15) <465) {opgawe 4; } anders as (analogRead (A15) <558) {opgawe 5; } anders as (analogRead (A15) <652) {opgawe 6; } anders as (analogRead (A15) <745) {opgawe 7; } anders as (analogRead (A15) <837) {opgawe 8; } anders as (analogRead (A15) <= 931) {opgawe 9; } anders as (analogRead (A15) <= 2014) {opgawe 10; }} void drawPaddles () {// trek die spane op die regte plek en vertoon die telling op die spaan vir (int i = 0; i <5; i ++) {if (playerScore == 1) {strook. setPixelColor (pPaddle+i, strip. Color (255, 255, 255)); } anders as ((playerScore == 0)) {strip.setPixelColor (pPaddle+i, strip. Color (255, 0, 0)); } if (compScore == 1) {strip.setPixelColor (199+cPaddle-i, strip. Color (255, 255, 255)); } anders as ((compScore == 0)) {strip.setPixelColor (199+cPaddle-i, strip. Color (0, 255, 0)); }}} void clearScreen () {for (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0)); } strip.show (); }
Stap 8: Klaar produk
En daar gaan jy, die voltooide hemp!
Aanbeveel:
FLEXBALL - 'n honderd pixel buigsame PCB -bal met WiFi: 6 stappe (met foto's)
FLEXBALL - 'n Honderd pixel buigsame PCB -bal met WiFi: Hallo makers, die vervaardiger is moekoe! Flexball is gebaseer op 'n buigsame PCB wat toegerus is met 100 WS2812 2020 aanspreekbare LED's. Dit word beheer deur 'n ESP8285-01f - die kleinste ESP -gebaseerde module deur Espressif. Boonop het dit 'n ADXL345 -versnelling
Speel die Simon -spel op u hemp: 5 stappe
Speel die Simon -spel op u hemp: wou u nog altyd die Simon -speletjie op u hemp speel? Ek ook! In hierdie instruksie sal ek jou wys hoe om 'n weergawe van die Simon -spel te maak wat jy kan speel deur jou hemp aan te raak met 'n Makey Makey
Speel 'n PONG -speletjie met Arduino Uno en OLED 0.96 SSD1306 -skerm: 6 stappe
Speel 'n PONG -speletjie met Arduino Uno en OLED 0.96 SSD1306 -skerm: Hallo ouens, ons maak 'n PONG -speletjie met Arduino. Ons sal adafruit se 0.96 oled -skerm gebruik om die spel te vertoon & drukknoppies om die spel te beheer
Hoe om gebroke of geskeurde buigsame / buigsame kabels te herstel: 5 stappe
Hoe om gebroke of geskeurde buigsame / buigsame kabels te herstel: die werklike grootte van die kabel was 3/8 duim breed
Praat Arduino - 'N MP3 speel met Arduino sonder enige module - Speel MP3 -lêer vanaf Arduino met behulp van PCM: 6 stappe
Praat Arduino | 'N MP3 speel met Arduino sonder enige module | Mp3 -lêer speel vanaf Arduino met behulp van PCM: In hierdie instruksies leer ons hoe om 'n mp3 -lêer met arduino te speel sonder om 'n klankmodule te gebruik