Satura rādītājs:

Pongs, elastīgs ekrāns kreklā: 8 soļi (ar attēliem)
Pongs, elastīgs ekrāns kreklā: 8 soļi (ar attēliem)

Video: Pongs, elastīgs ekrāns kreklā: 8 soļi (ar attēliem)

Video: Pongs, elastīgs ekrāns kreklā: 8 soļi (ar attēliem)
Video: Лагуна 52 – 2000 морских миль, от Амстердама до Средиземного моря, бывший Большой круг. 2024, Novembris
Anonim
Pongs, elastīgs ekrāns kreklā
Pongs, elastīgs ekrāns kreklā
Pongs, elastīgs ekrāns kreklā
Pongs, elastīgs ekrāns kreklā
Pongs, elastīgs ekrāns kreklā
Pongs, elastīgs ekrāns kreklā

Šis ir mans Helovīna kostīms 2013. gadam. Tas tiek strādāts apmēram gadu, un tā izveide ir prasījusi diezgan daudz stundu. Ekrāns ir 14 x 15 pikseļi, tātad diezgan zema izšķirtspēja, taču tas joprojām var darīt dažas jautras lietas. Tas ir fiziski elastīgs visos virzienos, lai gan to nevar salocīt bez bojājumiem. Tam ir kontrolieris, kas sastāv no vienas pogas un slēdža, kas savienots ar pro mega, izmantojot USB. Lai tas ilgstoši paliktu dzīvs, tajā tiek izmantotas divas monstrīgas 2200 mAh baterijas, kas savienotas virknē, lai iegūtu nepieciešamo spriegumu, un pēc tam 5 voltu regulators, lai to varētu izmantot. Visa elektronika ir ievietota kabatās krekla iekšpusē, lai tos varētu noņemt un kreklu varētu mazgāt. Tā spēlē funkcionālu tenisa spēli. Vispirms to papildina ar vārdiem "PONG PLAY" ar jaukiem ziliem burtiem, izmantojot modificētu Tom Thumb fonta versiju (atrodama vietnē https://robey.lag.net/2010/01/23/tiny-monospace-font)..html). Pēc piecām sekundēm var izvēlēties nospiest pogu, lai pārietu uz priekšu, vai nespiest pogu un atstāt pilnīgi labu pieredzi. Kad kāds izvēlas nospiest pogu, spēle sākas. Sarkana lāpstiņa labajā pusē ir datora lāpstiņa, un zaļā lāpstiņa labajā pusē ir spēlētāja lāpstiņa, kuru pārvieto ar slīdni, lai pārvietotos uz augšu un uz leju. Bumba atlec apkārt, kad katra puse mēģina gūt punktu. Spēlētājs var trāpīt bumbiņai ar lāpstiņas malu, lai to paātrinātu (jauka funkcija), kamēr dators to nevar izdarīt, un tā vietā galu galā iestrēgst, pārvietojoties nedaudz lēnāk nekā bumba. Kad tiek gūts punkts, pikseļu malas vērtēšanas pusēs mainās uz baltu. Tas skaitās binārā no apakšas. kur zaļā vai sarkanā krāsa ir nulle, bet balta ir 1. 21 ir uzvaras rezultāts (vai zaudējums atkarībā no tā, kurš iegūst 21 punktu), tāpēc, kad spēlētāja lāpstiņa uzrāda 10101, tiek parādīts teksts "JŪS UZVARAT". Vēlreiz modificētajā Tom Thumb. Tas pats notiek, bet tā vietā tiek parādīts uzraksts “YOU LOSE”. Pēc uzvaras vai zaudējuma spēle tiek atsākta uzreiz pēc Pong Play. Lai pilnībā atsāktu, tiek nospiesta poga "Magic Box", kas pazīstama arī kā kaste ar visu elektroniku, izņemot ekrānu.

1. darbība: materiāli un instrumenti

Materiāli un instrumenti
Materiāli un instrumenti
Materiāli un instrumenti
Materiāli un instrumenti

Lietas, kas apzīmētas ar *, nav obligātas, bet ieteicamas. Tāpēc ne īpašā secībā… Materiāli: 4 jardi Adafruit neopiksa 60 pikseļi uz 1 metra sloksni 1 T-krekls * 1 pāris bikšturu 1/2 pagalma auduma būs vairāk nekā pietiekami (Non vēlams izmantot elastīgu pinumu) 6 pēdu USB A vīrieša līdz USB B vīriešu kabelis 1 USB A ligzda 3 2 kontaktu JST savienotāji sievietēm 4 2 kontaktu JST vīriešu vadi akumulatora lādētājs 2 6600 mAh baterijas 1 Arkādes stila poga 1 arduino pro-mega 1 FTDI galvene 1 USB B sieviešu savienotājs ar sadalīšanas paneli 1 ieslēgšanas/izslēgšanas slēdzis (pārslēdzējs) 1 atiestatīšanas slēdzis (pārslēgšana vai īslaicīgs) mazliet plastmasas, lodēt, stieple, pavediens, karsta līme, elastīga, kādu laiku (varbūt nedaudz vairāk, nekā „daži”), kāda neatlaidība (jums, iespējams, vajadzēs diezgan daudz šī materiāla), saraušanās caurule vai elektriskā lente daži super līme daži dzelzs uz pamatnes Instrumenti *Palīdzīgas rokas Normāla roka s (vai kāds, kam ir piekļuve tiem) Lodāmurs *Karstās līmes pistole Dremel vai smilšpapīra kaltu stieples noņēmēji Stiepļu griezēji Skavotāja pistole Skrūvgriezis Zāģa tapas šujmašīnas auduma šķēres

2. solis: sagrieziet LED sloksni mazākās sloksnēs

Izgrieziet LED sloksni mazākās sloksnēs
Izgrieziet LED sloksni mazākās sloksnēs
Izgrieziet LED sloksni mazākās sloksnēs
Izgrieziet LED sloksni mazākās sloksnēs
Izgrieziet LED sloksni mazākās sloksnēs
Izgrieziet LED sloksni mazākās sloksnēs

Izmantojiet vēlamo griešanas trauku un sagrieziet sloksni 14 segmentos, katrs 15 pikseļus garš. Izgrieziet tikai starp vara pēdām, kas apzīmētas ar “DO” “DIN” “+5V” un “GND”. Ja tas jau ir pielodēts virs vara, tie tiek vienkārši izgriezti. Centieties pārāk daudz nezāģēt atklātā varā, bet, ja to nedaudz iesit, tas ir labi. Kad visas 14 sloksnes ir sagrieztas, nogrieziet nedaudz gumijas no katra gala, lai tā netiktu pielīmēta sloksņu lodēšanai.

3. solis: ekrāna lodēšana kopā

Ekrāna lodēšana kopā
Ekrāna lodēšana kopā
Ekrāna lodēšana kopā
Ekrāna lodēšana kopā
Ekrāna lodēšana kopā
Ekrāna lodēšana kopā

Paņemiet vadu un sagrieziet to apmēram 9 cm (3,5 collu) segmentos. Manā gadījumā man ir trīs dažādas krāsas, lai lodēšanas laikā būtu vieglāk noturēties taisni, bet viena krāsa derētu lieliski. Jums būs nepieciešami apmēram 40 no šiem mazajiem puišiem, taču katram gadījumam sagrieziet vēl pāris. Kad esat pabeidzis stieples griešanu, noņemiet galus un notīriet tos (ja jums ir pieredze lodēšanā, varat pāriet uz nākamo rindkopu), kas nozīmē, ka pēc plastmasas noņemšanas uz katra stieples galiem ielieciet lodmetālu. Nesildiet lodmetālu un nemēģiniet pāriet pie stieples, sildiet ar lodāmuru no vara apakšas un uzlieciet lodmetālu uz augšu. Esiet pacietīgs un gaidiet, kamēr karstā stieple izkausē lodmetālu. Ir vilinoši pielodēt lodāmuru pie lodēšanas, lai to sāktu (mana nepacietība un es precīzi zinu, kā jūs jūtaties), bet lodēt neliks tikpat labi. Dariet to pašu attiecībā uz atklātām vara pēdām katrā sloksnes sekciju galā. Ja tam jau ir lodēt, neuztraucieties par to. Par sloksni, iespējams, vēlēsities izveidot nelielu pilskalnu, lai vēlāk būtu vieglāk. Strādājot ar sloksni, dariet to ātri un mēģiniet netērēt pārāk daudz laika, uzklājot siltumu uz sloksnes. Dariet tikai to, kas jums jādara, lai izkausētu lodmetālu uz pēdas. Lodējiet vadu uz katras pēdas līdz pirmās sloksnes galam (pirmā sloksne, kurā ir vadi un savienotājs, pielodējiet to līdz atklātajam galam). Ja paskatās uz sloksni, uz tās redzēsit mazas bultiņas, kas iet uz augšu līdz galam, kur pielodējāt vadu. Paņemiet citu sloksni tā, lai bultiņas būtu vērstas pretējā virzienā, un pielodējiet vadu, kas nāk no GND pēdas uz otra GND izsekotāju, +5V līdz +5V un tā tālāk. Atkārtojiet šo darbību, pārliecinoties, ka pēc katras sadaļas bultiņas maina virzienu, lai, sekojot tām, tas zigzagētu augšup un lejup un galu galā to varētu izstiept līdz garai sloksnei. Kad visas 14 sloksnes ir pielodētas, izkārtojiet tās un sakārtojiet, lai gaismas diodes veidotu režģi. Pēc tam turiet tos kopā, izmantojot metodi, kuru vēlāk var noņemt, nesabojājot sloksni. Es izmantoju skotu lenti. Tas ir pietiekami lipīgs, lai visu turētu kopā, bet nav tik lipīgs, lai atstātu atlikumu. Es neiesaku neko pastāvīgam, piemēram, skavas vai līmlenti. Kad viss ir salīmēts kopā, pielodējiet vadu no sloksnes apakšā +5V līdz blakus esošajai. Atkārtojiet, līdz visā apakšā ir strāvas krāni līdz galam. Tas ir tāpēc, lai ekrāns netiktu aptumšots, progresējot gaismas diožu līnijai.

4. solis: Core Electronics lodēšana

Pamata elektronikas lodēšana
Pamata elektronikas lodēšana
Pamata elektronikas lodēšana
Pamata elektronikas lodēšana
Pamata elektronikas lodēšana
Pamata elektronikas lodēšana

Lodējiet USB B sadalīšanas paneli (BOB) pie USB B savienotāja. Lodējiet atbilstošos vadus pie USB A savienotāja. Es iesaku aplūkot savienotāja kontaktdakšu, kas atrodama šajā vietnē https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Neuztraucieties par to, kur lodēt pārējos USB A savienotāja vadu galus; kas tiks apskatīts kontroliera solī. Izgrieziet datu savienotāju no sloksnes, sieviešu savienotāja, nevis vīriešu savienotāja (sieviešu savienotājs ir iegūts no otra gala). Lodējiet tērauda JST savienotājus pie akumulatora galiem tā, lai sarkans kļūtu sarkans, bet melns - melns. Izkausējiet termiski saraucošās caurules pār atklātajiem vadiem (pirms lodēšanas pārbīdiet), lai tie nebūtu īsi vai neizmantotu kaut ko citu, piemēram, elektrisko lenti vai karstu līmi. Lodējiet dažus vadus pie visiem sieviešu JST savienotājiem. Noteikti pievienojiet ārējo galu, lai tapas nepārvietotos. Esiet piesardzīgs ar polaritāti un pārliecinieties, ka vadi sakrīt ar vīriešu savienotājiem. Lodējiet vadus pie viena augstsprieguma savienotāja (bet ne tā pāra) vēlreiz, pārliecinoties, ka visas krāsas sakrīt un ka tās ir savienotas kopā, lai novērstu tapas maiņu. Lodējiet sieviešu savienotāju/vadu komplektu tā, lai tie būtu savienoti virknē, nevis paralēli, lai to pārsniegtu jaudas regulatora sliekšņa spriegumam. Tātad, pielodējiet pozitīvo vadu pie otras mezgla negatīvās stieples, tāpēc tagad mums ir viens nepārlodēts pozitīvs vads un viens negatīvs bezlodēts vads, un divi lodētie vadi ir pielodēti pie dažādiem savienotājiem. Paņemiet negatīvo vadu un saglabājiet to, lai pielodētu pie negatīvā stieples citur. Tagad paņemiet pozitīvo vadu un pielodējiet to pie slēdža. Ja ir trīs vai vairākas tapas (vai vairāk nekā viens veids, kā to ieslēgt), pielodējiet to pie vidējās tapas. Ņemiet vērā, ka vidējā tapa fiziski var nebūt vidū. Veids, kā to identificēt, ir atrast tapu, kas, kad slēdzis ir ieslēgts jebkurā stāvoklī, vienmēr tiks savienots ar citu tapu. Ja neviena tapa nav šāda, tad jums ir ļoti īpašs slēdzis; vienkārši pievienojiet to jebkurai tapai un pārliecinieties, ka nākamais vads, kas pielodēts pie slēdža, būs savienots ar šo vadu vismaz vienā ieslēgtā stāvoklī. Tagad lodējiet pozitīvo ieplūdes vadu uz sprieguma regulatora līdz slēdža pretējam galam, kā aprakstīts iepriekš. Lodējiet postīvo spriegumu līdz nepārlodēta lielas strāvas savienotāja pozitīvajam galam. Paņemiet negatīvo ieplūdes vadu un pielodējiet līdz augstsprieguma savienotāja negatīvajam galam. Tagad mēs pielodēsim jaudu paralēli Arduino un Power sloksnei. Tagad paņemiet sprieguma regulatora izejas vadus un pielodējiet divus stieples gabalus gan pozitīvajos, gan negatīvajos galos, lai tie iznāktu Y formā. Lodējiet divu kontaktu savienotāju pie LED sloksnes mezgla pozitīvajiem un negatīvajiem vadiem. Nav svarīgi, kāda veida savienotāju jūs izmantojat, tas var būt JST vai manā gadījumā kāds strāvas/audio kabelis vai kaut kas (es neesmu pārliecināts, un es atvainojos, ka man nav attēlu). Lodējiet vienu no pozitīvās strāvas vadiem līdz gaismas sloksnes pretējā savienotāja pozitīvajam galam un vienu no negatīvajiem vadiem pie citas tapas uz savienotāja. Dariet to pašu, bet vīriešu JST savienotāja/stieples komplektam. Visu laiku atcerieties izolēt lodēšanas savienojumus, lai izvairītos no šortiem. Tagad par to, ko darīt ar USB B savienotāju. Lodējiet pozitīvo vadu pie 5 V cauruma uz Arduino Pro Mega. Paņemiet zemējuma vadu un pielodējiet to GND caurumā. Paņemiet D+ un pielodējiet to līdz digitālajai tapai (vai šajā gadījumā caurumam) 40. Lodēt D- līdz analogajai tapai 15. Lodējiet savienotājdatora datu galu, kas savienojas ar LED sloksnes tērauda savienotāju, ar 6. tapu un zemējuma vads līdz GND tapai. Maskēšanas vai skotu lente lieliski palīdz turēt vadus pie tāfeles, lai tie neizkristu, kad to apgāž, lai pielodētu. Tagad paņemiet īsu pogu un pielodējiet vadu no viena gala līdz VCC tapai (vai jebkurai sprieguma izejas tapai) un otru galu līdz RESET tapai.

5. solis: kontrolieris

Kontrolieris
Kontrolieris
Kontrolieris
Kontrolieris
Kontrolieris
Kontrolieris

Pirmkārt, ir jāizvēlas pareizā forma, ar ko sākt. Tas viss ir atkarīgs no tā, kā vēlaties izveidot kontroliera struktūru. Es gribēju vairāk plakanu kontrolieri, tāpēc es saņēmu 3 1/2 "ar 3/4" dēļu gabalu. sakārtojiet detaļas tādā veidā, kas šķiet piemērots un ērts darbam. Izmantojiet franču līkni, kompasu, trīsstūri un taisnu malu, lai zīmētu, kur jāiet visiem gabaliem. Izgrieziet pamata kontūru, izmantojot izvēlēto griezējinstrumentu. Vislabāk būtu aizliegt zāģi, bet es izmantoju pārvarēšanas zāģi, kas strādāja lieliski. Noslīpējiet malas, lai tās vienmērīgi pārietu, pēc tam noslīpējiet stūrus, lai padarītu to ērtāku. Izurbiet slēdža atveri, pēc tam slīpējiet, grieziet un/vai iztukšojiet visas detaļas apakšā, kas padarīs to piemērotu. Mēģiniet neko nedarīt ar augšpusi un tikai noslīpējiet to, kas jums nepieciešams, lai to varētu ievietot, pagriežot, makšķerējot vai jebkādā citā veidā, lai tas ieietu. Kad tas ir pievienots, pievienojiet to ar plastmasas uzgriezni un piestipriniet slēdzis. Izurbiet potenciometra pogas laukumu un izgrieziet laukumu, lai tas varētu iegrimt un ievietoties līdz galam. Izurbiet dažus caurumus, lai skrūve to varētu turēt iekšā. Salieciet mazos USB A savienotāja gabalus, kas nedaudz palielina tā platumu (skatiet attēlus). Izgrieziet savienotāja daļu, pakāpeniski pārbaudot, vai savienotājs ir piemērots. Super pielīmējiet savienotāju tā slotā. Paņemiet nelielu plastmasas gabalu un sagrieziet to tādā formā, kas iederēsies savienotājā (skatiet attēlus), un pēc tam saspraužiet to pie koka. Nogrieziet visus gabalus, kas var traucēt. Ieskrūvējiet potenciometru un piestipriniet pogu. Lodējiet pozitīvo vadu pie viena no potenciometra galiem (nevis mainīgās daļas) un negatīvo vadu - pretējā galā. Lodējiet D-tapu uz katla mainīgās tapas. Lodējiet vadu no katla tapas ar pozitīvo vadu uz vienu no pogas tapām. Lodēt D+ uz otru pogas pogu. Apgrieziet rezerves vadu un izolējiet gabalus, kuriem tas nepieciešams.

6. solis: krekls

Krekls
Krekls
Krekls
Krekls
Krekls
Krekls

Atrodiet ērtu kreklu, kas izlaidīs gaismu. Es izvēlējos šo pamata balto T-kreklu. Nav īsti nozīmes krāsai vai stilam, ja vien var redzēt, ka gaisma spīd cauri no iekšpuses. Tomēr es neiesaku grafiku priekšpusē. Uzlieciet visu uz krekla, lai palīdzētu jums izlemt, kur to vēlaties, un izmantojiet dzēšamo marķēšanas rīku, lai to uzzīmētu. Man (tas nozīmē, dažiem cilvēkiem, kurus es pazīstu) ir zīmulis, kas paredzēts audumu marķēšanai, un tas ir viegli mazgājams. Izmēriet bateriju, kontroliera korpusa un ekrāna izmēru un izgrieziet atbilstošus papīra gabalus. Pēc tam piespraudiet papīru pie elastīga auduma gabala. Šim nolūkam labi darbojas aušana. Pēc tam izgrieziet taisnstūri, atstājot apmēram ceturtdaļu collu šuvēm. Pēc tam, izmantojot papīra gabalu kā vadotni, gludiniet krokas audumā. Tagad papīru var noņemt. Kabatas daļā, kas būs augšējā, salieciet to trīs reizes virs sevis. Gludiniet un piespraudiet, lai tas paliktu vietā. Šujiet šķietami līdz galam krokas vidū. Tagad paņemiet stūri un salieciet to tā, lai savstarpēji perpendikulāri neatšūtās malas būtu paralēlas, un šujiet šķiedru gar gludināto kroku, kas ir vistuvāk stūrim (attēli patiešām palīdz). Dariet to arī otrajam stūrim. Ja gadās, ka pārslēgšanas slēdzis iznāks no kabatas, šujiet pogas caurumu kabatas pamatnē, kur slēdzis pieskaras. Pēc tam šuj pogas caurumu un izgriež vidējo daļu. Es nevaru īsti sniegt detalizētus norādījumus, jo man bija foršs rīks pogu caurumu veidošanai. Vienkārši pārliecinieties, ka atverat caurumus pirms kabatas uzšūšanas. Paņemiet dažas tapas un izbīdiet tās caur kreklu kabatas marķējuma stūros. Paņemiet kabatu un ielieciet katru stūri pie tapas (krekla iekšpusē), atstājot šuvē ceturtdaļu collu, un piespraudiet to kreklam. Pēc tam, kad kabata ir piesprausta. noņemiet tapas, kas netur kabatu, un piestipriniet kabatu pie krekla. Atkārtojiet visas kabatas. Lielai kabatai, kurā tiek turēts ekrāns, atstājiet atstarpi vadiem kabatas apakšā. Lai kreklā ievietotu caurumu, atzīmējiet vietu un paņemiet gludekli uz pamatnes (ar spīdīgāku daļu uz auduma) un gludiniet to. Pēc tam nelielam caurumam (piemēram, to, ko izmantoju pārslēgšanas slēdzim) izveidojiet pogas caurumu. Lai iegūtu lielāku caurumu, atzīmējiet kontūru un izmantojiet zigzaga dūrienu gar līniju (vai līkni vai to, kas jums ir) un izgrieziet vidējo daļu. Ja vēlaties, kabatiņu svara noturēšanai varat izmantot zeķturus, abus klipus turot pie kabatām priekšpusē un aizmugurē - uz biksēm. Es dabūju arī nelielu auduma piedurkni, kas uzšūta virs bikšturu daļām, kuras pieskarsies manai ādai. Divi krekli var kļūt pārāk karsti, tāpēc es atteicos un izmantoju mazo auduma piedurkni.

7. solis: programmēšana

Programmēšana
Programmēšana

Un šeit ir kods. Ir dažas daļas, kas ir labi komentētas, bet lielākā daļa nav. Ja jums ir jautājumi par dažādām daļām, varat man iedot rindas numuru (ar #include kā pirmo rindiņu) vai iedot rindiņas (-u) kopiju un funkciju, kurā tā atrodas (piemēram, loop () vai compMovePaddle ()), un es darīšu visu iespējamo, lai to jums izskaidrotu, un pēc tam pievienojiet komentāru kodam, kas to izskaidro. #include #define PIN 6 // saka, kuras ir spēles ievades tapas int buttonPin = 40; // diktē rezultātu, kas tiek saglabāts divgadīgā masīvā, jo tas ir es int int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // diktē bumbas virzienu int bvd = 0; // 0 ir uz leju, 1 ir uz augšu int bhd = 0; // 0 ir pa labi, 1 ir pa kreisi // diktē bumbiņu pozīciju int bvp = 8; int bhp = 6; // pārbauda, vai bumba ir ātrā režīmā Būla ātrs = nepatiess; // pārbauda, vai tas ir rādītājs. Būla cIsPoint = nepatiess; Būla pIsPoint = nepatiess; // lāpstiņu pozīcijas int cPaddle = 0; int pPaddle = 0; ilgi iepriekšMillis = 0; ilgi iepriekšMillisForComp = 0; // iestatīt aizkaves laikus ātrai un lēnai kustīgai bumbiņai "Int" normInt un fastInt ir intervālam int normInt = 50; int fastInt = 10; // izmanto, lai pārbaudītu uzvaru. 1 ir spēlētāja uzvara, -1 -datora uzvara, un 0 -nekas vēl nav noticis int win = 0; // lai atbrīvotos no kļūdas. tiek izmantots paziņojumā addOne un nekur citur. int kas = 0; // Lieta, kas parādīta pirms sākuma, -1 ir aizbēgt 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}; // ja jūs uzvarējat sev, 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}; // ja zaudējat sev zaudēt = {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}; // izveido LED sloksni Adafruit_NeoPixel strip = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // iestatīšana, nepagriež 40 ievades tapu, sāk sloksni, parāda // ziņojumu un parāda to. void setup () {pinMode (buttonPin, INPUT); strip.begin (); par (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); kavēšanās (5000); while (digitalRead (buttonPin) == LOW) {// Tas ir slazds! (līdz tiek nospiesta poga.)}} void loop () {clearScreen (); // zīmē lāpstiņas, lai parādītu rezultātu (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } cits if ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } ja (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } cits if ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0)); }} // ievelk bumbu sākuma pozīcijā sloksne.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // izlemj, vai bumba iet uz augšu vai leju, kamēr (pIsPoint == false && cIsPoint == false) {clearScreen (); neparakstīta garā strāvaMillis = millis (); // piešķir spēlētāja lāpstiņas pozīciju pPaddle = checkPaddlePos (); // pārbauda nākamo pozīciju checkNext (); // bumbiņas pārvietošana, ja (ātri == nepatiesi) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} else if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }} // uzzīmē bumbu, ja (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, strip. Color (255, 255, 255)); } cits if (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // datora lāpstiņu kustība compMovePaddle (); // draw's lāpstiņas drawPaddles (); // faktiski visu saliec.strip.show (); // pārbaude, vai ir iegūts punkts, ja (pIsPoint == true) {kas = 0; bhd = 0; addOne (); pārtraukums; } cits if (cIsPoint == true) {kas = 1; bhd = 1; addOne (); pārtraukums; }} ja (win == 1) {clearScreen (); par (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } kavēšanās (5000); par (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } uzvara = 0; } cits if (win == -1) {clearScreen (); par (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } kavēšanās (5000); par (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } uzvara = 0; } pIsPoint = nepatiess; cIsPoint = nepatiess; bvp = 8; jauda = 6; bvd = nejaušs (0, 2); // 0 ir uz leju, 1 strauji augšā = nepatiess; } // AI spēles void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = pašreizējaisMillis; ja (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } cits if (bvp = 0 && cPaddle <10) {cPaddle ++; } cits if (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } cits if (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // pārvieto bumbu tukšumu moveBall () {if (bhd == 0) {bhp--; } cits if (bhd == 1) {bhp ++; } ja (bvd == 0) {bvp--; } cits if (bvd == 1) {bvp ++; }} // pievieno masīvam vienu. Ja kurš no tiem ir 0, tas palielina spēlētāja rezultātu. Ja tas ir 1, tas datoriem pievieno void addOne () {if (kas == 0) {// ja tas ir spēlētāja rezultāts // Pievienojiet vienu. Tas ir vienkāršākais veids, kā es zinu. par (int i = 0; i <5; i ++) {// cilpa if (playerScore == 0) {// ja šī vērtība ir nulle playerScore = 1; // padariet to par 1 pārtraukumu; // tad ej prom} cits {// ja tas ir 1 playerScore = 0; // make it zero and loop}}} else if (which == 1) {for (int i = 0; i <5; i ++) {ja (compScore == 0) {compScore = compScore +1; pārtraukums; } cits {compScore = 0; }}} // Pārbauda, vai kāds uzvarēja. ja (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {win = -1; } cits if (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }} // pārbauda bumbiņas nākamā pozīcija void checkNext () {// pārbauda, vai ir iegūts punkts, ja (bhp == 13) {pIsPoint = true; } cits if (bhp == 0) {cIsPoint = true; } // ja ir iegūts punkts, izlaidiet pārējo, ja (pIsPoint == false || cIsPoint == false) {// pārbauda bumbu vertikāli, ja (bvp+bvd == 15) {bvd = 0; } cits if (bvp+bvd == 0) {bvd = 1; } // pārbauda bumbu horizontāli, ja (bhp+bhd == 13) {// vispirms datora pusē, ja (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } cits, ja (bhd == 0) {bhd = 1; } ātri = nepatiesi; } cits if (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } cits ja (bvd == 1) {bvd = 0; } bhd = 1; } cits ja (bvp == 0 || bvp == 14) {bhd = 1; } ātri = nepatiesi; }} cits, ja (bhp+bhd == 1) {// tad spēlētāja pusē, ja (bvp> = pPaddle && bvp <= pPaddle+4) {// vai tas trāpa pa lāpstiņu normālā vietā? // atlec bumbu! ja (bhd == 1) {bhd = 0; } cits ja (bhd == 0) {bhd = 1; }} else if (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// vai tas trāpa pa lāpstiņu uz stūra, ja (bvp! = 0 && bvp! = 14) {// vai tas ir ne augšā vai zemā? // Atlec bumbu! ja (bvd == 0) {bvd = 1; } cits ja (bvd == 1) {bvd = 0; } bhd = 1; ātri = taisnība; } cits, ja (bvp == 0 || bvp == 14) {// vai tas ir augsts vai pazemināts? // atlec bumbu! bhd = 0; fast = true; // iestatiet vērtību, lai vēlāk bumba kustētos ātri}}}}} int checkPaddlePos () {// nolasa banku un izlemj par lāpstiņas pozīciju atbilstoši, ja (analogRead (A15) <93) {return 0; } cits if (analogRead (A15) <186) {atgriezties 1; } cits if (analogRead (A15) <279) {return 2; } cits if (analogRead (A15) <372) {return 3; } cits if (analogRead (A15) <465) {return 4; } cits if (analogRead (A15) <558) {atgriezties 5; } cits if (analogRead (A15) <652) {return 6; } cits if (analogRead (A15) <745) {return 7; } cits if (analogRead (A15) <837) {return 8; } cits if (analogRead (A15) <= 931) {return 9; } cits if (analogRead (A15) <= 2014) {return 10; }} void drawPaddles () {// draw ir lāpstiņas pareizajā vietā un parāda lāpstiņas rezultātu par (int i = 0; i <5; i ++) {if (playerScore == 1) {strip. setPixelColor (pPaddle+i, strip. Color (255, 255, 255)); } cits if ((playerScore == 0)) {strip.setPixelColor (pPaddle+i, strip. Color (255, 0, 0)); } ja (compScore == 1) {strip.setPixelColor (199+cPaddle-i, strip. Color (255, 255, 255)); } cits 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. darbība. Gatavs produkts

Gatavs produkts
Gatavs produkts
Gatavs produkts
Gatavs produkts

Un lūk, gatavais krekls!

Ieteicams: