Isi kandungan:

Pong Memainkan Skrin Fleksibel pada Baju: 8 Langkah (dengan Gambar)
Pong Memainkan Skrin Fleksibel pada Baju: 8 Langkah (dengan Gambar)

Video: Pong Memainkan Skrin Fleksibel pada Baju: 8 Langkah (dengan Gambar)

Video: Pong Memainkan Skrin Fleksibel pada Baju: 8 Langkah (dengan Gambar)
Video: Wanita ini sudah di tunggu malaikat izrailšŸ˜± 2024, November
Anonim
Pong Memainkan Skrin Fleksibel pada Baju
Pong Memainkan Skrin Fleksibel pada Baju
Pong Memainkan Skrin Fleksibel pada Baju
Pong Memainkan Skrin Fleksibel pada Baju
Pong Memainkan Skrin Fleksibel pada Baju
Pong Memainkan Skrin Fleksibel pada Baju

Ini adalah kostum Halloween saya untuk tahun 2013. Sudah hampir satu tahun berfungsi dan memerlukan beberapa jam untuk dibuat. Skrinnya berukuran 14 kali 15 piksel, jadi, resolusi yang cukup rendah tetapi masih boleh melakukan beberapa perkara yang menyeronokkan. Fleksibel secara fizikal ke semua arah, walaupun tidak dapat dilipat tanpa kerosakan. Ia mempunyai alat kawalan yang terdiri daripada satu butang dan periuk slaid, disambungkan ke pro mega melalui USB. Untuk mengekalkannya dalam jangka masa yang lama, ia menggunakan dua bateri 2200 mAh yang berserabut secara bersiri untuk mendapatkan voltan yang diperlukan, dan kemudian pengatur 5 Volt untuk menjadikannya dapat digunakan. Semua elektronik diletakkan di dalam poket di bahagian dalam baju sehingga boleh dikeluarkan dan supaya baju dapat dicuci. Ia memainkan permainan pong yang berfungsi. Ini pertama kali menghadiahkan satu dengan kata-kata "PONG PLAY" dalam huruf biru yang indah menggunakan versi fon Thumb yang diubah suai (boleh didapati di https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Selepas lima saat, pilihan boleh diberikan untuk menekan butang untuk bergerak, atau tidak menekan butang dan meninggalkan pengalaman yang sangat baik. Apabila seseorang memilih untuk menekan butang, permainan bermula. Paddle merah di sebelah kanan adalah dayung komputer dan dayung hijau di sebelah kanan adalah dayung pemain, yang dikendalikan oleh periuk slaid untuk bergerak ke atas dan ke bawah. Bola melantun ketika setiap pasukan berusaha untuk menjaringkan satu mata. Pemain boleh memukul bola dengan tepi dayung mereka untuk mempercepatnya (ciri yang bagus) sementara komputer tidak dapat melakukan ini, dan akhirnya terjebak dengan bergerak sedikit lebih perlahan daripada bola. Apabila titik dijaringkan, piksel berubah menjadi putih di dayung sisi pemarkahan. Ia dikira dalam binari dari bawah. di mana hijau atau merah adalah sifar dan putih adalah 1. 21 adalah skor untuk menang (atau kalah bergantung pada siapa yang mendapat 21 mata) dan oleh itu ketika pemain mengayuh membaca 10101, teks "ANDA MENANG" akan dipaparkan. Sekali lagi di Tom Thumb yang diubah. Perkara yang sama berlaku tetapi dengan "ANDA HILANG" dipaparkan sebagai gantinya. Selepas menang atau kalah permainan dimulakan semula ke titik tepat selepas Pong Play. Untuk memulakan semula sepenuhnya butang mulakan semula pada "Magic Box", juga dikenali sebagai kotak-dengan-semua-elektronik-kecuali-skrin, ditekan.

Langkah 1: Bahan dan Alat

Bahan dan Alat
Bahan dan Alat
Bahan dan Alat
Bahan dan Alat

Perkara yang ditandai dengan * adalah pilihan tetapi tidak disarankan. Oleh itu, tanpa urutan tertentu ā€¦ Bahan: 4 Yards Adafruit Neopixle 60 piksel per meter jalur 1 T-shirt * 1 pasang Suspender 1/2 halaman kain akan lebih dari cukup (Bukan tenunan elastik lebih disukai) 6 kaki USB A lelaki ke USB B kabel lelaki 1 USB A penyambung wanita 3 2 pin JST penyambung wanita 4 2 pin JST wayar pengecas bateri 2 6600 mAh bateri 1 Gaya arked Butang 1 arduino pro-mega 1 FTDI header 1 penyambung wanita USB B dengan papan pemecah 1 suis hidup / mati (beralih) 1 suis tetapan semula (togol atau sesaat) 1 potensiometer slaid * 1 tombol pot slaid 1 pasangan penyambung amp tinggi * 1 kes projek 1 pengatur voltan amp 5V 3+ kecil sedikit plastik beberapa pateri beberapa wayar beberapa benang * beberapa gam panas * beberapa elastik sedikit masa (Mungkin sedikit lebih banyak daripada "beberapa") ketekunan (Anda mungkin memerlukan sedikit ini sebenarnya) beberapa tiub penyusut haba atau pita elektrik beberapa alat pelekat yang super besi pada alatan sokongan * Tangan Membantu Tangan Normal s (atau seseorang yang mempunyai akses kepada mereka) Besi Solder * Hot Glue Gun Dremel atau Sandpaper Chisel Wire Strippers Wire Cutters Staple Gun Screw Driver Saw Pins Mesin Jahit Fabrik Gunting

Langkah 2: Potong Jalur LED Ke Jalur yang Lebih Kecil

Potong Jalur LED Ke Jalur Yang Lebih Kecil
Potong Jalur LED Ke Jalur Yang Lebih Kecil
Potong Jalur LED Ke Jalur Yang Lebih Kecil
Potong Jalur LED Ke Jalur Yang Lebih Kecil
Potong Jalur LED Ke Jalur Yang Lebih Kecil
Potong Jalur LED Ke Jalur Yang Lebih Kecil

Gunakan alat pemotong yang anda gemari dan potong jalur menjadi 14 segmen, masing-masing panjang 15 piksel. Potong hanya di antara jejak tembaga, berlabel seperti "DO" "DIN" "+ 5V" dan "GND". Sekiranya sudah terpateri di atas tembaga, mereka akan memotongnya. Cuba jangan memotong terlalu banyak ke dalam tembaga yang terdedah tetapi jika anda mengeluarkannya sedikit saja. Setelah semua 14 helai dipotong, potong sedikit getah dari setiap hujungnya agar tidak menyolder jalur.

Langkah 3: Memateri Skrin Bersama

Memateri Skrin Bersama
Memateri Skrin Bersama
Memateri Skrin Bersama
Memateri Skrin Bersama
Memateri Skrin Bersama
Memateri Skrin Bersama

Ambil wayar dan potong menjadi kira-kira 3.5 inci (9 cm) segmen. Dalam kes saya, saya mempunyai tiga warna yang berbeza untuk menjadikannya lebih lurus ketika menyolder, tetapi satu warna akan berfungsi dengan baik. Anda memerlukan kira-kira 40 orang kecil ini, tetapi potong beberapa lagi untuk berjaga-jaga. Setelah selesai memotong wayar, lepaskan dan timah hujungnya (Sekiranya anda mempunyai pengalaman menyolder, anda boleh melangkau ke perenggan seterusnya), yang bermaksud setelah anda mengeluarkan sedikit plastik, letakkan sedikit pateri di hujung setiap wayar. Jangan panaskan pateri dan cuba beralih ke wayar, panaskan dengan besi pematerian dari bahagian bawah tembaga dan pasangkan pateri di bahagian atas. Bersabar dan tunggu wayar panas mencairkan pateri. Sangat menggoda untuk memateri besi pematerian ke solder untuk memulainya (Kesabaran saya dan saya tahu bagaimana perasaan anda) tetapi solder tidak akan melekat juga. Lakukan perkara yang sama untuk jejak tembaga yang terdedah pada setiap hujung bahagian jalur. Sekiranya sudah mempunyai solder jangan risau. Untuk jalur, anda mungkin mahu membina gundukan kecil untuk memudahkannya kemudian. Semasa bekerja dengan jalur, lakukan dengan cepat, dan cuba untuk tidak menghabiskan banyak masa menggunakan haba pada jalur. Lakukan apa yang perlu anda lakukan untuk mencairkan pateri ke jejak. Pateri wayar pada setiap jejak ke hujung jalur pertama (Jalur pertama menjadi wayar dengan wayar dan penyambung, pasangkannya ke hujung yang terdedah). Sekiranya anda melihat jalurnya, anda akan melihat anak panah kecil di atasnya sehingga hujung tempat anda menyolder wayar. Ambil jalur lain sehingga anak panah menunjuk arah yang berlawanan, dan solder wayar yang datang dari jejak GND ke jejak GND yang lain, + 5V ke + 5V dan seterusnya. Ulangi ini untuk memastikan anak panah beralih arah selepas setiap bahagian sehingga jika anda mengikutinya, ia akan memusingkan ke atas dan ke bawah, dan pada akhirnya ia boleh diluruskan pada jalur panjang. Setelah semua 14 jalur dipateri, susun dan garis sehingga barisan LED membentuk grid. Kemudian simpan bersama menggunakan kaedah yang boleh dikeluarkan kemudian tanpa kerosakan pada jalur. Saya menggunakan pita scotch. Ia cukup melekit untuk menyatukan semuanya tetapi tidak begitu melekit sehingga meninggalkan sisa. Saya tidak mencadangkan apa-apa untuk kekal, seperti staples atau pita saluran. Setelah semuanya dilekatkan bersama-sama pateri wayar dari jalur di bahagian bawah + 5V ke yang betul-betul di sebelahnya. Ulangi sehingga seluruh bahagian bawah mempunyai paip kuasa sepanjang jalan. Ini supaya skrin tidak redup ketika garis LED semakin maju.

Langkah 4: Memateri Teras Elektronik

Memateri Teras Elektronik
Memateri Teras Elektronik
Memateri Teras Elektronik
Memateri Teras Elektronik
Memateri Teras Elektronik
Memateri Teras Elektronik

Pateri papan pemecah USB B (BOB) ke penyambung USB B. Pateri wayar yang sesuai ke penyambung USB A. Saya sarankan untuk melihat pin penyambung seperti yang terdapat di laman web ini, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Jangan bimbang di mana untuk memasangkan hujung wayar lain pada penyambung USB A sekarang; yang akan diliputi dalam langkah pengawal. Potong penyambung data dari jalur, penyambung wanita, bukan penyambung lelaki (Penyambung wanita diperoleh dari hujung yang lain). Pateri penyambung JST lelaki ke hujung bateri sehingga merah menjadi merah dan hitam menjadi hitam. Cairkan tiub pengecutan haba di atas wayar yang terdedah (tergelincir sebelum dipateri) supaya tidak pendek atau menggunakan sesuatu yang lain seperti pita elektrik atau gam panas. Pateri beberapa wayar ke semua penyambung JST wanita. Pastikan hujung lelaki dipasang, supaya pin tidak berpusing. Berhati-hati dengan kekutuban dan pastikan wayar sesuai dengan penyambung lelaki. Kabel pateri ke salah satu penyambung voltan tinggi (tetapi bukan pasangannya), sekali lagi, memastikan sebarang warna sepadan dan ia terpasang bersama untuk mengelakkan pin berpindah. Memateri pemasangan penyambung / dawai wanita supaya mereka disambung secara siri, tidak selari, untuk melepasi voltan ambang untuk pengatur kuasa. Oleh itu, pateri wayar positif ke wayar negatif pemasangan lain sehingga sekarang kita mempunyai satu wayar positif tidak terpateri dan satu wayar tidak terpateri negatif dan dua wayar terpateri disolder ke penyambung yang berbeza. Ambil wayar negatif dan simpan untuk disisipkan ke wayar negatif di tempat lain. Sekarang bawa wayar positif dan pateri ke suis Jika terdapat tiga atau lebih pin (atau lebih daripada satu cara "on") pateri ke pin tengah. Perhatikan "Pin tengah" mungkin tidak berada di tengah fizikal. Cara mengenalinya adalah dengan mencari pin yang, apabila suis dihidupkan dalam keadaan apa pun akan selalu disambungkan ke pin lain. Sekiranya tidak ada pin seperti ini maka anda mempunyai suis yang sangat istimewa; sambungkan sahaja ke pin mana pun dan pastikan wayar seterusnya yang dipateri ke suis akan disambungkan ke wayar sekurang-kurangnya satu pada keadaan. Sekarang pasangkan wayar pengambilan positif pada pengatur voltan ke hujung suis yang bertentangan, seperti yang dibincangkan di atas. Pateri voltan pasif ke hujung positif penyambung arus tinggi yang tidak dipateri. Keluarkan wayar pengambilan negatif dan pateri pada hujung negatif penyambung arus tinggi. Kami sekarang akan menyolokkan kuasa selari dengan jalur Arduino dan Power. Sekarang, ambil wayar output pengatur voltan dan pateri dua kepingan wayar pada hujung positif dan negatif sehingga keluar dalam bentuk Y. Pateri penyambung dua pin ke wayar positif dan negatif dari pemasangan jalur yang dipimpin. Tidak kira jenis penyambung yang anda gunakan, ia boleh menjadi JST atau dalam kes saya kabel kuasa / audio atau sesuatu (saya tidak pasti, dan saya minta maaf kerana tidak mempunyai gambar). Pateri salah satu wayar daya positif ke hujung positif penyambung bertentangan untuk jalur cahaya dan salah satu wayar negatif ke pin lain pada penyambung. Lakukan perkara yang sama tetapi untuk pemasangan penyambung / wayar JST lelaki. Selalu ingat untuk melindungi sendi pateri untuk mengelakkan seluar pendek. Sekarang, apa yang perlu dilakukan dengan penyambung USB B. Selesaikan wayar positif ke lubang 5v pada Arduino Pro Mega. Keluarkan wayar tanah dan pateri ke lubang GND. Ambil D + dan pateri ke pin digital (atau dalam kes ini, lubang) 40. Pateri D- ke pin analog 15. Memateri hujung data penyambung wanita yang mengawan dengan penyambung lelaki jalur LED ke pin data 6 dan wayar tanah ke pin GND. Pita pelekat atau scotch berfungsi dengan baik untuk memegang wayar ke papan supaya tidak jatuh ketika dibalik untuk disolder. Sekarang ambil butang seketika dan pateri wayar dari satu hujung ke pin VCC (atau pin output voltan apa pun) dan hujung yang lain ke pin RESET.

Langkah 5: Pengawal

Pengawal
Pengawal
Pengawal
Pengawal
Pengawal
Pengawal

Pertama ialah memilih bentuk yang tepat untuk memulakannya. Semuanya bergantung pada bagaimana anda mahu pengawal disusun. Saya mahukan lebih banyak alat kawalan rata jadi saya mendapat sekeping papan 3 1/2 "dengan 3/4". susun bahagiannya dengan cara yang sesuai dan selesa untuk digunakan. Gunakan lengkung perancis, kompas, segitiga, dan tepi lurus untuk menggambar ke mana semua kepingan harus pergi. Potong garis besar asas menggunakan alat pemotong pilihan anda. Gergaji besi adalah yang terbaik tetapi saya menggunakan mesin gergaji yang berfungsi dengan baik. Pasir ke tepi untuk menjadikannya peralihan dengan lancar, kemudian pasir ke sudut untuk menjadikannya lebih selesa. Bor lubang suis, kemudian pasir, pahat, dan / atau Dremel keluar mana-mana bahagian di bahagian bawah yang akan sesuai. Cuba jangan membuat apa-apa dengan bahagian atas dan hanya pasir apa yang anda perlukan untuk memasangnya dengan memutar, memusingkan, atau apa sahaja untuk membuatnya masuk. Setelah itu pasangkannya dengan kacang plastik dan pasangkan beralih. Lubang kawasan agar tombol potensiometer dapat masuk dan pahat kawasan sehingga dapat tenggelam dan masuk sepanjang jalan. Lubang beberapa lubang sehingga skru dapat menahannya. Bengkokkan kepingan kecil penyambung USB A yang menjadikan lebar amnya bertambah sedikit (lihat gambar). Pahat bahagian penyambung, periksa secara berperingkat untuk memastikan penyambungnya sesuai. Lekatkan penyambung ke slotnya. Ambil sedikit kepingan plastik dan potong menjadi bentuk yang sesuai di atas penyambung (lihat gambar), dan kemudian pasangkannya ke kayu. Potong sebarang kepingan yang mungkin menghalangi. Skru potensiometer dan pasangkan kenop. Pateri wayar positif ke salah satu hujung potensiometer (bukan bahagian berubah) dan wayar negatif ke hujung yang bertentangan. Pateri pin D ke pin pemboleh ubah di periuk. Pateri wayar dari pin pada periuk dengan wayar positif ke salah satu pin pada butang. Pateri D + ke pin lain pada butang. Potong wayar ganti dan lindungi kepingan yang memerlukannya.

Langkah 6: Baju

Baju
Baju
Baju
Baju
Baju
Baju

Cari baju yang selesa yang akan menerangi cahaya. Saya memilih kemeja putih asas ini. Tidak terlalu mementingkan warna atau gaya asalkan cahaya dapat dilihat bersinar dari dalam. Walau bagaimanapun saya tidak mengesyorkan grafik di bahagian depan. Letakkan semua yang ada di baju untuk membantu anda menentukan di mana anda menginginkannya dan gunakan alat penanda yang boleh dihapus untuk menariknya. Saya (bermaksud beberapa orang yang saya kenali) mempunyai pensil untuk menandakan kain yang mudah dicuci. Ukur ukuran bateri, sarung pengawal, dan layar dan potong kertas yang sesuai. Kemudian pasangkan kertas itu ke sehelai kain yang tidak lentur. Tenunan berfungsi dengan baik untuk ini. Kemudian potong segi empat tepat sehingga kira-kira seperempat inci untuk jahitan sepanjang jalan. Kemudian gunakan sehelai kertas sebagai panduan menyeterika lipatan ke kain. Sekarang kertas itu boleh dikeluarkan. Pada bahagian poket yang akan menjadi bahagian atas lipat itu sendiri tiga kali. Seterika dan sematkan untuk meletakkannya di tempat. Jahit kelihatan sepanjang jalan lipatan. Sekarang ambil sudut dan lipat sehingga pinggir yang tidak dijahit tegak lurus antara satu sama lain dan menjahit rupa sepanjang lipatan yang diseterika yang paling dekat dengan sudut (Gambar sangat membantu). Lakukan ini untuk sudut lain juga. Sekiranya anda mempunyai suis togol keluar dari poket, jahit lubang butang di pangkal poket tempat suis menyentuh. Kemudian jahit lubang butang dan potong bahagian tengahnya. Saya tidak dapat memberikan arahan terperinci kerana saya mempunyai alat yang bagus untuk membuat lubang butang. Pastikan anda membuat lubang sebelum poket dijahit. Ambil beberapa pin dan tolakkannya melalui baju di sudut tanda untuk poket. Ambil poket dan letakkan setiap sudut pada pin (di bahagian dalam baju), tinggalkan seperempat inci untuk jahitan, dan pasangkan ke baju. Setelah poket sudah disematkan. tanggalkan pin yang tidak memegang poket dan jahit poket ke baju. Ulangi untuk semua poket. Untuk poket besar yang memegang skrin tinggalkan celah untuk wayar di bahagian bawah poket. Untuk meletakkan lubang di baju, tandakan tempat itu dan ambil seterika di belakang (dengan bahagian yang lebih berkilau pada kain) dan seterika. Kemudian, untuk lubang kecil (seperti yang saya gunakan untuk beralih suis), buat lubang butang. Untuk lubang yang lebih besar, tandakan garis besar dan gunakan jahitan zigzag di sepanjang garis (atau lekuk atau apa yang anda ada) dan potong bahagian tengahnya. Sekiranya anda mahu, anda boleh menggunakan suspender untuk menahan berat poket, kedua klip memegang poket di bahagian depan dan klip belakang ke seluar. Saya juga mendapat sedikit lengan kain yang dijahit di bahagian suspender yang akan menyentuh kulit saya. Dua baju boleh menjadi sedikit panas, jadi saya memilih dan menggunakan lengan kain kecil.

Langkah 7: Pengaturcaraan

Pengaturcaraan
Pengaturcaraan

Dan inilah kodnya. Terdapat beberapa bahagian yang dikomen dengan baik tetapi sebahagian besarnya tidak. Sekiranya anda mempunyai soalan mengenai bahagian yang berbeza, anda boleh memberi saya nombor baris (dengan #sertakan sebagai baris nombor satu) atau memberi saya salinan baris dan fungsi di mana ia berada (seperti gelung () atau compMovePaddle ()) dan saya akan berusaha sebaik mungkin untuk menerangkannya kepada anda, kemudian tambahkan komen pada kod yang menerangkannya. #include #define PIN 6 // mengatakan yang merupakan pin input untuk permainan int buttonPin = 40; // menentukan skor, disimpan dalam tatasusunan bianari kerana ini adalah skor pemain inti esier [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // menentukan arah bola int bvd = 0; // 0 turun, 1 naik int bhd = 0; // 0 betul, 1 kiri // menentukan kedudukan bola int bvp = 8; int bhp = 6; // memeriksa untuk melihat apakah bola dalam mod pantas boolean fast = false; // memeriksa apakah itu skor. boolean cIsPoint = false; boolean pIsPoint = false; // kedudukan dayung int cPaddle = 0; int pPaddle = 0; lama sebelumnyaMillis = 0; lama sebelumnyaMillisForComp = 0; // tetapkan masa kelewatan untuk bola bergerak pantas dan perlahan "Int" dalam normInt dan fastInt adalah untuk selang int normInt = 50; int fastInt = 10; // digunakan untuk memeriksa kemenangan. 1 adalah kemenangan pemain, -1 dalam kemenangan komputer, dan 0 adalah apa-apa yang berlaku namun int menang = 0; // untuk menghilangkan bug. digunakan dalam pernyataan addOne dan tempat lain. int yang = 0; // Perkara yang dipaparkan sebelum dimulakan, -1 adalah pelarian 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}; // jika anda menang 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}; // jika anda kehilangan int anda Kehilangan = {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}; // menyiapkan jalur led Adafruit_NeoPixel strip = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // menyiapkan, menjadikan pin 40 untuk input, memulakan jalur, memaparkan // mesej dan menunjukkannya. batal persediaan () {pinMode (buttonPin, INPUT); jalur.begin (); untuk (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); kelewatan (5000); while (digitalRead (buttonPin) == RENDAH) {// Ini perangkap! (sehingga butang ditekan.)}} gelung kosong () {clearScreen (); // melukis dayung untuk menunjukkan skor untuk (int i = 0; i <5; i ++) {if (pemainScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } lain jika ((pemain Player == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } jika (compScore == 1) {strip.setPixelColor (5 + i, strip. Color (255, 255, 255)); } lain jika ((compScore == 0)) {strip.setPixelColor (5 + i, strip. Color (255, 0, 0)); }} // menarik bola di kedudukan permulaannya strip.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // memutuskan sama ada bola naik atau turun semasa (pIsPoint == false && cIsPoint == false) {clearScreen (); arus panjang yang tidak ditandatanganiMillis = millis (); // memberikan kedudukan pemain paddle pPaddle = checkPaddlePos (); // periksa kedudukan seterusnya checkNext (); // menggerakkan bola jika (cepat == palsu) {if (currentMillis - sebelumnyaMillis> normInt) {sebelumnyaMillis = currentMillis; bergerakBall (); }} lain jika (cepat == benar) {if (currentMillis - sebelumnyaMillis> fastInt) {sebelumnyaMillis = currentMillis; bergerakBall (); }} // lukis bola jika (bhp% 2! = 0) {strip.setPixelColor (bhp * 15 + 14-bvp, strip. Color (255, 255, 255)); } lain jika (bhp% 2 == 0) {strip.setPixelColor (bhp * 15 + bvp, strip. Color (255, 255, 255)); } // pergerakan komputer paddle compMovePaddle (); // draw's the paddles drawPaddles (); // sebenarnya meletakkan semuanya.strip.show (); // memeriksa untuk melihat apakah mata telah dijaringkan jika (pIsPoint == true) {yang = 0; bhd = 0; tambahOne (); rehat; } lain jika (cIsPoint == true) {yang = 1; bhd = 1; tambahOne (); rehat; }} jika (win == 1) {clearScreen (); untuk (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } kelewatan (5000); untuk (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } menang = 0; } lain jika (win == -1) {clearScreen (); untuk (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } kelewatan (5000); untuk (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } menang = 0; } pIsPoint = salah; cIsPoint = salah; bvp = 8; bhp = 6; bvd = rawak (0, 2); // 0 turun, 1 naik cepat = salah; } // AI untuk permainan void compMovePaddle () {unsigned long currentMillis = millis (); jika (currentMillis - sebelumnyaMillisForComp> 51) {sebelumnyaMillisForComp = currentMillis; jika (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } lain jika (bvp = 0 && cPaddle <10) {cPaddle ++; } lain jika (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } lain jika (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // menggerakkan bola batal bergerakBall () {if (bhd == 0) {bhp--; } lain jika (bhd == 1) {bhp ++; } jika (bvd == 0) {bvp--; } lain jika (bvd == 1) {bvp ++; }} // menambah satu pada tatasusunan. Sekiranya yang mana satu adalah 0 ia menambah skor pemain. Sekiranya ia 1, komputer akan menambah addOne () {if (yang == 0) {// jika itu skor pemain // Tambah satu. Ini adalah cara sederhana yang saya tahu bagaimana. untuk (int i = 0; i <5; i ++) {// loop if (playerScore == 0) {// jika nilai itu adalah zero playerScore = 1; // jadikan 1 break; // kemudian pergi} lain {// jika itu 1 pemainScore = 0; // jadikan ia sifar dan gelung}}} yang lain jika (yang == 1) {untuk (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; rehat; } lain {compScore = 0; }}} // Memeriksa apakah ada yang menang. jika (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {win = -1; } lain jika (pemainScore [0] == 1 && skor pemain [2] == 1 && skor pemain [4] == 1) {win = 1; }} // periksa bola kedudukan seterusnya kosongkan checkNext () {// check untuk melihat apakah mata telah dijaringkan jika (bhp == 13) {pIsPoint = true; } lain jika (bhp == 0) {cIsPoint = true; } // jika mata telah dijaringkan daripada ketinggalan keseluruhan perkara ini jika (pIsPoint == false || cIsPoint == false) {// memeriksa bola menegak jika (bvp + bvd == 15) {bvd = 0; } lain jika (bvp + bvd == 0) {bvd = 1; } // memeriksa bola secara mendatar jika (bhp + bhd == 13) {// pertama di sisi komputer jika (bvp> = 10-cPaddle && bvp <= 10-cPaddle + 4) {jika (bhd == 1) {bhd = 0; } lain jika (bhd == 0) {bhd = 1; } cepat = salah; } lain jika (bvp + bvd == 10-cPaddle || bvp + bvd == 10-cPaddle + 5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } lain jika (bvd == 1) {bvd = 0; } bhd = 1; } lain jika (bvp == 0 || bvp == 14) {bhd = 1; } cepat = salah; }} lain jika (bhp + bhd == 1) {// maka di sisi pemain jika (bvp> = pPaddle && bvp <= pPaddle + 4) {// adakah memukul dayung di tempat yang normal? // lantun bola! jika (bhd == 1) {bhd = 0; } lain jika (bhd == 0) {bhd = 1; }} lain jika (bvp + bvd == pPaddle || bvp + bvd-5 == pPaddle) {// adakah memukul dayung di sudut jika (bvp! = 0 && bvp! = 14) {// adakah itu tidak naik tinggi atau rendah rendah? // Lambung bola! jika (bvd == 0) {bvd = 1; } lain jika (bvd == 1) {bvd = 0; } bhd = 1; pantas = benar; } lain jika (bvp == 0 || bvp == 14) {// adakah itu naik tinggi atau turun rendah? // lantun bola! bhd = 0; fast = true; // tetapkan nilainya untuk kemudian membuat bola bergerak cepat}}}}} int checkPaddlePos () {// membaca pot dan memutuskan kedudukan dayung sesuai jika (analogRead (A15) <93) {return 0; } lain jika (analogRead (A15) <186) {return 1; } lain jika (analogRead (A15) <279) {pulangan 2; } lain jika (analogRead (A15) <372) {pulangan 3; } lain jika (analogRead (A15) <465) {pulangan 4; } lain jika (analogRead (A15) <558) {pulangan 5; } lain jika (analogRead (A15) <652) {pulangan 6; } lain jika (analogRead (A15) <745) {pulangan 7; } lain jika (analogRead (A15) <837) {pulangan 8; } lain jika (analogRead (A15) <= 931) {return 9; } lain jika (analogRead (A15) <= 2014) {pulangan 10; }} kosongkan drawPaddles () {// draw adalah dayung di tempat yang betul dan memaparkan skor pada dayung untuk (int i = 0; i <5; i ++) {if (pemainScore == 1) {jalur. setPixelColor (pPaddle + i, strip. Color (255, 255, 255)); } lain jika ((pemainScore == 0)) {strip.setPixelColor (pPaddle + i, strip. Color (255, 0, 0)); } if (compScore == 1) {strip.setPixelColor (199 + cPaddle-i, strip. Color (255, 255, 255)); } lain jika ((compScore == 0)) {strip.setPixelColor (199 + cPaddle-i, strip. Color (0, 255, 0)); }}} batal clearScreen () {untuk (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0)); } strip.show (); }

Langkah 8: Produk Selesai

Produk Selesai
Produk Selesai
Produk Selesai
Produk Selesai

Dan di sana anda pergi, baju siap!

Disyorkan: