Mundarija:

Ko'ylakda pong o'ynaydigan moslashuvchan ekran: 8 qadam (rasmlar bilan)
Ko'ylakda pong o'ynaydigan moslashuvchan ekran: 8 qadam (rasmlar bilan)

Video: Ko'ylakda pong o'ynaydigan moslashuvchan ekran: 8 qadam (rasmlar bilan)

Video: Ko'ylakda pong o'ynaydigan moslashuvchan ekran: 8 qadam (rasmlar bilan)
Video: Bu kinoni ko'rishni aniq xohlamaysiz / Uzbek tilida tarjima kinolar / Узбек тилида таржима кинолар 2024, Noyabr
Anonim
Ko'ylakda pong o'ynaydigan moslashuvchan ekran
Ko'ylakda pong o'ynaydigan moslashuvchan ekran
Ko'ylakda pong o'ynaydigan moslashuvchan ekran
Ko'ylakda pong o'ynaydigan moslashuvchan ekran
Ko'ylakda pong o'ynaydigan moslashuvchan ekran
Ko'ylakda pong o'ynaydigan moslashuvchan ekran

Bu mening 2013 yilgi Xellouin bayrami kostyumim. U bir yilga yaqin ishlagan va uni yaratishga bir necha soat vaqt ketgan. Ekran 14 dan 15 pikselgacha, shuning uchun piksellar sonini juda past, lekin u baribir qiziqarli ishlarni bajarishi mumkin. U jismonan har tomonga egiluvchan, garchi uni buzilmasdan bukish mumkin emas. U USB orqali pro -mega ulangan bitta tugma va slayd potidan tashkil topgan boshqaruvchiga ega. Uzoq vaqt davomida tirik qolish uchun u 2200 mA / soat quvvatli ikkita dahshatli batareyani ishlatib, kerakli kuchlanishni oladi, so'ng uni ishlatish uchun 5 voltli regulyator. Barcha elektronikalar ko'ylakning ichki qismidagi cho'ntaklarga joylashtirilgan, shuning uchun ko'ylakni yuvish mumkin. Bu pongning funktsional o'yinini o'ynaydi. U birinchi navbatda Tom Thumb shriftining o'zgartirilgan versiyasi yordamida chiroyli ko'k harflar bilan "PONG PLAY" so'zlari bilan bezatilgan (https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Besh soniyadan so'ng tugmani bosish yoki tugmani bosmaslik va yaxshi tajribani ortda qoldirish imkoniyati beriladi. Agar kimdir tugmachani bosishni xohlasa, o'yin boshlanadi. O'ng tarafdagi qizil belkurak - bu kompyuter eshkakchasi va o'ngdagi yashil - bu o'yinchining eshkakidir, u yuqoriga va pastga siljish potasi tomonidan boshqariladi. Har bir tomon ochko olishga harakat qilganda, to'p atrofga sakraydi. O'yinchi tezlikni oshirish uchun to'pni belkurak chetidan urishi mumkin (bu yaxshi xususiyat), lekin kompyuter buni qila olmaydi va buning o'rniga to'pdan biroz sekinroq harakatlanib qoladi. Nuqtaga nuqta qo'yilganda, yon tomonidagi belkurakda piksel oq rangga o'zgaradi. U pastdan ikkilikda hisoblanadi. bu erda yashil yoki qizil - nol, oq - 1. 21 - g'alaba qozonish uchun hisob (yoki kim 21 ochko olganiga qarab yutqazadi) va shuning uchun o'yinchi eshkakchasi 10101 ni o'qisa, "SIZ YUTGANSIZ" matni ko'rsatiladi. Yana bir bor o'zgartirilgan Tom Thumb. Xuddi shunday bo'ladi, lekin uning o'rniga "SIZ YO'QOLGAN" ko'rsatiladi. G'alaba yoki mag'lubiyatdan so'ng, o'yin Pong Play -dan so'ng darhol o'z nuqtasiga qaytadi. To'liq qayta ishga tushirish uchun "Sehrli quti" dagi qayta ishga tushirish tugmasi bosiladi, u ham ekrandan tashqari hamma elektronikasi bo'lgan quti.

1 -qadam: Materiallar va asboblar

Materiallar va asboblar
Materiallar va asboblar
Materiallar va asboblar
Materiallar va asboblar

* Belgilangan narsalar ixtiyoriydir, lekin tavsiya etiladi va shuning uchun hech qanday tartibda emas … Materiallar: Adafruit Neopixle-ning 4 yardligi har bir metr uchun 60 pikselli 1 ta futbolka * 1 dona tokka 1/2 hovli mato etarli bo'ladi. cho'zilgan ortiqcha oro bermay) 6 futli USB Erkakdan USBgacha erkak kabel 1 USB Ayol ulagichi 3 2 pinli JST ayol ulagichlari 4 2 pinli JST erkak simli batareyali zaryadlovchi 2 6600 mA / soat batareyalar 1 Arja uslubidagi tugma 1 arduino pro-mega 1 FTDI sarlavhasi 1 ta USB B ayol ulagichi 1 ta yoqish/o'chirish tugmasi (almashtirish) 1 qayta o'rnatish tugmasi (almashtirish yoki bir lahzali) 1 slayd potensiometr *1 slaydli qozon tugmasi 1 yuqori amperli ulagich juftligi *1 loyiha holati 1 5V 3+ amperli kuchlanish regulyatori kichik bir oz plastmassa, bir oz ip, bir oz ip, bir oz ip *bir oz issiq elim bir oz temir yopishtiruvchi taglik ustida temir. Asboblar *Yordam qo'llari Oddiy qo'l s (yoki ularga kirish imkoniga ega bo'lgan) lehimlantiruvchi temir *Issiq yopishtiruvchi tabanca Dremel yoki zımpara qog'ozi

2 -qadam: LED tasmasini kichikroq chiziqlarga kesib oling

LED tasmasini kichikroq chiziqlarga kesib oling
LED tasmasini kichikroq chiziqlarga kesib oling
LED tasmasini kichikroq chiziqlarga kesib oling
LED tasmasini kichikroq chiziqlarga kesib oling
LED tasmasini kichikroq chiziqlarga kesib oling
LED tasmasini kichikroq chiziqlarga kesib oling

O'zingiz xohlagan kesish asbobidan foydalaning va chiziqni har bir 15 piksel uzunlikdagi 14 segmentga bo'ling. Faqat "DO" "DIN" "+5V" va "GND" kabi belgilar bilan kesilgan. Agar u allaqachon mis ustida lehimlangan bo'lsa, ularni kesib oling. Ochiq misni juda ko'p kesmaslikka harakat qiling, lekin agar siz uni ozgina urib qo'ysangiz yaxshi bo'ladi. Hamma 14 ta chiziqlar kesilgandan so'ng, har bir uchidan bir oz kauchukni kesib oling va chiziqlarni lehimlashdan chetda qoldiring.

3 -qadam: Ekranni birgalikda lehimlash

Ekranni birgalikda lehimlash
Ekranni birgalikda lehimlash
Ekranni birgalikda lehimlash
Ekranni birgalikda lehimlash
Ekranni birgalikda lehimlash
Ekranni birgalikda lehimlash

Telni oling va uni taxminan 3,5 dyuymli (9 sm) segmentlarga bo'ling. Mening holatimda, lehim paytida to'g'rilashni osonlashtiradigan uchta rang bor, lekin bitta rang yaxshi ishlaydi. Sizga 40 ga yaqin kichkina yigit kerak bo'ladi, lekin ehtimol, er -xotinni kesib tashlang. Agar siz simni kesib bo'lgach, uning uchlarini echib oling va qalaylang (agar sizda lehim tajribasi bo'lsa, keyingi paragrafga o'tishingiz mumkin), ya'ni plastmassani olib tashlaganingizdan so'ng, har bir simning uchiga bir oz lehim qo'ying. Lehimni isitmang va simga o'tishga urinmang, mis bilan pastdan temirni lehimlang va lehimni tepaga qo'ying. Sabr qiling va issiq simning lehimni eritishini kuting. Lehimlash temirini ishga tushirish uchun uni qattiq tortish jozibali bo'ladi (sabrsizligim va men o'zingizni qanday his qilayotganingizni bilaman), lekin lehim ham yopishmaydi. Ip bo'laklarining har bir uchida ochiq mis izlari uchun ham xuddi shunday qiling. Agar u allaqachon lehimga ega bo'lsa, bu haqda tashvishlanmang. Ip uchun siz keyinchalik osonlashtirish uchun kichik tepalik qurishni xohlashingiz mumkin. Ip bilan ishlaganda, buni tezda bajaring va chiziqqa issiqlik surtish uchun ko'p vaqt sarflamaslikka harakat qiling. Lehimni izga eritish uchun faqat nima qilish kerak. Birinchi chiziqning oxirigacha har bir izga simni lehimlang (birinchi chiziq simlar va ulagich bilan, uni ochiq uchiga lehimlang). Agar siz tasmaga qarasangiz, siz simni lehimlagan joyning oxirigacha ko'tarilgan kichik o'qlarni ko'rasiz. Boshqa chiziqni oling, shunda strelkalar teskari yo'nalishda bo'ladi va GND izidan keladigan simni ikkinchisining GND iziga, +5V dan +5V gacha va boshqalarni lehimlang. Buni takrorlang, shunda o'qlar har bir bo'limdan keyin yo'nalishni o'zgartiradi, agar siz ularga rioya qilsangiz, u yuqoriga va pastga zig -zag qo'yadi va oxirida uzun chiziqqa cho'ziladi. 14 ta chiziqlar lehimlangandan so'ng, ularni joylashtiring va chiziqqa qo'ying, shunda LEDlar panjara hosil qiladi. Keyin ularni tasmaga zarar bermasdan olib tashlash mumkin bo'lgan usuldan foydalanib saqlang. Men skotchdan foydalanardim. Hamma narsani bir -biriga yopishtiradigan darajada yopishqoq, lekin qoldiq qoldiradigan darajada yopishqoq emas. Men zımbalar yoki yopishqoq lentalar kabi doimiy narsalarga maslahat bermayman. Hammasi bir -biriga yopishtirilganidan so'ng, pastki +5V chiziqdan uning yonidagi simni lehimlang. Butun pastki qismidagi elektr kranlari oxirigacha o'tguncha takrorlang. Bu shuni anglatadiki, LEDlar chizig'i ketganda ekran xiralashmaydi.

4 -qadam: Asosiy elektronikani lehimlash

Asosiy elektronikani lehimlash
Asosiy elektronikani lehimlash
Asosiy elektronikani lehimlash
Asosiy elektronikani lehimlash
Asosiy elektronikani lehimlash
Asosiy elektronikani lehimlash

USB B ulagichini (BB) USB B ulagichiga lehimlang. Tegishli simlarni USB A ulagichiga lehimlang. Men ushbu veb-saytdagi ulagichning pin-chiqishini ko'rishni maslahat beraman, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. USB A ulagichidagi simlarning boshqa uchlarini hozir qaerga lehim qilish haqida qayg'urmang; Bu nazorat bosqichida ko'rib chiqiladi. Ma'lumot ulagichini erkak ulagichidan emas, ayol ulagichidan kesib oling (ayol ulagich boshqa uchidan olingan). Erkak JST ulagichlarini batareyaning uchiga lehimlang, shunda qizil qizilga, qora esa qora rangga o'tadi. Qisqartirilmasligi yoki elektr lenta yoki issiq elim kabi boshqa narsalarni ishlatmasligi uchun ochiq simlar ustidagi issiqlik o'tkazgich quvurlarini eritib oling (lehimlashdan oldin siljiting). Barcha ayol JST ulagichlariga ba'zi simlarni lehimlang. Pimlarning burilib ketmasligi uchun erkak uchi ulanganligiga ishonch hosil qiling. Kutupluluktan ehtiyot bo'ling va simlarning erkak ulagichlari bilan mos kelishiga ishonch hosil qiling. Lehim simlari yuqori kuchlanishli ulagichga ulanadi (lekin bu juft emas), yana bir bor, har qanday rang bir -biriga mos kelishiga ishonch hosil qilib, pinlarning siljishini oldini oladi. Quvvat regulyatorining chegara kuchlanishidan o'tib ketishi uchun, ayol faqat ulagichni/simni lehimlang. Shunday qilib, musbat simni boshqa yig'ilishning manfiy simiga lehimlang, shuning uchun hozir bizda bitta lehimlanmagan musbat sim va bitta salbiy lehimsiz sim bor va ikkita lehimli simlar turli ulagichlarga lehimlangan. Salbiy simni oling va uni boshqa joyga salbiy simga lehimlash uchun saqlang. Endi musbat simni oling va uni kalitga lehimlang Agar uch yoki undan ortiq pim bo'lsa (yoki "yoqilgan" bo'lishning bir necha yo'li bo'lsa), uni o'rta pimga lehimlang. E'tibor bering, "O'rta pin" jismonan o'rtada bo'lmasligi mumkin. Uni aniqlash usuli - bu kalit yoqilganda, har qanday holatda, har doim boshqa pinga ulanadi. Agar hech qanday pin bunday bo'lmasa, sizda juda maxsus kalit mavjud; faqat uni har qanday pinga ulang va kalitga lehimlangan keyingi sim kamida bitta holatda bu simga ulanganligiga ishonch hosil qiling. Endi yuqorida aytib o'tilganidek, voltaj regulyatoridagi ijobiy qabul qilish simini kalitning qarama -qarshi uchiga lehimlang. Payvandlanmagan yuqori oqim ulagichining ijobiy uchiga postiv kuchlanishni lehimlang. Salbiy qabul qilish simini oling va uni yuqori oqim ulagichining salbiy uchiga lehimlang. Endi biz Arduino va Power tasmalariga parallel ravishda quvvatni lehimlaymiz. Endi voltaj regulyatorining chiqish simlarini oling va ikkita bo'lakni ham ijobiy, ham salbiy uchlarida lehimlang, shunda ular Y shaklida bo'ladi. Ikkita pinli ulagichni chiziqli lentaning ijobiy va salbiy simlariga lehimlang. Qaysi turdagi ulagichni ishlatishingiz muhim emas, bu JST yoki mening holatimda quvvat/audio kabeli yoki biror narsa bo'lishi mumkin (ishonchim komil emas va menda rasm yo'qligi uchun uzr so'rayman). Ijobiy quvvat simlaridan birini yorug'lik chizig'i uchun qarama -qarshi ulagichning ijobiy uchiga va manfiy simlardan birini boshqa ulagichga ulang. Xuddi shunday qiling, lekin erkak JST ulagichi/sim yig'ish uchun. Qisqa kiyimlardan saqlanish uchun lehim bo'g'inlarini izolyatsiya qilishni unutmang. Endi USB B ulagichi bilan nima qilish kerakligi haqida. Ijobiy simni Arduino Pro Mega -dagi 5V teshikka lehimlang. Topraklama simini oling va uni GND teshigiga lehimlang. D+ ni oling va uni raqamli pinga (yoki bu holda, teshikka) lehimlang 40. D- analog pinga 15. Ledli erkak konnektori bilan ulangan ayol konnektorining ma'lumot uchini 6-pinli ulagichga lehimlang. topraklama simini GND piniga ulang. Maskalash yoki skotch lentalari simlarni taxtaga mahkam ushlab turish uchun juda yaxshi ishlaydi, shuning uchun ular lehimlash uchun ag'darilganda tushmaydi. Endi bir lahzali tugmachani oling va simni bir uchidan VCC piniga (yoki har qanday kuchlanish chiqish piniga), ikkinchi uchini esa RESET piniga lehimlang.

5 -qadam: Nazoratchi

Nazoratchi
Nazoratchi
Nazoratchi
Nazoratchi
Nazoratchi
Nazoratchi

Birinchidan, boshlash uchun to'g'ri shaklni tanlash. Hammasi nazoratchining qanday tuzilishini xohlashingizga bog'liq. Men ko'proq tekis boshqaruvchini xohlardim, shuning uchun men 3 1/2 dyuymli 3/4 dyuymli taxtani oldim. qismlarni ishlashga qulay va qulay ko'rinadigan tarzda joylashtiring. Frantsuz egri chizig'i, kompas, uchburchak va tekis qirradan foydalanib, barcha qismlar qayerga ketishi kerakligini chizib qo'ying. Siz tanlagan chiqib ketish vositasi yordamida asosiy konturni kesib oling. Taqiqlangan arra eng yaxshi bo'lardi, lekin men yaxshi ishlaydigan arra ishlatardim. Ularni silliq o'tishi uchun qirralarini zımpara qiling, so'ngra qulayroq bo'lishi uchun burchaklarni qumlang. Kommutator uchun teshikni burang, so'ngra pastki qismidagi qum, kesma va/yoki dremelni mos keladigan qismdan chiqarib oling. Tepalik bilan hech narsa qilmaslikka harakat qiling va uni ichkariga kirgizish uchun burab, burab yoki boshqa narsalarga mahkamlang. Qachonki uni plastik somun bilan mahkamlang va mahkamlang. almashtirish Potentsiometr tugmachasining joyini burab qo'ying va joyni kesib oling, shunda u cho'kib ketishi va oxirigacha joylashishi mumkin. Vida uni ushlab turishi uchun bir nechta teshiklarni burang. USB A ulagichining kichik bo'laklarini buking, bu uning umumiy kengligini biroz oshiradi (rasmlarga qarang). Ulagichning bir qismini kesib oling, ulagichning mos kelishini tekshiring. Ulagichni uning uyasiga super yopishtiring. Kichik plastmassani oling va uni ulagichga mos keladigan shaklga kesib oling (rasmlarga qarang), so'ng uni yog'ochga mahkamlang. Yo'lga tushishi mumkin bo'lgan bo'laklarni kesib tashlang. Potensiometrni burab, tugmachani mahkamlang. Ijobiy simni potansiyometrning uchidan biriga (o'zgarmaydigan qismiga) va manfiy simni qarama -qarshi uchiga lehimlang. D-pinni qozondagi o'zgaruvchan pinga lehimlang. Ijobiy sim bilan qozondagi pimdan simni tugmachadagi pinlardan biriga lehimlang. D+ lehimini boshqa tugmachaga ulang. Zaxira simni kesib oling va kerak bo'laklarni izolyatsiya qiling.

6 -qadam: ko'ylak

Ko'ylak
Ko'ylak
Ko'ylak
Ko'ylak
Ko'ylak
Ko'ylak

Yorug'lik o'tadigan qulay ko'ylakni toping. Men bu asosiy oq futbolkani tanladim. Rang va uslubning ahamiyati yo'q, chunki yorug'lik ichkaridan ko'rinadi. Ammo men old tomondan grafikani tavsiya qilmayman. Qaerga kerakligini hal qilish uchun ko'ylakka hamma narsani qo'ying va uni chizish uchun o'chiriladigan markirovka vositasidan foydalaning. Menda (men biladigan ba'zi odamlarni nazarda tutaman) matolarni belgilash uchun mo'ljallangan qalam bor, u oson yuviladi. Batareyalar, regulyator korpusi va ekran hajmini o'lchang va mos keladigan qog'oz parchalarini kesib oling. Keyin qog'ozni cho'zilmaydigan matoga mahkamlang. Buning uchun to'quv yaxshi ishlaydi. Keyin to'rtburchaklar bo'ylab to'rtburchakni kesib oling va tikuv bo'ylab aylantiring. Keyin qog'ozni yo'riqnoma sifatida ishlatib, burmalarni matoga burang. Endi qog'ozni olib tashlash mumkin. Cho'ntakning ustki qismi bo'lgandan keyin uni uch marta katlaydilar. Uni joyida ushlab turish uchun dazmollang va pin qiling. Qoplamaning o'rtasiga qadar hamma narsani tikib qo'ying. Endi burchakni oling va katlayın, shunda bir-biriga perpendikulyar bo'lmagan tikilmagan qirralar parallel bo'ladi va burchakka eng yaqin dazmollangan burma bo'ylab tikiladi (Rasmlar haqiqatan ham yordam beradi). Buni boshqa burchak uchun ham qiling. Agar sizda cho'ntakdan o'tish tugmasi paydo bo'lsa, cho'ntakning pastki qismiga kalit tegadigan joyga teshik tikib qo'ying. Keyin tugma teshigini tikib, o'rta qismini kesib oling. Men aniq ko'rsatma berolmayman, chunki menda tugmachali teshiklar qilish uchun ajoyib asbob bor edi. Cho'ntak tikilmasdan oldin teshiklar qilganingizga ishonch hosil qiling. Bir nechta pim oling va cho'ntak uchun markirovka burchaklaridagi ko'ylakdan o'tkazing. Cho'ntakni oling va har bir burchakni pimga (ko'ylakning ichki tomoniga) qo'ying, tikuv uchun chorak dyuym qoldiring va ko'ylakka mahkamlang. Cho'ntak mahkamlangandan keyin. cho'ntakni ushlab turmagan pimlarni echib oling va cho'ntakni ko'ylakka tikib qo'ying. Hamma cho'ntaklar uchun takrorlang. Ekranni ushlab turgan katta cho'ntak uchun cho'ntakning pastki qismidagi simlar uchun bo'sh joy qoldiring. Ko'ylakka teshik qo'yish uchun joyni belgilang va taglikka dazmol oling (matoning eng yorqin qismi bilan) va uni dazmollang. Keyin, kichik tuynuk uchun (masalan, men almashtirish tugmachasida ishlatganimdek) tugmachali teshik qiling. Kattaroq teshik uchun konturni belgilang va chiziq bo'ylab zigzag tikuvidan foydalaning (yoki egri yoki sizda nima bor) va o'rtasini kesib oling. Agar xohlasangiz, cho'ntaklarning og'irligini ushlab turish uchun to'xtatuvchilardan foydalanishingiz mumkin, ikkita qisqich old qismidagi cho'ntaklarga, orqa qisqich esa shimlarga. Bundan tashqari, jildning terisiga tegib turadigan qismlari ustiga tikilgan kichkina mato yengini oldim. Ikkita ko'ylak biroz qizib ketishi mumkin, shuning uchun men kichkina matodan yengini tanladim.

7 -qadam: dasturlash

Dasturlash
Dasturlash

Va bu erda kod. Yaxshi izohlangan bir necha qismlar bor, lekin ularning aksariyati aytilmagan. Agar sizda turli qismlar bo'yicha savollaringiz bo'lsa, menga qator raqamini berishingiz mumkin (#qatorni birinchi qatorga kiriting) yoki menga chiziq (lar) ning nusxasini va u joylashgan funktsiyani (loop () yoki compMovePaddle ()) va men buni sizga tushuntirish uchun qo'limdan kelganicha harakat qilaman, keyin uni tushuntirib beradigan kodga izoh qo'shing. #include #define PIN 6 // int tugmaPin = 40 o'yini uchun kirish pinlari ekanligini bildiradi; // hisobni belgilaydi, ikki tomonlama qatorda saqlanadi, chunki u esier int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // to'pning yo'nalishini belgilaydi int bvd = 0; // 0 pastda, 1 yuqorida int bhd = 0; // 0 o'ngda, 1 chapda // to'plarning pozitsiyasini belgilaydi int bvp = 8; int bhp = 6; // to'p tezkor rejimda ekanligini tekshiradi boolean fast = false; // ball ekanligini tekshiradi. mantiqiy cIsPoint = noto'g'ri; mantiqiy pIsPoint = noto'g'ri; // belkurak pozitsiyalari int cPaddle = 0; int pPaddle = 0; uzoq oldingiMillis = 0; uzoq oldingiMillisForComp = 0; // tez va sekin harakatlanadigan to'p uchun kechikish vaqtlarini belgilang normIntdagi "Int" va fastInt int normInt = 50 oralig'ida; int fastInt = 10; // g'alabani tekshirish uchun ishlatiladi. 1 -o'yinchi yutug'i, 1 -kompyuter yutug'i, 0 -hali hech narsa bo'lmagan int int = 0; // xatodan qutulish uchun. addOne iborasida ishlatilgan va boshqa hech qaerda. int qaysi = 0; // Boshlanishidan oldin ko'rsatiladigan narsa -1 -bu 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}; // agar siz intWin yutsangiz = {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}; // agar sen int yo'qotsangLose = {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}; // Adafruit_NeoPixel chiziqli chiziqni o'rnatadi = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // sozlash, kirish uchun 40 -gachasi pinni burmaydi, chiziqni boshlaydi, // xabarini ko'rsatadi va uni ko'rsatadi. void setup () {pinMode (buttonPin, INPUT); strip.begin (); uchun (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); kechikish (5000); while (digitalRead (buttonPin) == LOW) {// Bu tuzoq! (tugma bosilmaguncha)}} void loop () {clearScreen (); // (int i = 0; i <5; i ++) {agar (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } if if ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0))); } if (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } if if ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0))); }} // to'pni boshlang'ich pozitsiyasida chizadi strip.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // to'pning yuqoriga yoki pastga tushishini hal qiladi (pIsPoint == false && cIsPoint == false) {clearScreen (); belgisiz uzun oqimMillis = millis (); // pleyerning eshkakli joyini belgilaydi pPaddle = checkPaddlePos (); // keyingi pozitsiyani tekshiradi checkNext (); // to'pni harakatlantirish (tez == noto'g'ri) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} if if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }} // to'pni torting, agar (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, strip. Color (255, 255, 255)); } if if (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // kompyuter eshigining harakati compMovePaddle (); // draw is paddles drawPaddles (); // haqiqatan ham hamma narsani joyiga qo'ydi.strip.show (); // nuqta qo'yilganligini tekshirish, agar (pIsPoint == rost) {qaysi = 0; bhd = 0; addOne (); tanaffus; } if if (cIsPoint == true) {qaysi = 1; bhd = 1; addOne (); tanaffus; }} if (g'alaba == 1) {clearScreen (); for (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } kechikish (5000); uchun (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } g'alaba = 0; } if if (win == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } kechikish (5000); uchun (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } g'alaba = 0; } pIsPoint = noto'g'ri; cIsPoint = noto'g'ri; bvp = 8; bhp = 6; bvd = tasodifiy (0, 2); // 0 pastga, 1 yuqoriga tez = noto'g'ri; } // O'yin uchun sun'iy intellekt void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = currentMillis; agar (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } if if (bvp = 0 && cPaddle <10) {cPaddle ++; } if if (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } if if (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // to'pni bo'sh harakatlantiradi moveBall () {if (bhd == 0) {bhp--; } boshqa if (bhd == 1) {bhp ++; } agar (bvd == 0) {bvp--; } boshqa if (bvd == 1) {bvp ++; }} // massivga bittasini qo'shadi. Agar qaysi biri 0 bo'lsa, bu o'yinchi hisobiga qo'shiladi. Agar u 1 bo'lsa, u kompyuterga void addOne () {if (which == 0) {// if the player's ball // qo'shadi. Bu men biladigan sodda usul. for (int i = 0; i <5; i ++) {// loop if (playerScore == 0) {// agar bu qiymat nolinchi o'yinchi bo'lsa ScScore = 1; // 1 ta tanaffus qiling; // keyin keting} boshqa {// agar u 1 o'yinchi bo'lsa ScScore = 0; // uni nolga aylantiring}}} if if (which == 1) {for (int i = 0; i <5); i ++) {if (compScore == 0) {compScore = compScore +1; tanaffus; } boshqa {compScore = 0; }}} // Kimdir yutganligini tekshiradi. if (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {g'alaba = -1; } if if (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {g'alaba = 1; }} // to'plarning keyingi pozitsiyasini tekshiradi void checkNext () {// cheklar, agar (bhp == 13) {pIsPoint = true; } if if (bhp == 0) {cIsPoint = true; } // agar ochko to'plangan bo'lsa, qolganini o'tkazib yuboring, agar (pIsPoint == false || cIsPoint == false) {// to'pni vertikal holda tekshirsa, (bvp+bvd == 15) {bvd = 0; } boshqa if (bvp+bvd == 0) {bvd = 1; } // to'pni gorizontal ravishda tekshiradi, agar (bhp+bhd == 13) {// birinchi navbatda kompyuter tomonida, agar (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } boshqa if (bhd == 0) {bhd = 1; } tez = noto'g'ri; } if if (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } boshqa if (bvd == 1) {bvd = 0; } bhd = 1; } boshqa if (bvp == 0 || bvp == 14) {bhd = 1; } tez = noto'g'ri; }} else if (bhp+bhd == 1) {// keyin pleyer tomonida, agar (bvp> = pPaddle && bvp <= pPaddle+4) {// u oddiy joyga eshkakka tegsa? // to'pni tep! agar (bhd == 1) {bhd = 0; } boshqa if (bhd == 0) {bhd = 1; }} else if (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// agar burchakdagi eshkakka tegsa, agar (bvp! = 0 && bvp! = 14) {// shunday bo'lsa yuqoriga yoki pastga emasmi? // To'pni tep! agar (bvd == 0) {bvd = 1; } boshqa if (bvd == 1) {bvd = 0; } bhd = 1; tez = rost; } else if (bvp == 0 || bvp == 14) {// yuqoriga yoki pastga? // to'pni tep! bhd = 0; fast = true; // to'pni keyinroq tez harakatlanadigan qilib belgilang}}}}} int checkPaddlePos () {// qozonni o'qiydi va agar shunday bo'lsa, (agar analogRead (A15) <93) {qaytsa; } else if (analogRead (A15) <186) {qaytish 1; } else if (analogRead (A15) <279) {qaytish 2; } else if (analogRead (A15) <372) {qaytish 3; } if if (analogRead (A15) <465) {return 4; } else if (analogRead (A15) <558) {qaytish 5; } else if (analogRead (A15) <652) {qaytish 6; } else if (analogRead (A15) <745) {qaytish 7; } else if (analogRead (A15) <837) {8 qaytarish; } else if (analogRead (A15) <= 931) {qaytish 9; } else if (analogRead (A15) <= 2014) {qaytish 10; }} void drawPaddles () {// draw belkuraklarni to'g'ri joyiga qo'yadi va (int i = 0; i <5; i ++) {if (playerScore == 1) {stripidagi hisobni ko'rsatadi. setPixelColor (pPaddle+i, strip. Color (255, 255, 255)); } if 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 -qadam: tayyor mahsulot

Tayyor mahsulot
Tayyor mahsulot
Tayyor mahsulot
Tayyor mahsulot

Mana, tugadi ko'ylak!

Tavsiya: