Innehållsförteckning:

Pong spelar flexibel skärm på en skjorta: 8 steg (med bilder)
Pong spelar flexibel skärm på en skjorta: 8 steg (med bilder)

Video: Pong spelar flexibel skärm på en skjorta: 8 steg (med bilder)

Video: Pong spelar flexibel skärm på en skjorta: 8 steg (med bilder)
Video: Solar Trail Camera - Campark T180 TC08 - Full Review 2024, November
Anonim
Pong spelar flexibel skärm på en skjorta
Pong spelar flexibel skärm på en skjorta
Pong spelar flexibel skärm på en skjorta
Pong spelar flexibel skärm på en skjorta
Pong spelar flexibel skärm på en skjorta
Pong spelar flexibel skärm på en skjorta

Detta är min Halloween -dräkt för 2013. Den har varit på gång i ungefär ett år och har tagit ganska många manstimmar att skapa. Skärmen är 14 x 15 pixlar, så, ganska låg upplösning men det kan fortfarande göra några roliga saker. Det är fysiskt flexibelt i alla riktningar, även om det inte kan vikas utan skada. Den har en styrenhet som består av en enda knapp och glidkruka, ansluten till en pro mega via USB. För att hålla den vid liv länge använder den två monströsa 2200 mAh -batterier i serie för att få den nödvändiga spänningen, och sedan en 5 Volt -regulator för att göra den användbar. All elektronik är placerad i fickor på insidan av skjortan så att de kan tas bort och så att skjortan kan tvättas. Det spelar ett funktionellt spel pong. Det pryder först en med orden "PONG PLAY" med härlig blå bokstäver med en modifierad version av Tom Thumb-teckensnittet (finns på https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Efter fem sekunder kan du välja att trycka på knappen för att gå vidare, eller att inte trycka på knappen och lämna en perfekt upplevelse bakom dig. När man väljer att trycka på knappen börjar spelet. En röd paddel till höger är datorns paddel och den gröna paddeln till höger är spelarens paddel, som styrs av glidpotten för att flytta upp och ner. Bollen studsar runt när varje sida försöker göra en poäng. Spelaren kan slå bollen med kanten på sin paddel för att påskynda den (en trevlig funktion) medan datorn inte kan göra detta, och istället hamnar den fast med att röra sig något långsammare än bollen. När en poäng görs ändras en pixel till vitt på sidorna. Det räknas i binärt från botten. där grönt eller rött är noll och vitt är 1. 21 är poängen att vinna (eller förlora beroende på vem som får 21 poäng) och så när spelarens paddel läser 10101, visas texten "DU VINNAR". Återigen i modifierad Tom Thumb. Detsamma händer men med "YOU LOSE" visas istället. Efter en vinst eller förlust startar spelet om till poängen direkt efter Pong Play. För att starta om helt trycks omstartsknappen på "Magic Box", även känd som boxen med all elektronik utom skärmen.

Steg 1: Material och verktyg

Material och verktyg
Material och verktyg
Material och verktyg
Material och verktyg

Saker markerade med en * är valfria men rekommenderar Och så i ingen särskild ordning … Material: 4 Yards of Adafruit Neopixle 60 pixel per meter remsa 1 T-shirt * 1 par hängslen 1/2 yard tyg kommer att vara mer än tillräckligt (Icke stretchig väv är att föredra) 6 fot USB A hane till USB B han kabel 1 USB A honkontakt 3 2-stifts JST honkontakter 4 2-stifts JST hankablar batteriladdare 2 6600 mAh batterier 1 Arkad stil knapp 1 arduino pro-mega 1 FTDI header 1 USB B honkontakt med brytkort 1 på/av -omkopplare (växel) 1 återställningsbrytare (växel eller momentan) 1 glidpotentiometer *1 glidgrytknapp 1 högförstärkarkontaktpar *1 projektfodral 1 5V 3+ amp spänningsregulator en liten lite plast lite löd lite tråd lite tråd *lite varmt lim *lite elastiskt någon gång (kanske lite mer än "lite") lite uthållighet (du kommer nog att behöva en hel del av det här faktiskt) lite värmekrympslang eller tejp lite superlim lite järn på stödverktyg *Hjälpande händer Normal hand s (eller någon som har tillgång till dem) Lödkolv *Hotlimpistol Dremel eller sandpapper Mejsltråd Strippers Wire Cutters Häftpistol Skruvmejsel Sågnålar Symaskin Tyg sax

Steg 2: Skär LED -remsan i mindre remsor

Skär LED -remsan i mindre remsor
Skär LED -remsan i mindre remsor
Skär LED -remsan i mindre remsor
Skär LED -remsan i mindre remsor
Skär LED -remsan i mindre remsor
Skär LED -remsan i mindre remsor

Använd ditt önskade skärredskap och skär remsan i 14 segment, var 15 pixlar långa. Klipp endast mellan kopparspåren, märkta med något liknande "DO" "DIN" "+5V" och "GND". Om det redan är lödt över koppar är det bara genomskuren. Försök att inte skära för mycket i den exponerade kopparen men om du nickar lite är det helt ok. När alla 14 remsorna har skurits, klippa av lite av gummit från varje ände för att få det ur vägen för lödning av remsorna.

Steg 3: Lödning av skärmen tillsammans

Lödning av skärmen tillsammans
Lödning av skärmen tillsammans
Lödning av skärmen tillsammans
Lödning av skärmen tillsammans
Lödning av skärmen tillsammans
Lödning av skärmen tillsammans

Ta tråden och skär den i cirka 3,5 tum (9 cm) segment. I mitt fall har jag tre olika färger för att göra det lättare att hålla rak vid lödning, men en färg skulle fungera bra. Du kommer att behöva cirka 40 av dessa små killar, men klipp ett par till för säkerhets skull. När du är färdig med att klippa tråden, ta bort och tina ändarna (Om du har lödningserfarenhet kan du hoppa till nästa stycke), det vill säga när du har tagit bort den lilla plasten, lägg lite löd på ändarna på varje tråd. Värm inte lödet och försök att flytta till tråden, värm med lödkolvet från kopparens botten och lägg lödet ovanpå. Var tålmodig och vänta på att den heta tråden smälter lödet. Det är frestande att tuffa lödkolven mot lödet för att få igång det (Min otålighet och jag vet exakt hur du känner) men lödet fastnar inte lika bra. Gör samma sak för de exponerade kopparspåren i varje ände av bandsektionerna. Om det redan har löd, oroa dig inte för det. För remsan kanske du vill bygga upp en liten hög för att göra det lättare senare. När du arbetar med remsan, gör det snabbt och försök att inte lägga för mycket tid på att applicera värme på remsan. Gör bara det du behöver göra för att smälta lodet på spåret. Löd en tråd på varje spår till slutet av den första remsan (Den första remsan är den med trådarna och kontakten, löd den till den exponerade änden). Om du tittar på remsan ser du små pilar på den som går upp till slutet där du lödde tråden. Ta en annan remsa så att pilarna pekar i motsatt riktning och löd tråden som kommer från GND -spåret till GND -spåret för den andra, +5V till +5V och så vidare. Upprepa detta och se till att pilarna byter riktning efter varje avsnitt så att om du skulle följa dem skulle det sicksacka upp och ner och att det kunde sträckas ut till på en lång remsa i slutet. När alla 14 remsorna har lödts, lägg ut dem och ställ upp dem så att lysdioderna bildar ett rutnät. Håll dem sedan ihop med en metod som kan tas bort senare utan att skada remsan. Jag använde skotstejp. Det är klibbigt nog för att hålla ihop allt men inte så klibbigt att det lämnar en rest. Jag rekommenderar inget permanent, som häftklamrar eller tejp. När allt har tejpats ihop löd en tråd från remsan på botten +5V till den omedelbart bredvid den. Upprepa tills hela botten har kraftkranarna som går hela vägen. Detta är så att skärmen inte dämpas när raden av lysdioder fortskrider.

Steg 4: Lödning av kärnelektroniken

Lödning av kärnelektroniken
Lödning av kärnelektroniken
Lödning av kärnelektroniken
Lödning av kärnelektroniken
Lödning av kärnelektroniken
Lödning av kärnelektroniken

Löd USB B -brytkortet (BOB) till USB B -kontakten. Löd lämpliga ledningar till USB A -kontakten. Jag rekommenderar att du tittar på kontaktdonets uttag som finns på denna webbplats, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Oroa dig inte för var du ska löda de andra ändarna av ledningarna på USB A -kontakten just nu; som kommer att täckas i controller -steget. Klipp datakontakten från remsan, honkontakten, inte hankontakten (honkontakten hämtas från andra änden). Löd de manliga JST -kontakterna i batteriets ändar så att rött blir till rött och svart till svart. Smält värmekrympslang över de exponerade trådarna (gled över före lödning) så att de inte kortas eller använder något annat som eltejp eller varmt lim. Löd några kablar till alla kvinnliga JST -kontakter. Se till att ha en hanände ansluten så att stiften inte skiftar runt. Var försiktig med polariteten och se till att trådarna matchar hankontakterna. Lödkablar till en högspänningskontakten (men det är inte par), igen, se till att alla färger matchar och att de är anslutna för att förhindra att stift skiftas. Löd honkontakten/trådmonteringen så att de är seriekopplade, inte parallella, för att få den förbi tröskelspänningen för effektregulatorn. Så, löd den positiva tråden till den negativa tråden i den andra enheten så nu har vi en osoldad positiv tråd och en negativ osoldad tråd och de två lödda trådarna är lödda till olika kontakter. Ta den negativa tråden och spara den för att lödas till den negativa tråden någon annanstans. Ta nu den positiva tråden och löd den till omkopplaren Om det finns tre eller flera stift (eller mer än ett sätt att vara "på") löd den till mittstiftet. Observera att "mittstiftet" kanske inte fysiskt finns i mitten. Sättet att identifiera det är att hitta stiftet som, när strömbrytaren är på i vilket tillstånd som helst, alltid kommer att anslutas till en annan stift. Om ingen nål är så här har du en mycket speciell switch; Anslut bara den till valfri stift och se till att nästa ledning som löds till omkopplaren kommer att anslutas till den kabeln i minst en på -läge. Löd nu den positiva intagstråden på spänningsregulatorn till omkopplarens motsatta ände, som diskuterats ovan. Löd ut den positiva spänningen till den positiva änden av den okodade högströmskontakten. Ta den negativa intagstråden och löd den till den negativa änden av högströmskontakten. Vi ska nu löda kraften parallellt med Arduino och Power -remsan. Ta nu spänningsregulatorns utgångstrådar och löd två trådar på både de positiva och negativa ändarna så att de kommer ut i en Y -form. Löd en tvåpolig kontakt till de positiva och negativa ledningarna på ledremsanordningen. Det spelar ingen roll vilken typ av kontakt du använder, det kan vara JST eller i mitt fall någon ström/ljudkabel eller något (jag är inte säker, och jag ber om ursäkt för att jag inte har några bilder). Löd en av de positiva strömkablarna till den positiva änden av den motsatta kontakten för ljusremsan och en av de negativa trådarna till den andra stiftet på kontakten. Gör samma sak för en manlig JST -kontakt/trådmontering. Kom alltid ihåg att isolera lödfogarna för att undvika shorts. Nu om vad du ska göra med USB B -kontakten. Löd den positiva tråden till ett 5v -hål på Arduino Pro Mega. Ta jordtråden och löd den till ett GND -hål. Ta D+ och löd den till den digitala stiftet (eller i det här fallet, hål) 40. Löd D- till analog stift 15. Löd dataänden på honkontakten som passar ihop med LED-remsans hankontakt till datastift 6 och jordkabel till en GND -stift. Maskering eller scotch tape fungerar utmärkt för att hålla trådarna mot brädet så att de inte faller ut när det vänds för att lödas. Ta nu en kort knapp och löd en tråd från ena änden till VCC -stiftet (eller någon spänningsutgångsstift) och den andra änden till RESET -stiftet.

Steg 5: Styrenhet

Kontroller
Kontroller
Kontroller
Kontroller
Kontroller
Kontroller

Först är det att välja rätt form att börja med. Allt beror på hur du vill att regulatorn är strukturerad. Jag ville ha mer av en platt kontroller så jag fick en bit av 3 1/2 "x 3/4" planka. ordna delarna på ett sätt som verkar passande och bekvämt att arbeta med. Använd en fransk kurva, kompass, triangel och rak kant för att rita på var alla bitar ska gå. Klipp ut den grundläggande konturen med det valda skärverktyget. En förbudsåg skulle vara bäst men jag använde en hanteringssåg, som fungerade bra. Slipa ner kanterna så att de smidigt övergår, slipa sedan ner hörnen för att göra det mer bekvämt. Borra ut hålet för omkopplaren, slipa, mejsela och/eller dremelera ut någon del på botten som gör att den passar. Försök att inte göra någonting med toppen och bara slipa ut det du behöver för att kunna passa in genom att vrida, fiska eller vad som helst för att få det att gå in. När det väl är i fäst det med plastmuttern och fäst växla. Borra ut området så att potentiometervredet passar igenom och mejsla ut ett område så att det kan sjunka in och passa hela vägen. Borra ut några hål så att en skruv kan hålla i den. Böj in de små bitarna på USB A -kontakten som gör att den allmänna bredden ökar lite (se bilderna). Mejsla ut en del för kontakten och kontrollera successivt att kontakten passar. Superlimma kontakten i kortplatsen. Ta en liten bit plast och skär den till en form som passar över kontakten (titta på bilderna) och häfta sedan fast den i träet. Skär bort bitar som kan komma i vägen. Skruva in potentiometern och fäst vredet. Löd den positiva tråden till en av ändarna på potentiometern (inte den variabla delen) och den negativa tråden till den motsatta änden. Löd D-stiftet till den variabla stiftet på grytan. Löd en tråd från stiftet på grytan med den positiva tråden till en av stiften på knappen. Löd D+ till den andra stiftet på knappen. Trimma reservtråden och isolera bitarna som behövs.

Steg 6: Skjorta

Skjorta
Skjorta
Skjorta
Skjorta
Skjorta
Skjorta

Hitta en bekväm skjorta som släpper igenom ljuset. Jag valde denna grundläggande vita T-shirt. Det spelar ingen roll färg eller stil så länge ljuset kan ses skina inifrån. Men jag rekommenderar inte grafik på framsidan. Lägg upp allt på skjortan för att hjälpa dig att bestämma var du vill ha den och använd ett raderbart markeringsverktyg för att rita den. Jag (det vill säga vissa människor jag känner) har en penna som är avsedd för märkning av tyger som lätt tvättas ut. Mät storleken på batterierna, kontrollfodralet och skärmen och klipp ut pappersbitar som passar. Nål sedan papperet till en bit tyg som inte töjs. En väv fungerar bra för detta. Skär sedan ut rektangeln och lämna ungefär en kvart tum för en söm hela vägen. Använd sedan pappersbiten som en guide för att stryka vikarna i tyget. Nu kan papperet tas bort. På den del av fickan som kommer att vara den övre vik den över sig själv tre gånger. Stryk och stift det för att hålla det på plats. Sy en tyg hela vägen längs mitten av vecket. Ta nu hörnet och vik det så att de osydda kanterna som är vinkelräta mot varandra är parallella och syr ett utseende längs det strykade vecket närmast hörnet (bilderna hjälper verkligen). Gör detta för det andra hörnet också. Om du kanske kommer att ha en vippströmbrytare ur en ficka, sy ett knapphål vid fotens botten där strömbrytaren rör. Sy sedan ett knapphål och skär ut mittdelen. Jag kan inte riktigt ge detaljerade instruktioner eftersom jag hade ett coolt verktyg för att göra knapphål. Se bara till att du gör hålen innan fickan sys på. Ta några nålar och stick dem genom skjortan i hörnen av markeringarna för fickan. Ta fickan och sätt varje hörn vid en nål (på insidan av skjortan), lämna en kvarts tum för sömmen och fäst den på skjortan. Efter att fickan har fästs. ta bort tapparna som inte håller i fickan och sy fast fickan på skjortan. Upprepa för alla fickor. För den stora fickan som håller skärmen lämna ett gap för trådarna längst ner i fickan. För att sätta ett hål i skjortan markerar du platsen och tar ett strykjärn på baksidan (med den blankare delen på tyget) och stryker på det. Gör sedan ett knapphål för ett litet hål (som det jag använde för vippomkopplaren). För ett större hål, markera konturen och använd en sicksacksöm längs linjen (eller kurva eller vad-har du) och klipp ut den mellersta delen. Om du vill kan du använda hängslen för att hålla vikten på fickorna, de två klämmorna håller fast på fickorna på framsidan och den bakre klämman på byxorna. Jag fick också en liten tygärm sydd över de delar av hängseln som kommer att beröra min hud. Två skjortor kan bli lite för varma så jag valde bort och använde den lilla tygärmen.

Steg 7: Programmering

Programmering
Programmering

Och här är koden. Det finns några delar som är välkommenterade men de allra flesta är det inte. Om du har frågor om olika delar kan du antingen ge mig radnumret (med #inkludera som radnummer ett) eller ge mig en kopia av raderna och funktionen där den finns (som loop () eller compMovePaddle ()) och jag kommer att göra mitt bästa för att förklara det för dig och sedan lägga till en kommentar till koden som förklarar det. #include #define PIN 6 // säger vilka är inmatningsnålarna för spelet int buttonPin = 40; // dikterar poängen, lagras i en bianary -matris eftersom det är esier int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // dikterar bollens riktning int bvd = 0; // 0 är nere, 1 är upp int bhd = 0; // 0 är höger, 1 är vänster // dikterar bollarnas position int bvp = 8; int bhp = 6; // kontrollerar om bollen är i snabbt läge booleskt snabbt = falskt; // kontrollerar om det är en poäng. booleskt cIsPoint = false; booleskt pIsPoint = falskt; // paddelpositioner int cPaddle = 0; int pPaddle = 0; long previousMillis = 0; long previousMillisForComp = 0; // ställ in fördröjningstider för snabb och långsamt rörlig boll, "Int" i normInt och fastInt är för intervall int normInt = 50; int fastInt = 10; // används för att kolla efter en vinst. 1 är spelarens vinst, -1 i datorvinst och 0 är ingenting som har hänt ännu int win = 0; // för att bli av med en bugg. används i addOne -uttalandet och ingen annanstans. int som = 0; // Det som visas före start, -1 är 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}; // om du vinner 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}; // om du förlorar int du förlorar = {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}; // sätter upp ledremsan Adafruit_NeoPixel strip = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // ställer in, vrider ingen stift 40 för inmatning, börjar remsan, visar // -meddelandet och visar det. void setup () {pinMode (buttonPin, INPUT); strip.begin (); för (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); fördröjning (5000); medan (digitalRead (buttonPin) == LOW) {// Det är en fälla! (tills knappen trycks ned.)}} void loop () {clearScreen (); // ritar paddlarna för att visa poängen för (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } annars if ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } if (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } annars if ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0)); }}} // drar bollen i startpositionen strip.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // avgör om bollen går upp eller ner medan (pIsPoint == false && cIsPoint == false) {clearScreen (); osignerad lång strömMillis = millis (); // tilldelar spelarens paddelposition pPaddle = checkPaddlePos (); // kontrollerar nästa position checkNext (); // flytta bollen om (fast == false) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} annars if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }}} // dra bollen om (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, strip. Color (255, 255, 255)); } annat om (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // dator paddelrörelse compMovePaddle (); // draw's the paddles drawPaddles (); // lägger faktiskt upp allt.strip.show (); // kontrollera om en poäng har gjorts om (pIsPoint == true) {which = 0; bhd = 0; Lägg till ett(); ha sönder; } annars if (cIsPoint == true) {which = 1; bhd = 1; Lägg till ett(); ha sönder; }} if (win == 1) {clearScreen (); för (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } fördröjning (5000); för (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } vinna = 0; } annars if (win == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } fördröjning (5000); för (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } vinna = 0; } pIsPoint = falskt; cIsPoint = falskt; bvp = 8; bhp = 6; bvd = random (0, 2); // 0 är nere, 1 är upp snabbt = false; } // AI för spelet void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = currentMillis; if (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } annat if (bvp = 0 && cPaddle <10) {cPaddle ++; } annars if (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } annat if (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}}} // flyttar bollen tomrummet moveBall () {if (bhd == 0) {bhp--; } annars om (bhd == 1) {bhp ++; } if (bvd == 0) {bvp--; } annat if (bvd == 1) {bvp ++; }}} // lägger till en i matrisen. Om vilken är 0, ökar det spelarens poäng. Om det är 1 lägger det till datorerna void addOne () {if (vilket == 0) {// om det är spelarens poäng // Lägg till en. Detta är det enklaste sättet jag vet hur. för (int i = 0; i <5; i ++) {// loop om (playerScore == 0) {// om det värdet är ett noll playerScore = 1; // gör det till 1 paus; // gå sedan bort} else {// om det är 1 playerScore = 0; // gör det till noll och loop}}} annars if (vilket == 1) {för (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; ha sönder; } annat {compScore = 0; }}}} // Kontrollerar om någon vann. if (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {win = -1; } annat om (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }}} // kontrollerar bollarna nästa position void checkNext () {// checkar för att se om en poäng har gjorts om (bhp == 13) {pIsPoint = true; } annars om (bhp == 0) {cIsPoint = true; } // om en poäng har gjorts än hoppa över resten av dessa saker om (pIsPoint == false || cIsPoint == false) {// kontrollerar bollen vertikalt om (bvp+bvd == 15) {bvd = 0; } annars if (bvp+bvd == 0) {bvd = 1; } // kontrollerar bollen horisontellt om (bhp+bhd == 13) {// först på datasidan om (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } annars om (bhd == 0) {bhd = 1; } snabb = falsk; } annat if (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } annat om (bvd == 1) {bvd = 0; } bhd = 1; } annat om (bvp == 0 || bvp == 14) {bhd = 1; } snabb = falsk; }} annat om (bhp+bhd == 1) {// sedan på spelarsidan om (bvp> = pPaddle && bvp <= pPaddle+4) {// slår det paddeln på en normal plats? //studsa bollen! om (bhd == 1) {bhd = 0; } annars om (bhd == 0) {bhd = 1; }} annat om (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// är det att träffa paddeln i hörnet om (bvp! = 0 && bvp! = 14) {// är det inte högt eller lågt? //Studsa bollen! om (bvd == 0) {bvd = 1; } annat om (bvd == 1) {bvd = 0; } bhd = 1; snabbt = sant; } annars om (bvp == 0 || bvp == 14) {// är det högt eller lågt? //studsa bollen! bhd = 0; fast = true; // ställ in värdet för att senare få bollen att röra sig snabbt}}}}} int checkPaddlePos () {// läser potten och bestämmer paddelpositionen i enlighet med om (analogRead (A15) <93) {return 0; } annars if (analogRead (A15) <186) {return 1; } annars if (analogRead (A15) <279) {return 2; } annars if (analogRead (A15) <372) {return 3; } annars if (analogRead (A15) <465) {return 4; } annars if (analogRead (A15) <558) {return 5; } annars if (analogRead (A15) <652) {return 6; } annars if (analogRead (A15) <745) {return 7; } annars if (analogRead (A15) <837) {return 8; } annars if (analogRead (A15) <= 931) {return 9; } annars if (analogRead (A15) <= 2014) {return 10; }} void drawPaddles () {// draw's paddlarna på rätt plats och visar poängen på paddeln för (int i = 0; i <5; i ++) {if (playerScore == 1) {remsa. setPixelColor (pPaddle+i, strip. Color (255, 255, 255)); } annars 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)); } annars if ((compScore == 0)) {strip.setPixelColor (199+cPaddle-i, strip. Color (0, 255, 0)); }}} void clearScreen () {för (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0)); } strip.show (); }

Steg 8: Färdig produkt

Färdig produkt
Färdig produkt
Färdig produkt
Färdig produkt

Och där är den färdiga tröjan!

Rekommenderad: