Indholdsfortegnelse:
- Trin 1: Materialer og værktøjer
- Trin 2: Skær LED -stripen i mindre strimler
- Trin 3: Lodning af skærmen sammen
- Trin 4: Lodning af kerneelektronikken
- Trin 5: Controller
- Trin 6: Skjorte
- Trin 7: Programmering
- Trin 8: Færdig produkt
Video: Pong spiller fleksibel skærm på en skjorte: 8 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Dette er mit Halloween -kostume for 2013. Det har været i gang i cirka et år og har taget en del mandtimer at skabe. Skærmen er 14 x 15 pixels, så temmelig lav opløsning, men den kan stadig gøre nogle sjove ting. Det er fysisk fleksibelt i alle retninger, selvom det ikke kan foldes uden skader. Den har en controller bestående af en enkelt knap og glidekande, forbundet til en pro mega via USB. For at holde den i live i lang tid anvender den to monstrøse 2200 mAh batterier, der er forbundet i serie for at få den nødvendige spænding, og derefter en 5 Volt -regulator for at gøre den brugbar. Al elektronik er placeret i lommer på indersiden af trøjen, så de kan tages af, og så kan trøjen vaskes. Det spiller et funktionelt spil pong. Det pryder først en med ordene "PONG PLAY" i dejlig blå bogstaver ved hjælp af en modificeret version af Tom Thumb-skrifttypen (kan findes på https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Efter fem sekunder kan der gives mulighed for at trykke på knappen for at gå videre, eller for ikke at trykke på knappen og efterlade en helt god oplevelse. Når man vælger at trykke på knappen, begynder spillet. En rød padle til højre er computerens padle, og den grønne padle til højre er spillerens padle, som styres af glidepotten for at bevæge sig op og ned. Bolden hopper rundt, mens hver side forsøger at score et point. Spilleren kan slå bolden med kanten af deres padle for at fremskynde den (en fin funktion), mens computeren ikke kan gøre dette, og i stedet ender med at sidde fast med at bevæge sig lidt langsommere end bolden. Når et point er scoret, ændres en pixel til hvid på scoringssidens padle. Det tæller i binært fra bunden. hvor grøn eller rød er nul og hvid er 1. 21 er scoren for at vinde (eller tabe afhængigt af hvem der får 21 point), og så når spillerens padle læser 10101, vises teksten "DU VINDER". Endnu en gang i modificeret Tom Thumb. Det samme sker, men med "YOU LOSE" vises i stedet. Efter en sejr eller tab genstarter spillet til det punkt lige efter Pong Play. For at genstarte helt trykkes der på genstartsknappen på "Magic Box", også kendt som boksen-med-al-elektronik-undtagen-skærmen.
Trin 1: Materialer og værktøjer
Ting markeret med en * er valgfri, men anbefaler Og så i ingen særlig rækkefølge … Materialer: 4 værfter Adafruit Neopixle 60 pixel pr. Meter strimmel 1 T-shirt * 1 par seler 1/2 yard stof vil være mere end nok (ikke stretchy weave foretrækkes) 6 fod USB A han til USB B han kabel 1 USB A hun stik 3 2 pin JST hun stik 4 2 pin JST han ledninger batterioplader 2 6600 mAh batterier 1 Arkade stil knap 1 arduino pro-mega 1 FTDI header 1 USB B -hunstik med breakout -kort 1 tænd/sluk -knap (vippekontakt) 1 nulstillingskontakt (skifte eller momentan) 1 glidepotentiometer *1 glideknap -knap 1 højforstærkerpar *1 projektkasse 1 5V 3+ amp spændingsregulator en lille en smule plast, noget loddemiddel, noget tråd, noget tråd *noget varmt lim *noget elastik nogen tid (måske lidt mere end "noget"), en vis udholdenhed (du skal nok bruge en del af dette) nogle varmekrympeslanger eller elektrisk tape noget superlim lidt jern på bagsiden Værktøjer *Hjælpende hænder Normal hånd s (eller en der har adgang til dem) Loddejern *Varmlimpistol Dremel eller sandpapir Mejsel Wire Strippers Wire Cutters Hæftepistol Skruemaskine Savnåle Symaskine Stofsaks
Trin 2: Skær LED -stripen i mindre strimler
Brug dit foretrukne skæreredskab og skær strimlen i 14 segmenter, hver 15 pixel lang. Skær kun mellem kobbersporene, mærket med noget som "DO" "DIN" "+5V" og "GND". Hvis det allerede er loddet over kobberet, skæres det lige igennem. Prøv ikke at skære for meget i det udsatte kobber, men hvis du nikker det lidt, er det helt fint. Når alle 14 strimler er skåret, skal du klippe lidt af gummiet af i hver ende for at få det af vejen til lodning af strimlerne.
Trin 3: Lodning af skærmen sammen
Tag tråden og skær den i cirka 9,5 cm segmenter. I mit tilfælde har jeg tre forskellige farver for at gøre det lettere at holde lige ved lodning, men en farve ville fungere fint. Du skal bruge omkring 40 af disse små fyre, men skær et par mere for sikkerheds skyld. Når du er færdig med at skære tråden, skal du strimle og tynde enderne (Hvis du har lodningserfaring, kan du springe til det næste afsnit), hvilket betyder, at når du har fjernet den lille smule plast, skal du lægge lidt loddemetal i enderne af hver tråd. Opvarm ikke loddet, og prøv at flytte til ledningen, varm med dig loddejern fra bunden af kobberet og læg loddet på toppen. Vær tålmodig og vent på, at den varme ledning smelter loddet. Det er fristende at stramme loddejernet til loddetøjet for at komme i gang (Min utålmodighed og jeg ved præcis, hvordan du har det), men loddetin klistrer ikke så godt. Gør det samme for de eksponerede kobberspor i hver ende af strimmelsektionerne. Hvis det allerede har loddetin, skal du ikke bekymre dig om det. Til strimlen vil du måske bygge en lille høj op for at gøre det lettere senere. Når du arbejder med strimlen, skal du gøre det hurtigt, og prøv ikke at bruge for meget tid på at påføre varme på strimlen. Gør kun, hvad du skal gøre for at smelte loddet på sporet. Lod en ledning på hvert spor til enden af den første strimmel (Den første strimmel er den med ledninger og stik, lod den til den udsatte ende). Hvis du ser på strimlen, vil du se små pile på den, der går op til den ende, hvor du lodde tråden. Tag en anden strimmel, så pilene peger i den modsatte retning, og lod lodningen, der kommer fra GND -sporet, til GND -sporet for den anden, +5V til +5V og så videre. Gentag dette, og sørg for, at pilene skifter retning efter hvert afsnit, så hvis du skulle følge dem, ville det zigzage op og ned, og at det kunne strækkes ud til på en lang strimmel til sidst. Når alle 14 strimler er loddet, skal du lægge dem ud og stille op, så LED'erne danner et gitter. Hold dem derefter sammen ved hjælp af en metode, der kan fjernes senere uden at beskadige strimlen. Jeg brugte tape. Det er klistret nok til at holde alt sammen, men ikke så klistret, at det efterlader en rest. Jeg anbefaler ikke noget til permanent, som hæfteklammer eller gaffatape. Når alt er blevet tapet sammen loddes en ledning fra strimlen i bunden +5V til den umiddelbart ved siden af. Gentag, indtil hele bunden har strømhanerne helt på tværs. Dette er, så skærmen ikke dæmpes, når linjen af LED'er skrider frem.
Trin 4: Lodning af kerneelektronikken
Lod lod USB B breakout board (BOB) til USB B stik. Lod de relevante ledninger til USB A -stikket. Jeg anbefaler, at du kigger på pin-out'en på stikket som findes på dette websted, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Du skal ikke bekymre dig om, hvor du skal lodde de andre ender af ledningerne på USB A -stikket lige nu; der vil blive dækket i controller -trinnet. Skær datastikket fra båndet, hunstikket, ikke hanstikket (hunstikket er hentet fra den anden ende). Lod de mandlige JST -stik til enderne af batteriet, så rødt går til rødt og sort går til sort. Smelt varmekrympeslange over de udsatte ledninger (gled over før lodning), så de ikke kortsluttes eller bruger noget andet som elektrisk tape eller varm lim. Lod nogle ledninger til alle de kvindelige JST -stik. Sørg for at have en han -ende tilsluttet, så stifterne ikke forskyder sig. Vær forsigtig med polariteten, og sørg for, at ledningerne matcher de hanstik. Lodde ledninger til et højspændingsstikket (men ikke det er par) igen, og sørg for, at alle farver matcher, og at de er sat sammen for at forhindre skiftende stifter. Lod den kvindelige lige stik/ledningssamling, så de er forbundet i serie, ikke parallelle, for at få den forbi tærskelværdien for effektregulatoren. Så lod den positive ledning til den negative ledning i den anden samling, så nu har vi en usoldet positiv ledning og en negativ usoldet ledning, og de to lodde ledninger er loddet til forskellige stik. Tag den negative ledning og gem den for at blive loddet til den negative ledning andre steder. Tag nu den positive ledning og lod den til kontakten Hvis der er tre eller flere ben (eller mere end en måde at være "på"), loddes den til den midterste stift. Bemærk, at "Mellemstiften" muligvis ikke fysisk er i midten. Måden at identificere det på er at finde stiften, der, når kontakten er tændt i en hvilken som helst tilstand, altid vil være forbundet til en anden pin. Hvis ingen nål er som denne, har du en helt særlig switch; bare tilslut den til en hvilken som helst stift, og sørg for, at den næste ledning, der er loddet til kontakten, vil blive tilsluttet den pågældende ledning i mindst en på -tilstand. Nu loddes den positive indtagstråd på spændingsregulatoren til den modsatte ende af kontakten, som diskuteret ovenfor. Lod den postive spænding ud til den positive ende af det ikke-lodde højstrømstik. Tag den negative indtagstråd og lod den til den negative ende af højstrømstikket. Vi skal nu lodde strømmen parallelt med Arduino og Power strip. Tag nu spændingsregulatorens udgangstråde og lod to stykker ledning på både de positive og negative ender, så de kommer ud i en Y -form. Lod et to -polet stik til de positive og negative ledninger i LED -strimmelenheden. Det er ligegyldigt hvilken type stik du bruger, det kan være JST eller i mit tilfælde noget strøm-/lydkabel eller noget (jeg er ikke sikker, og jeg beklager, at jeg ikke har nogen billeder). Lod en af de positive strømkabler til den positive ende af det modsatte stik til lysstrimlen og en af de negative ledninger til den anden stift på stikket. Gør det samme, men for en JST -stik/ledningssamling. Hele tiden skal du huske at isolere loddeledene for at undgå shorts. Nu til hvad du skal gøre med USB B -stikket. Lod den positive ledning til et 5v hul på Arduino Pro Mega. Tag jordledningen og lod den til et GND -hul. Tag D+ og lod den til den digitale pin (eller i dette tilfælde hul) 40. Loddemetode D- til analog pin 15. Lod den dataende på hunstikket, der passer sammen med LED-strip-hanstikket til datastift 6 og jordledning til en GND -pin. Maskering eller scotch tape fungerer fantastisk til at holde ledningerne til brættet, så de ikke falder ud, når det vendes for at blive loddet. Tag nu en kort knap og lod en ledning fra den ene ende til VCC -stiften (eller en hvilken som helst spændingsudgangsstift) og den anden ende til RESET -stiften.
Trin 5: Controller
Først er det at vælge den rigtige form til at starte med. Det hele afhænger af, hvordan du vil have controlleren struktureret. Jeg ville have mere af en flad controller, så jeg fik et stykke 3 1/2 "x 3/4" planke. ordne delene på en måde, der virker passende og behagelig at arbejde med. Brug en fransk kurve, kompas, trekant og lige kant til at tegne på, hvor alle brikkerne skal gå. Skær den grundlæggende oversigt ud ved hjælp af det skæreværktøj, du vælger. En forbudsav ville være bedst, men jeg brugte en klingsav, som fungerede fint. Slib kanterne ned for at få dem til let at skifte, og slip derefter ned i hjørnerne for at gøre det mere behageligt. Bor hullet til kontakten ud, og slip, mejsel og/eller Dremel en del på bunden, der får den til at passe. Prøv ikke at gøre noget med toppen og kun slibe ud, hvad du har brug for for at kunne passe den ind ved at vride, fiske eller hvad som helst andet for at få den til at gå i. Når den er i, skal du sætte den fast med plastmøtrikken og fastgøre kontakt. Bor området ud, så potentiometerknappen passer igennem og mejsel et område, så det kan synke ind og passe hele vejen igennem. Bor nogle huller ud, så en skrue kan holde den inde. Bøj i de små stykker af USB A -stikket, der får den til at brede sig en smule i bredden (se billederne). Mejsel en del til stikket og kontroller gradvist for at sikre, at stikket passer. Super lim stikket ind i dets slot. Tag et lille stykke plastik og skær det i en form, der passer over stikket (se billederne), og hæft det derefter til træet. Skær alle stykker af, der kan komme i vejen. Skru potentiometeret i, og fastgør knappen. Lod den positive ledning til en af enderne af potentiometeret (ikke den variable del) og den negative ledning til den modsatte ende. Lod D-stiften til den variable pin på gryden. Lod en ledning fra stiften på gryden med den positive ledning til en af benene på knappen. Lodde D+ til den anden pin på knappen. Trim reservetråden, og isoler de stykker, der har brug for det.
Trin 6: Skjorte
Find en behagelig skjorte, der slipper lyset igennem. Jeg valgte denne grundlæggende hvide T-shirt. Det er ikke ligegyldigt farve eller stil, så længe lyset kan ses skinne igennem indefra. Jeg anbefaler dog ikke grafik på forsiden. Læg alt på trøjen for at hjælpe dig med at beslutte, hvor du vil have den, og brug et sletningsmærke til at tegne det på. Jeg (det vil sige nogle mennesker, jeg kender) har en blyant beregnet til at markere stoffer, der let skylles ud. Mål størrelsen på batterierne, controller -kabinettet og skærmen, og skær stykker papir ud, så de matcher. Pin derefter papiret til et stykke ikke-elastisk stof. En vævning fungerer godt til dette. Skær derefter rektanglet ud, så der efterlades cirka en kvart tomme for en søm hele vejen rundt. Brug derefter papiret som en guide til at stryge foldene ind i stoffet. Nu kan papiret fjernes. På den del af lommen, der vil være den øverste, fold den over sig selv tre gange. Stryg og stift det for at holde det på plads. Sy et stykke hele vejen langs midten af folden. Tag nu hjørnet og fold det, så de usyede kanter vinkelret på hinanden er parallelle og sy et udseende langs den strygede fold nærmest hjørnet (billederne hjælper virkelig). Gør dette også for det andet hjørne. Hvis du sandsynligvis vil have en vippekontakt, der kommer ud af en lomme, skal du sy et knaphul i bunden af lommen, hvor kontakten rører. Sy derefter et knaphul og skær den midterste del ud. Jeg kan ikke rigtig give detaljerede instruktioner, fordi jeg havde et fedt værktøj til at lave knaphuller. Bare sørg for at du laver hullerne, før lommen sys på. Tag nogle stifter og stikk dem gennem trøjen i hjørnerne af markeringerne til lommen. Tag lommen og læg hvert hjørne ved en nål (på indersiden af trøjen), lad en kvart tomme stå for sømmen, og pin den til trøjen. Efter at lommen er blevet fastgjort. fjern stifterne, der ikke holder lommen i, og sy lommen til skjorten. Gentag for alle lommerne. For den store lomme, der holder skærmen, efterlades et hul for ledningerne i bunden af lommen. For at sætte et hul i trøjen skal du markere stedet og tage et strygejern på bagsiden (med den skinnende del på stoffet) og stryge det på. Lav derefter et knaphul til et lille hul (som det jeg brugte til vippekontakten). For et større hul skal du markere omridset og bruge en zigzagsøm langs linjen (eller kurve eller hvad-har du) og skære den midterste del ud. Hvis du vil, kan du bruge seler til at holde vægten af lommerne, de to clips holder på lommerne på forsiden og bagklemmen på bukserne. Jeg fik også syet et lille stofærme over de dele af selerne, der vil røre min hud. To skjorter kan blive lidt for varme, så jeg meldte mig ud og brugte det lille stofærme.
Trin 7: Programmering
Og her er koden. Der er et par dele, der er godt kommenteret, men langt de fleste er det ikke. Hvis du har spørgsmål om forskellige dele, kan du enten give mig linjenummeret (med #include som linjenummer et) eller give mig en kopi af linien (erne) og den funktion, den findes i (f.eks. Loop () eller compMovePaddle ()), og jeg vil gøre mit bedste for at forklare det for dig og derefter tilføje en kommentar til koden, der forklarer det. #include #define PIN 6 // siger hvilke er input -benene til spillet int buttonPin = 40; // dikterer score, opbevaret i en bianary array, fordi det er esier int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // dikterer boldens retning int bvd = 0; // 0 er nede, 1 er op int bhd = 0; // 0 er højre, 1 er venstre // dikterer boldens position int bvp = 8; int bhp = 6; // kontrollerer, om bolden er i hurtig tilstand boolsk hurtig = falsk; // kontrollerer, om det er en score. boolsk cIsPoint = falsk; boolsk pIsPoint = falsk; // padlepositioner int cPaddle = 0; int pPaddle = 0; lang tidligereMillis = 0; lang foregåendeMillisForComp = 0; // indstil forsinkelsestiderne for hurtig og langsom bevægelig bold, "Int" i normInt og fastInt er for interval int normInt = 50; int fastInt = 10; // bruges til at tjekke for en gevinst. 1 er spiller sejr, -1 i computer sejr, og 0 er intet sket endnu int win = 0; // for at slippe af med en fejl. bruges i addOne -sætningen og ingen andre steder. int som = 0; // Ting vist før start, -1 er en escape 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}; // hvis du vinder 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}; // hvis du mister 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}; // opsætter LED -strimlen Adafruit_NeoPixel strip = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // opsætning, drejer ingen pin 40 til input, starter strimlen, viser // meddelelsen og viser den. void setup () {pinMode (buttonPin, INPUT); strip.begin (); for (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); forsinkelse (5000); mens (digitalRead (buttonPin) == LOW) {// Det er en fælde! (indtil der trykkes på knappen.)}} void loop () {clearScreen (); // tegner padlerne for at vise scoren for (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } ellers hvis ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } hvis (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } ellers hvis ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0)); }}} // trækker bolden i dens startposition strip.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // afgør, om bolden skal op eller ned, mens (pIsPoint == false && cIsPoint == false) {clearScreen (); usigneret lang strømMillis = millis (); // tildeler spillerens padleposition pPaddle = checkPaddlePos (); // kontrollerer den næste position checkNext (); // flytte bolden hvis (hurtig == falsk) {hvis (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} ellers if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }}} // tegne bolden hvis (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, strip. Color (255, 255, 255)); } ellers hvis (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // computer padle bevægelse compMovePaddle (); // draw's the paddles drawPaddles (); // lagde faktisk alt op.strip.show (); // kontrollere for at se, om der er scoret et point, hvis (pIsPoint == true) {which = 0; bhd = 0; addOne (); pause; } ellers hvis (cIsPoint == true) {which = 1; bhd = 1; addOne (); pause; }} if (win == 1) {clearScreen (); for (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } forsinkelse (5000); for (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } vind = 0; } ellers hvis (win == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } forsinkelse (5000); for (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } vind = 0; } pIsPoint = falsk; cIsPoint = falsk; bvp = 8; bhp = 6; bvd = tilfældig (0, 2); // 0 er nede, 1 er hurtigt oppe = falsk; } // AI for spillet void compMovePaddle () {unsigned long currentMillis = millis (); hvis (currentMillis - previousMillisForComp> 51) {previousMillisForComp = currentMillis; hvis (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } ellers hvis (bvp = 0 && cPaddle <10) {cPaddle ++; } ellers hvis (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } ellers hvis (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}}} // flytter bolden ugyldigt moveBall () {hvis (bhd == 0) {bhp--; } ellers hvis (bhd == 1) {bhp ++; } hvis (bvd == 0) {bvp--; } ellers hvis (bvd == 1) {bvp ++; }}} // tilføjer en til matrixen. Hvis hvilken er 0, føjer det til spillerens score. Hvis det er 1 tilføjer det til computerne void addOne () {if (which == 0) {// hvis det er spillerens score // Tilføj en. Det er den simple måde, jeg ved hvordan. for (int i = 0; i <5; i ++) {// loop hvis (playerScore == 0) {// hvis denne værdi er en nul playerScore = 1; // gør det til 1 pause; // derefter gå væk} else {// hvis det er 1 playerScore = 0; // gør det til nul og loop}}} ellers if (which == 1) {for (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; pause; } ellers {compScore = 0; }}}} // Kontrollerer, om nogen vandt. hvis (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {win = -1; } ellers hvis (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }}} // kontrollerer boldens næste position ugyldig checkNext () {// tjekker for at se, om der er scoret et point, hvis (bhp == 13) {pIsPoint = true; } ellers hvis (bhp == 0) {cIsPoint = true; } // hvis der er scoret et point end spring over resten af disse ting, hvis (pIsPoint == false || cIsPoint == false) {// kontrollerer bolden lodret, hvis (bvp+bvd == 15) {bvd = 0; } ellers hvis (bvp+bvd == 0) {bvd = 1; } // kontrollerer bolden vandret hvis (bhp+bhd == 13) {// først på computersiden hvis (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } ellers hvis (bhd == 0) {bhd = 1; } hurtig = falsk; } ellers hvis (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } ellers hvis (bvd == 1) {bvd = 0; } bhd = 1; } ellers hvis (bvp == 0 || bvp == 14) {bhd = 1; } hurtig = falsk; }} ellers hvis (bhp+bhd == 1) {// derefter på spillersiden, hvis (bvp> = pPaddle && bvp <= pPaddle+4) {// rammer det padlen et normalt sted? // hoppe bolden! hvis (bhd == 1) {bhd = 0; } ellers hvis (bhd == 0) {bhd = 1; }} ellers hvis (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// rammer det padlen på hjørnet, hvis (bvp! = 0 && bvp! = 14) {// er det ikke højt eller lavt? // Bounce bolden! hvis (bvd == 0) {bvd = 1; } ellers hvis (bvd == 1) {bvd = 0; } bhd = 1; hurtig = sand; } ellers hvis (bvp == 0 || bvp == 14) {// er det højt eller lavt? // hoppe bolden! bhd = 0; fast = true; // indstil værdien til senere at få bolden til at bevæge sig hurtigt}}}}} int checkPaddlePos () {// læser puljen og bestemmer padlepositionen i overensstemmelse hermed, hvis (analogRead (A15) <93) {return 0; } ellers hvis (analogRead (A15) <186) {return 1; } ellers hvis (analogRead (A15) <279) {return 2; } ellers hvis (analogRead (A15) <372) {return 3; } ellers hvis (analogRead (A15) <465) {return 4; } ellers hvis (analogRead (A15) <558) {return 5; } ellers hvis (analogRead (A15) <652) {return 6; } ellers hvis (analogRead (A15) <745) {return 7; } ellers hvis (analogRead (A15) <837) {return 8; } ellers hvis (analogRead (A15) <= 931) {return 9; } ellers hvis (analogRead (A15) <= 2014) {return 10; }} void drawPaddles () {// draw's padlerne på det rigtige sted og viser scoren på padlen for (int i = 0; i <5; i ++) {if (playerScore == 1) {strip. setPixelColor (pPaddle+i, strip. Color (255, 255, 255)); } ellers hvis ((playerScore == 0)) {strip.setPixelColor (pPaddle+i, strip. Color (255, 0, 0)); } hvis (compScore == 1) {strip.setPixelColor (199+cPaddle-i, strip. Color (255, 255, 255)); } ellers hvis ((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 (); }
Trin 8: Færdig produkt
Og der går du, den færdige skjorte!
Anbefalede:
FLEXBALL - en hundrede pixel fleksibel printkort med WiFi: 6 trin (med billeder)
FLEXBALL - en hundrede pixel fleksibel printkort med WiFi: Hej beslutningstagere, det er maker moekoe! Flexball er baseret på en fleksibel print, der er udstyret med 100 WS2812 2020 adresserbare lysdioder. Det styres af et ESP8285-01f - det mindste ESP -baserede modul fra Espressif. Derudover har den en ADXL345 acceleromete
Kører uden skærm / skærm (hovedløs) på Raspberry Pi eller andre Linux / unix -baserede computere: 6 trin
Kører uden skærm / skærm (hovedløs) på Raspberry Pi eller andre Linux / unix -baserede computere: Når de fleste mennesker køber en Raspberry PI, tror de, at de har brug for en computerskærm. Spild ikke dine penge på unødvendige computerskærme og tastaturer. Spild ikke din tid på at flytte tastaturer og skærme mellem computere. Bind ikke et tv, når det er nej
Pi-hole-skærm ESP8266 med OLED-skærm: 4 trin
Pi-hole-skærm ESP8266 med OLED-skærm: Pi-hole Monitor er en Wemos D1 Mini (ESP8266) med en SSD1306 OLED-skærm, der administreres via en webgrænseflade og sidder på dit lokale netværk og vil vise statistik fra din Pi-hole-server. Funktioner: Vis Pi-Hole StatisticsTotal BlockedTot
Sådan laver du ur i realtid ved hjælp af Arduino og TFT -skærm - Arduino Mega RTC med 3,5 tommer TFT -skærm: 4 trin
Sådan laver du ur i realtid ved hjælp af Arduino og TFT-skærm | Arduino Mega RTC med 3,5 tommer TFT-skærm: Besøg min Youtube-kanal. Introduktion:- I dette indlæg skal jeg lave “Real time Clock” ved hjælp af 3,5 tommer TFT touch LCD, Arduino Mega 2560 og DS3231 RTC-modul …. Inden start … tjek videoen fra min YouTube-kanal..Bemærk:- Hvis du bruger Arduin
SOLAR TRÅDLØS LAMPE MED MAGNETISK FLEKSIBEL ARM: 8 trin (med billeder)
SOLAR TRÅDLØS LAMPE MED MAGNETISK FLEKSIBEL ARM: Dette projekt blev lavet af en ødelagt lampe & nodeMCU. Denne dekorative lampe kan justeres i alle retninger & fastgjort på magnetiske materialer eller lagt på bordet. Det kan styres i to tilstande som følger:- Trådløs kontroltilstand, som