Turinys:
- 1 žingsnis: medžiagos ir įrankiai
- 2 žingsnis: supjaustykite šviesos diodų juostą į mažesnes juosteles
- 3 žingsnis: ekrano litavimas kartu
- 4 žingsnis: pagrindinės elektronikos litavimas
- 5 žingsnis: valdiklis
- 6 žingsnis: marškinėliai
- 7 žingsnis: programavimas
- 8 žingsnis: paruoštas produktas
Video: Lankstus pongo ekranas ant marškinėlių: 8 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Tai mano 2013 metų Helovino kostiumas. Jis buvo kuriamas maždaug metus ir jo sukūrimas užtruko kelias valandas. Ekranas yra 14 x 15 pikselių, taigi, gana maža raiška, tačiau jis vis tiek gali padaryti įdomių dalykų. Jis yra fiziškai lankstus visomis kryptimis, nors jo negalima sulankstyti nepažeidžiant. Jame yra valdiklis, kurį sudaro vienas mygtukas ir slankiklis, prijungtas prie „pro mega“per USB. Kad jis ilgą laiką išliktų gyvas, jame naudojamos dvi monstriškos 2200 mAh baterijos, sujungtos nuosekliai, kad būtų gauta reikiama įtampa, o po to - 5 voltų reguliatorius, kad būtų galima naudoti. Visa elektronika dedama į kišenes, esančias marškinių vidinėje pusėje, kad jas būtų galima nuimti ir marškinius galima skalbti. Jis žaidžia funkcinį pongo žaidimą. Pirmiausia ją puošia žodžiai „PONG PLAY“gražiomis mėlynomis raidėmis, naudojant pakeistą „Tom Thumb“šrifto versiją (galima rasti adresu https://robey.lag.net/2010/01/23/tiny-monospace-font).html). Po penkių sekundžių galima pasirinkti paspausti mygtuką, jei norite judėti toliau, arba nespausti mygtuko ir palikti visiškai gerą patirtį. Pasirinkus paspausti mygtuką, žaidimas prasideda. Raudona irklentė dešinėje yra kompiuterio irklentė, o žalia - dešinėje - žaidėjo irklentė, kurią valdo slankiklis, kad judėtų aukštyn ir žemyn. Kamuolys atšoka, kai kiekviena pusė bando pelnyti tašką. Žaidėjas gali pataikyti į kamuoliuką savo irklo kraštu, kad jį pagreitintų (gera savybė), o kompiuteris to padaryti negali, o užstringa ir juda šiek tiek lėčiau nei kamuolys. Kai pelnomas taškas, taškų taškai pasikeičia į baltą. Jis skaičiuojamas dvejetainiu būdu iš apačios. kur žalia arba raudona yra nulis, o balta - 1. 21 yra taškas, kurį reikia laimėti (arba pralaimėti, priklausomai nuo to, kas pelnė 21 tašką), taigi, kai žaidėjo irklas rodo 10101, rodomas tekstas „JŪS LAIMĖTE“. Dar kartą pakeistame Tom Thumb. Tas pats atsitinka, bet vietoj to rodomas užrašas „YOU LOSE“. Po pergalės ar pralaimėjimo žaidimas vėl pradės veikti iš karto po „Pong Play“. Norėdami visiškai iš naujo paleisti „Magic Box“, dar žinomo kaip „dėžutė su visa elektronika, išskyrus ekraną“, paleidimo iš naujo mygtuką.
1 žingsnis: medžiagos ir įrankiai
Daiktai, pažymėti *, yra neprivalomi, tačiau rekomenduojami Ir taip jokia ypatinga tvarka … Medžiagos: 4 jardai „Adafruit Neopixle“60 pikselių per metrą 1 marškinėliai * 1 poros petnešų 1/2 kiemo audinio bus daugiau nei pakankamai (Ne pirmenybė teikiama elastingam pynimui) 6 pėdų USB A patelė-USB B patelė 1 USB A jungtis 3 2 kontaktų JST jungtys 4 2 kontaktų JST laidai akumuliatoriaus įkroviklis 2 6600 mAh baterijos 1 Arkadinis stiliaus mygtukas 1 arduino pro-mega 1 FTDI antraštė 1 USB B moterų jungtis su pertraukimo plokšte 1 įjungimo/išjungimo jungiklis (perjungiklis) 1 atstatymo jungiklis (perjungimas arba momentinis) šiek tiek plastiko, lydmetalis, viela, sriegis, karšti klijai, tam tikras elastingas laikas (galbūt šiek tiek daugiau nei „šiek tiek“), atkaklumas (greičiausiai jums to prireiks šiek tiek), termiškai susitraukiantys vamzdžiai ar elektros juosta šiek tiek super klijų geležies ant pagrindo Įrankiai *Pagalbinės rankos Normali ranka s (arba kas nors, kas turi prieigą prie jų) Lituoklis *Karšto klijų pistoletas „Dremel“arba švitrinio popieriaus kaltuko vielos nuėmikliai Vielos pjaustytuvai Susegimo pistoletas Sraigtinis pjūklo kaiščiai Siuvimo mašinos audinio žirklės
2 žingsnis: supjaustykite šviesos diodų juostą į mažesnes juosteles
Naudokite pageidaujamą pjovimo įrankį ir supjaustykite juostelę į 14 segmentų, kurių kiekvienas yra 15 pikselių. Pjaukite tik tarp vario pėdsakų, pažymėtų kaip „DO“, „DIN“„+5V“ir „GND“. Jei jis jau yra prilituotas virš vario, jis tiesiog perpjautas. Stenkitės neįpjauti per daug į atvirą varį, bet jei jį šiek tiek nulaužėte, tai yra puiku. Kai visos 14 juostelių bus nupjautos, nupjaukite po truputį gumos iš kiekvieno galo, kad ji neliktų juostų litavimo būdu.
3 žingsnis: ekrano litavimas kartu
Paimkite vielą ir supjaustykite ją į maždaug 3,5 colio (9 cm) segmentus. Mano atveju aš turiu tris skirtingas spalvas, kad būtų lengviau išlaikyti tiesumą lituojant, tačiau viena spalva puikiai tiktų. Jums reikės apie 40 šių mažų vaikinų, tačiau kiekvienam atvejui supjaustykite dar porą. Kai baigsite pjaustyti vielą, nuimkite ir skardinkite galus (jei turite litavimo patirties, galite pereiti prie kitos pastraipos), o tai reiškia, kad pašalinus šiek tiek plastiko, ant kiekvienos vielos galų uždėkite šiek tiek litavimo. Nešildykite lydmetalio ir bandykite pereiti prie vielos, kaitinkite su lituokliu iš vario apačios ir uždėkite lydmetalį ant viršaus. Būkite kantrūs ir palaukite, kol karšta viela ištirps lydmetalį. Yra viliojanti lituoklį pritvirtinti prie lydmetalio, kad jį pradėtumėte (mano nekantrumas ir aš tiksliai žinau, kaip jaučiatės), tačiau lydmetalis taip pat nesulips. Tą patį padarykite su vario pėdsakais kiekviename juostos sekcijos gale. Jei jis jau turi lydmetalį, nesijaudinkite. Dėl juostos galbūt norėsite pastatyti šiek tiek piliakalnio, kad vėliau būtų lengviau. Dirbdami su juostele, darykite tai greitai ir stenkitės nepraleisti daug laiko kaitindami juostelę. Darykite tik tai, ką turite padaryti, kad lydmetalis ištirptų ant pėdsakų. Lituokite vielą ant kiekvieno pėdsako iki pirmosios juostelės galo (pirmoji juostelė, kurioje yra laidai ir jungtis, lituokite iki atviro galo). Jei pažvelgsite į juostelę, ant jos pamatysite mažas rodykles, einančias iki galo, kur litavote laidą. Paimkite kitą juostelę, kad rodyklės būtų nukreiptos priešinga kryptimi, ir lituokite laidą, einantį iš GND pėdsako į kito GND pėdsaką, +5 V iki +5 V ir pan. Pakartokite tai, įsitikindami, kad rodyklės po kiekvienos sekcijos keičia kryptis, kad jei jų laikytumėtės, jis judėtų zigzago aukštyn ir žemyn, o galų gale jis būtų ištemptas. Lituodami visas 14 juostelių, išdėliokite jas ir sulygiuokite taip, kad šviesos diodas sudarytų tinklelį. Tada laikykite juos kartu naudodami metodą, kurį vėliau galima pašalinti nepažeidžiant juostelės. Naudojau lipnią juostelę. Jis pakankamai lipnus, kad viską laikytų kartu, bet nėra toks lipnus, kad liktų nuosėdų. Nerekomenduoju nieko nuolatiniam, pavyzdžiui, kabės ar lipnios juostos. Kai viskas bus suklijuota, lituokite laidą nuo juostelės apačioje +5 V iki tos, kuri yra šalia jos. Pakartokite, kol visas dugnas bus visiškai išjungtas. Taip yra todėl, kad ekranas netamsėja, kai progresuoja šviesos diodų linija.
4 žingsnis: pagrindinės elektronikos litavimas
Lituokite USB B pertraukos plokštę (BOB) prie USB B jungties. Lituokite atitinkamus laidus prie USB A jungties. Patariu pažvelgti į jungties kištuką, esantį šioje svetainėje, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Nesijaudinkite, kur lituoti kitus USB A jungties laidų galus; kuris bus aprašytas valdiklio žingsnyje. Iškirpkite duomenų jungtį iš juostelės, moteriškos jungties, o ne vyriškosios jungties (moteriškoji jungtis paimta iš kito galo). Lituokite išorines JST jungtis prie akumuliatoriaus galų, kad raudona spalva taptų raudona, o juoda - juoda. Išlydykite termiškai susitraukiančius vamzdelius ant atvirų laidų (prieš litavimą perbraukite), kad jie netrumpėtų ir nenaudotų kažko kito, pavyzdžiui, elektros juostos ar karštų klijų. Lituokite kai kuriuos laidus prie visų moterų JST jungčių. Įsitikinkite, kad kištukinis galas yra prijungtas, kad kaiščiai nesikeistų. Būkite atsargūs dėl poliškumo ir įsitikinkite, kad laidai sutampa su kištukinėmis jungtimis. Lituokite laidus prie aukštos įtampos jungties (bet ne jos poros) dar kartą, įsitikindami, kad visos spalvos sutampa ir yra sujungtos, kad būtų išvengta kaiščių pasislinkimo. Lituokite tik kištukinę jungtį/laidą, kad jie būtų prijungti nuosekliai, o ne lygiagrečiai, kad jis viršytų galios reguliatoriaus slenkstinę įtampą. Taigi, lituokite teigiamą laidą prie neigiamo kito mazgo laido, todėl dabar turime vieną neužlydytą teigiamą laidą ir vieną neigiamą nesulituotą laidą, o du lituoti laidai yra lituojami prie skirtingų jungčių. Paimkite neigiamą laidą ir išsaugokite, kad jis būtų lituojamas prie neigiamo laido kitur. Dabar paimkite teigiamą laidą ir prilituokite prie jungiklio Jei yra trys ar daugiau kaiščių (arba daugiau nei vienas būdas „įjungti“), lituokite jį prie vidurinio kaiščio. Atminkite, kad „vidurinis kaištis“fiziškai gali būti ne viduryje. Būdas jį identifikuoti yra rasti kaištį, kuris, kai jungiklis įjungtas bet kurioje būsenoje, visada bus prijungtas prie kito kaiščio. Jei nėra tokio kaiščio, turite labai specialų jungiklį; tiesiog prijunkite jį prie bet kurio kaiščio ir įsitikinkite, kad kitas prie jungiklio prilituotas laidas bus prijungtas prie to laido bent vienoje būsenoje. Dabar lituokite teigiamą įsiurbimo laidą ant įtampos reguliatoriaus į priešingą jungiklio galą, kaip aptarta aukščiau. Lituokite postinę įtampą iki teigiamo nesulituoto didelės srovės jungties galo. Paimkite neigiamą įsiurbimo laidą ir prilituokite prie neigiamo didelės srovės jungties galo. Dabar ketiname lituoti energiją lygiagrečiai „Arduino“ir „Power“juostelėms. Dabar paimkite įtampos reguliatoriaus išvesties laidus ir lituokite du vielos gabalus tiek teigiamame, tiek neigiamame gale, kad jie būtų Y formos. Lituokite dviejų kaiščių jungtį prie teigiamo ir neigiamo LED juostos mazgo laidų. Nesvarbu, kokio tipo jungtį naudojate, tai gali būti JST arba mano atveju koks nors maitinimo/garso kabelis ar kažkas (nesu tikras ir atsiprašau, kad neturiu nuotraukų). Lituokite vieną iš teigiamos galios laidų prie teigiamo šviesos juostos priešingos jungties galo, o vieną neigiamą laidą - prie kito jungties kaiščio. Atlikite tą patį, bet su JST jungtimi/viela. Visą laiką nepamirškite izoliuoti litavimo siūlių, kad išvengtumėte šortų. Dabar apie tai, ką daryti su USB B jungtimi. Lituokite teigiamą laidą prie 5 V angos „Arduino Pro Mega“. Paimkite įžeminimo laidą ir prilituokite prie GND skylės. Paimkite D+ ir prilituokite prie skaitmeninio kaiščio (arba šiuo atveju skylės) 40. Lituoklis D- į analoginį kaištį 15. Lituokite jungties, esančios prie LED juostelės kištuko, duomenų galą prie 6 kaiščio ir įžeminimo laidas prie GND kaiščio. Maskavimo arba lipni juosta puikiai tinka laikyti laidus prie plokštės, kad jie nenukristų, kai ji apverčiama, kad būtų lituota. Dabar paimkite momentinį mygtuką ir lituokite laidą nuo vieno galo iki VCC kaiščio (arba bet kurio įtampos išvesties kaiščio), o kitą galą - į RESET kaištį.
5 žingsnis: valdiklis
Pirmiausia reikia pasirinkti tinkamą formą, nuo kurios pradėti. Viskas priklauso nuo to, kaip norite sukurti valdiklį. Norėjau daugiau plokščio valdiklio, todėl gavau 3 1/2 "3/4" lentos gabalėlį. sudėkite dalis taip, kad atrodytų tinkama ir patogu dirbti. Naudokite prancūzišką kreivę, kompasą, trikampį ir tiesų kraštą, kad nubrėžtumėte, kur turėtų būti visi gabalai. Iškirpkite pagrindinį kontūrą naudodami pasirinktą pjovimo įrankį. Geriausias būtų draudžiamasis pjūklas, bet aš naudoju susidorojimo pjūklą, kuris puikiai veikė. Šlifuokite kraštus, kad jie sklandžiai pereitų, tada šlifuokite kampus, kad būtų patogiau. Išgręžkite jungiklio skylę, tada nušlifuokite, nuspauskite ir (arba) ištraukite bet kokią apačioje esančią dalį, kad ji būtų tinkama. Stenkitės nieko nedaryti su viršumi ir tik šlifuokite tai, ko jums reikia, kad galėtumėte jį sutalpinti sukdami, meškeriodami ar bet kokiu kitu būdu, kad jis patektų. Kai jis bus pritvirtintas, pritvirtinkite jį plastikine veržle ir pritvirtinkite jungiklis. Išgręžkite potenciometro rankenėlės sritį ir iškirpkite ją, kad ji galėtų nuskęsti ir tilptų iki galo. Išgręžkite keletą skylių, kad varžtas galėtų jį prilaikyti. Sulenkite mažus USB A jungties gabalus, dėl kurių jos bendras plotis šiek tiek padidėja (žiūrėkite paveikslėlius). Skaldykite jungties dalį, palaipsniui tikrindami, ar jungtis tinka. Super priklijuokite jungtį į jos angą. Paimkite nedidelį plastiko gabalėlį ir supjaustykite jį į formą, kuri tilptų per jungtį (žiūrėkite paveikslėlius), tada susegkite ją prie medžio. Nupjaukite visus gabalus, kurie gali trukdyti. Įsukite potenciometrą ir pritvirtinkite rankenėlę. Lituokite teigiamą laidą prie vieno iš potenciometro galų (ne kintamos dalies), o neigiamą laidą - į priešingą galą. Lituokite D kaištį prie kintamo kaiščio ant puodo. Lituokite laidą nuo kaiščio ant puodo su teigiama viela prie vieno iš mygtuko kaiščių. Lituokite D+ prie kito mygtuko kaiščio. Nupjaukite atsarginį laidą ir izoliuokite dalis, kurioms to reikia.
6 žingsnis: marškinėliai
Raskite patogius marškinius, kurie praleis šviesą. Aš pasirinkau šiuos paprastus baltus marškinėlius. Nesvarbu spalva ar stilius, kol šviesa gali sklisti pro vidų. Tačiau aš nerekomenduoju grafikos priekyje. Išdėstykite viską ant marškinių, kad padėtumėte nuspręsti, kur to norite, ir piešdami naudokite ištrinamą žymėjimo įrankį. Aš (turiu omenyje kai kuriuos pažįstamus žmones) turiu pieštuką, skirtą audiniams žymėti, kuris lengvai nuplaunamas. Išmatuokite baterijų, valdiklio dėklo ir ekrano dydį ir iškirpkite atitinkamus popieriaus lapus. Tada pritvirtinkite popierių prie netempiamo audinio gabalo. Tam puikiai tinka pynimas. Tada iškirpkite stačiakampį, palikdami maždaug ketvirtadalį colio, kad siūlė būtų iki galo. Tada, naudodami popieriaus lapą, nukreipkite raukšles į audinį. Dabar popierių galima pašalinti. Ant kišenės dalies, kuri bus viršutinė dalis, tris kartus perlenkite ją ant savęs. Lyginkite ir smeigkite, kad jis liktų vietoje. Siuvinėkite siuvinėjimą iki galo raukšlės viduryje. Dabar paimkite kampą ir sulenkite jį taip, kad nesusiūti kraštai, statmeni vienas kitam, būtų lygiagrečiai ir prisiūkite išilgai išlygintos raukšlės arčiausiai kampo (Paveikslėliai tikrai padeda). Padarykite tai ir kitame kampe. Jei greičiausiai iš kišenės išeis perjungimo jungiklis, kišenės apačioje, kurioje jungiklis liečiasi, prisiūkite sagos skylę. Tada siūkite sagos skylę ir iškirpkite vidurinę dalį. Iš tikrųjų negaliu duoti išsamių nurodymų, nes turėjau šaunų įrankį sagų skylėms padaryti. Tik įsitikinkite, kad padarėte skyles prieš siuvant kišenę. Paimkite keletą smeigtukų ir perbraukite juos per marškinius kišenės žymėjimo kampuose. Paimkite kišenę ir padėkite kiekvieną kampą prie smeigtuko (marškinių vidinėje pusėje), palikdami ketvirtadalį colio siūlei, ir prisegkite jį prie marškinių. Po to, kai kišenė buvo prisegta. ištraukite smeigtukus, nelaikančius kišenės, ir prisiūkite kišenę prie marškinių. Pakartokite tai visoms kišenėms. Didelėje kišenėje, laikančioje ekraną, kišenės apačioje palikite tarpą laidams. Norėdami įdėti skylę į marškinius, pažymėkite tą vietą ir paimkite lygintuvą ant pagrindo (su blizgesne dalimi ant audinio) ir lyginkite. Tada padarykite mažą skylę (pvz., Tai, ką naudojau perjungimo jungikliui). Jei norite didesnės skylės, pažymėkite kontūrą ir naudokite zigzago dygsnį išilgai linijos (arba kreivės ar to, ką turite) ir iškirpkite vidurinę dalį. Jei norite, galite naudoti petnešas, kad išlaikytumėte kišenių svorį, du spaustukai laikosi už kišenių priekyje, o galinė - ant kelnių. Aš taip pat gavau nedidelę audinio rankovę, pasiūtą ant petnešų dalių, kurios palies mano odą. Du marškiniai gali šiek tiek įkaisti, todėl aš atsisakiau ir naudojau mažą audinio rankovę.
7 žingsnis: programavimas
Ir čia yra kodas. Yra keletas dalių, kurios yra gerai komentuojamos, tačiau didžioji dauguma - ne. Jei turite klausimų apie skirtingas dalis, galite man duoti eilutės numerį (#eilutė numeris vienas) arba pateikti eilutės (-ių) kopiją ir funkciją, kurioje ji yra (pvz., Kilpa () arba compMovePaddle ()) ir aš padarysiu viską, kad tai jums paaiškintų, tada pridėkite komentarą prie kodo, paaiškinančio tai. #include #define PIN 6 // sako, kurie yra žaidimo įvesties kaiščiai int mygtukasPin = 40; // diktuoja rezultatą, saugomą dvinariame masyve, nes jis yra esamas int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // diktuoja rutulio kryptį int bvd = 0; // 0 žemyn, 1 aukštyn int bhd = 0; // 0 yra dešinėje, 1 kairėje // diktuoja rutulių padėtį int bvp = 8; int bhp = 6; // tikrina, ar kamuolys yra greitojo režimo boolean fast = false; // tikrina, ar tai balas. boolean cIsPoint = klaidinga; loginis pIsPoint = klaidingas; // irklenčių pozicijos int cPaddle = 0; int pPaddle = 0; senas ankstesnisMillis = 0; senas ankstesnisMillisForComp = 0; // nustatyti uždelsimo laiką greitam ir lėtai judančiam rutuliui "Int" normalInt ir fastInt yra intervalas int normInt = 50; int fastInt = 10; // naudojamas laimėjimui patikrinti. 1 yra žaidėjo laimėjimas, -1 -kompiuterio laimėjimas, o 0 -dar nieko neįvyko. // atsikratyti klaidos. naudojamas „addOne“teiginyje ir niekur kitur. int kuris = 0; // Dalykas, rodomas prieš pradedant, -1 yra pabėgimas 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}; // jei laimėsite savo viduje, 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}; // jei pralaimėsite, 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}; // nustato LED juostą Adafruit_NeoPixel strip = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // nustatymas, nesuka 40 įvesties kaiščio, pradeda juostą, rodo // pranešimą ir rodo. void setup () {pinMode (buttonPin, INPUT); strip.begin (); for (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); vėlavimas (5000); while (digitalRead (buttonPin) == LOW) {// Tai spąstai! (kol nepaspaudžiamas mygtukas.)}} void loop () {clearScreen (); // piešia irklentes, kad būtų parodytas rezultatas (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } else if ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } if (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } else if ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0)); }} // piešia kamuolį į pradinę padėtį strip.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // nusprendžia, ar kamuolys kyla aukštyn ar žemyn, kol (pIsPoint == false && cIsPoint == false) {clearScreen (); nepasirašyta ilga srovėMillis = milis (); // priskiria žaidėjo irklo padėtį pPaddle = checkPaddlePos (); // tikrina kitą poziciją checkNext (); // kamuoliuko perkėlimas, jei (greitas == klaidingas) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; „moveBall“(); }} else if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; „moveBall“(); }} // piešti kamuolį, jei (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, strip. Color (255, 255, 255)); } else if (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // kompiuterio irklentės judėjimas compMovePaddle (); // draw's irklai drawPaddles (); // iš tikrųjų viską sudėti.strip.show (); // tikrinimas, ar taškas buvo surinktas, jei (pIsPoint == true) {kuris = 0; bhd = 0; addOne (); pertrauka; } else if (cIsPoint == true) {kuris = 1; bhd = 1; addOne (); pertrauka; }} if (win == 1) {clearScreen (); for (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } uždelsimas (5000); (int i = 0; i <5; i ++) {playerScore = 0; „compScore“ = 0; } laimėti = 0; } else if (win == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } uždelsimas (5000); (int i = 0; i <5; i ++) {playerScore = 0; „compScore“ = 0; } laimėti = 0; } pIsPoint = klaidinga; cIsPoint = klaidinga; bvp = 8; AG = 6; bvd = atsitiktinis (0, 2); // 0 žemyn, 1 greitai aukštyn = klaidinga; } // Žaidimo AI void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = dabartinisMillis; if (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } else if (bvp = 0 && cPaddle <10) {cPaddle ++; } else if (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } else if (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // perkelia rutulį void moveBall () {if (bhd == 0) {bhp--; } else if (bhd == 1) {bhp ++; } jei (bvd == 0) {bvp--; } else if (bvd == 1) {bvp ++; }} // prideda vieną prie masyvo. Jei kuri iš jų yra 0, tai padidina žaidėjo rezultatą. Jei jis yra 1, tai prie kompiuterių prideda void addOne () {if (kuris == 0) {// jei tai žaidėjo rezultatas // Pridėti vieną. Tai yra paprasčiausias būdas, kurį aš žinau. for (int i = 0; i <5; i ++) {// kilpa if (playerScore == 0) {// jei ta reikšmė yra nulis playerScore = 1; // padaryti 1 pertrauką; // tada išeik} kitas {// jei tai 1 žaidėjas Rezultatas = 0; // padaryk jį nuliu ir ciklas}}} else if (kuris == 1) {for (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; pertrauka; } else {compScore = 0; }}} // Patikrina, ar kas nors laimėjo. jei (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {win = -1; } kitaip, jei (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }} // tikrina kamuoliukus kitoje pozicijoje void checkNext () {// patikrina, ar buvo surinktas taškas, jei (bhp == 13) {pIsPoint = true; } else if (bhp == 0) {cIsPoint = true; } // jei buvo surinktas taškas, praleiskite likusią dalį, jei (pIsPoint == false || cIsPoint == false) {// tikrina kamuolį vertikaliai, jei (bvp+bvd == 15) {bvd = 0; } else if (bvp+bvd == 0) {bvd = 1; } // tikrina rutulį horizontaliai, jei (bhp+bhd == 13) {// pirmiausia kompiuterio pusėje, jei (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } kitaip, jei (bhd == 0) {bhd = 1; } greitas = klaidingas; } else if (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; } kitaip jei (bvp == 0 || bvp == 14) {bhd = 1; } greitas = klaidingas; }} else if (bhp+bhd == 1) {// tada žaidėjo pusėje, jei (bvp> = pPaddle && bvp <= pPaddle+4) {// ar jis pataiko į irklą įprastoje vietoje? // atmušti kamuolį! jei (bhd == 1) {bhd = 0; } kitaip, jei (bhd == 0) {bhd = 1; }} else if (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// ar jis pataiko į kamputį, jei (bvp! = 0 && bvp! = 14) {// tai ne aukštai ar žemai? // Atmušk kamuolį! jei (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; greitas = tiesa; } kitaip, jei (bvp == 0 || bvp == 14) {// ar jis aukštas, ar žemas? // atmušti kamuolį! bhd = 0; greitas = tiesa; // nustatykite vertę, kad vėliau kamuolys greitai judėtų}}}}} int checkPaddlePos () {// skaito puodą ir pagal tai nusprendžia dėl irklo padėties, jei (analogRead (A15) <93) {return 0; } else if (analogRead (A15) <186) {return 1; } else if (analogRead (A15) <279) {return 2; } else if (analogRead (A15) <372) {return 3; } else if (analogRead (A15) <465) {return 4; } else if (analogRead (A15) <558) {return 5; } else if (analogRead (A15) <652) {return 6; } else if (analogRead (A15) <745) {return 7; } else if (analogRead (A15) <837) {return 8; } else if (analogRead (A15) <= 931) {return 9; } else if (analogRead (A15) <= 2014) {return 10; }} void drawPaddles () {// „draw“irklentės yra tinkamoje vietoje ir ant mentele rodomas rezultatas (int i = 0; i <5; i ++) {if (playerScore == 1) {strip. setPixelColor (pPaddle+i, strip. Color (255, 255, 255)); } else 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)); } else if ((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 (); }
8 žingsnis: paruoštas produktas
Ir štai, baigti marškiniai!
Rekomenduojamas:
FLEXBALL - šimto pikselių lankstus PCB kamuolys su „WiFi“: 6 žingsniai (su nuotraukomis)
FLEXBALL - šimtų pikselių lankstus PCB kamuolys su „WiFi“: Sveiki kūrėjai, tai gamintojas moekoe! „Flexball“yra pagrįstas lanksčia PCB, kurioje yra 100 WS2812 2020 adresuojamų šviesos diodų. Jį valdo ESP8285-01f - mažiausias ESP pagrįstas „Espressif“modulis. Be to, jis turi ADXL345 akselerometrą
Žaisk Simono žaidimą ant savo marškinėlių: 5 žingsniai
Žaisk Simono žaidimą ant savo marškinėlių: Ar visada norėjai žaisti Simono žaidimą ant savo marškinių? Aš taip pat! Šioje pamokoje aš jums parodysiu, kaip sukurti „Simon“žaidimo versiją, kurią galite žaisti paliesdami marškinius, naudodami „Makey Makey“
Lankstus letena: 24 žingsniai (su nuotraukomis)
„Flex Claw“: šis nurodymas buvo sukurtas vykdant Pietų Floridos universiteto (www.makecourse.com) „Makecourse“projekto reikalavimą. „Flex Claw“yra kitas geriausias projektas visiems studentams, inžinieriams ir meistrams, kurie tikrai bus g
Lankstus nešiojamas kompiuteris: 5 žingsniai (su nuotraukomis)
Lankstus nešiojamasis kompiuteris: tai buvo greitas mažas projektas, kurį padariau, kad išlaikyčiau savo dizaino ir prototipų kūrimo įgūdžius aštrius ir pasidalyčiau tuo, kas nėra taikoma NDA arba kai kam nors suteikiama licencija. Pateikiu jį iššūkiui „Pro tips“ir tai tikrai vadovas
Lankstus audinio slėgio jutiklis: 4 žingsniai (su nuotraukomis)
Lankstus audinio slėgio jutiklis: kaip padaryti lankstų audinio slėgio jutiklį iš 3 laidžių audinių sluoksnių. Ši instrukcija yra šiek tiek pasenusi. Peržiūrėkite toliau pateiktas patobulintų versijų instrukcijas: > > https://www.instructables.com/id/Conductive-Thread-Pre