Hari ini kita mempunyai sebuah projek dengan konsol permainan mikro, yang boleh diulangi sesiapa sahaja.
Bahan dan komponen yang diperlukan:
Manual ini diambil dari saluran YouTube AlexGyver. Mikrokontroler untuk projek ini memerlukan ini:
Ini adalah Attiny85 dalam pakej DIP, ia akan mencukupi untuk kami. Agar tidak menjualnya, kami mengambil soket yang dipanggil.
Kami juga memerlukan paparan dengan Aliexpress, OLED dengan resolusi 128 hingga 32 piksel.
Pins juga berguna.
Butang yang akan kami gunakan di sini ialah:
Sudah tentu, anda boleh mengambil papan kekunci, tetapi mereka perlu dimuktamadkan, tetapi saya tidak mahu memotong dan memakai pateri. Petak bateri adalah jenis ini:
Dan kami akan memasang konsol permainan kami dengan papan roti (jika anda mahu, anda boleh membuat papan sendiri). Kami akan menghidupkan program pemacu USBasp, tetapi mana-mana AVR akan dilakukan.
Rajah rajah pendawaian Komponen akan seperti berikut:
Paparan ini menyambung kepada pin bas I2C mikropengawal. Kami menyambungkan butang ke pin percuma lain. Juga tambah suis untuk menghidupkan / mematikan sistem. Dan pada dasarnya itu semua, ia tetap untuk menyambung kuasa.
Perisian firmware dimuatkan ke dalam mikropengawal oleh programmer mengikut skema berikut:
Sekarang mari kita mulakan pada perhimpunan dan sediakan semua elemen pada papan roti. Mari cuba untuk berhimpun dan lihat bagaimana semuanya kelihatan.
Ternyata cukup pertapa. Tidak buruk. Bahagian kelebihan papan roti boleh dibuang.
Kini kami membaiki semua komponen hanya dengan menyeterika kaki mereka.
Sekarang anda perlu menyambungkan kesimpulan mengikut skema. Untuk tujuan ini, pengarang mengesyorkan menggunakan wayar nipis Cina yang nipis.
Dan untuk kemudahan, anda boleh menggunakan gambarajah sambungan cermin ini.
Kawat-kawat ini mempunyai penebat nipis yang boleh digunakan secara langsung oleh mereka. Penebat itu sendiri akan mencair dan wayar akan dipateri.
Kemudian teruskan untuk menyegel petak bateri dan suis. Kompartmen juga mesti diperbaiki dengan senjata gam panas.
Baiklah, itu sahaja, sistem itu dipasang, ia tetap untuk memuat turun firmware. Kami akan menyalakan "batu" secara berasingan dengan menyambungkannya kepada pemrogram pada papan roti.
Perisian tegar, seperti semua projek pengarang, berada dalam domain awam dan boleh dimuat turun dari. Juga pada halaman projek, anda akan dapati gambar rajah dan semua maklumat lain yang diperlukan mengenai projek ini.
Kami tidak akan menghiraukan muat turun secara terperinci, jika sesuatu tidak jelas, maka anda sentiasa dapat melihat arahan terperinci untuk penulis.
Untuk firmware, pasang sahaja Arduino Idea, pasangkan kernel untuk bekerja dengan mikropenroller siri Attiny, pilih papan, pilih pengaturcara.
Kemudian kami pilih frekuensi 8 atau 16 MHz, buka tab "Alat", cari dan pilih "Record Loader".
Tidak ada loader di sana, tetapi mikrokontroler akan ditala ke kekerapan yang diperlukan. Kemudian pilih tab "Lakaran" - "muat turun melalui pemrogram". Dan kita tunggu sehingga lakaran dimuatkan ke dalam mikrokontroler.
Kini kami mengeluarkan "batu" dan memasukkannya ke tengah-tengah konsol permainan mini kami.
Seperti yang anda lihat, ia berfungsi! Dan sekarang mari kita lihat dengan lebih dekat apa yang kita ada dalam firmware. ATtiny85 adalah mikrokontroler dengan 512 bait RAM, yang sangat kecil. 99% daripada perpustakaan untuk bekerja dengan paparan sedemikian menggunakan penampan di sebelah mikropengawal untuk menukarkan semula gambar dengan betul, kerana paparan ini tidak dapat membaca data dari penimbal sendiri, dan ia ada di sana dengan cara.
Penampan untuk paparan ini 128 * 32 piksel akan mengambil 512 bait, jika kita mahu mengingati keadaan setiap bit, iaitu piksel.
Sebagai tambahan kepada penampan, kita juga perlu menyimpan data lain, jadi opsyen ini tentu tidak sesuai dengan ingatan saiz sedemikian.
Oleh itu, ia telah memutuskan untuk menurunkan resolusi paparan kepada 64 * 16 piksel dengan segi empat segi empat piksel.
Penulis bekerja dengan paparan ini secara langsung dan berjaya melaksanakan jawapannya dengan jayanya. Lakaran mungkin berguna bagi seseorang yang ingin bekerja dengan paparan ini menggunakan Attiny.
Sekarang mengenai permainan itu sendiri. Ia berfungsi dengan mudah. Bola bergerak pada pemasa berasingan, pergerakannya terdiri daripada memadam satu titik dengan koordinat yang sama dan menambah titik baru dalam koordinat baru.
Pengiraan koordinat hanyalah penambahan nilai halaju kepada koordinat dalam sistem paparan.
Apabila bola melampaui dinding mendatar, ia hanya memantul mereka, mengubah komponen menegak laju ke sebaliknya, iaitu, dengan tanda tolak (-).
Di samping itu, program ini menyemak sempadan menegak padang permainan, jika bola memukul raket (dengan baik, atau apa sahaja yang anda panggil dengan betul), maka ia melantun, dan sudut bouncing adalah rawak.
Jika bola memecah dinding di belakang raket, oleh itu, pemain telah kehilangan pusingan semasa, dan lawannya menerima titik.
Pergerakan raket pemain dilaksanakan dengan cara yang sama seperti pergerakan bola, iaitu, raket lama dipadamkan dan yang baru ditarik, sudah dengan koordinat baru. Koordinat berubah apabila anda mengklik pada butang.
Oleh itu, ternyata lebih cepat daripada membersihkan seluruh paparan dan menjadikan semua unsur lagi.
Sekarang untuk raket lawan. Ia dikawal oleh AI (kecerdasan buatan).
Nah, kecerdasan buatan itu sudah tentu dikatakan dengan lantang, tetapi perisikan ini melakukan perkara yang sangat sederhana, iaitu, ia membuat raket bergerak ke arah di mana bola sekarang, sambil berusaha menyelaraskan pusatnya di sepanjang paksi vertikal dengan koordinat vertikal bola. Untuk benar-benar mengalahkan lawan seperti itu, penulis membuatnya perlahan, iaitu, dia mengira langkah seterusnya seterusnya oleh pemasa, dan dengan itu mungkin tidak mempunyai masa untuk menangkap bola dan dengan itu menolaknya.
Juga dalam permainan dilaksanakan mekanik meningkatkan kerumitan. Setiap 10 mata yang memihak kepada pemain, kelajuan bola meningkat. Bersama ini, kelajuan tindak balas AI (lawan) juga semakin meningkat.
Akibatnya, di sini adalah Pong kecil yang mudah. Bukan untuk apa-apa, permainan video ini telah dibangunkan sangat awal, kerana walaupun seorang pemrogram pemula dapat menulisnya. Tetapi walaupun kesederhanaan yang jelas projek itu, kekecohan dengan paparan Cina mengambil masa kira-kira 20 jam dari penulis. Pada masa yang sama, beliau tidak mengambil kira masa yang dihabiskan untuk menulis kod permainan itu sendiri dan aliran kerja lain mengenai debugging dan penubuhan litar.
Dalam hal ini, buzz itu sendiri adalah proses pemasangan, bukan aplikasi itu.Membangun permainan, walaupun mereka yang mudah, boleh menjadi sangat menarik. Terutama apabila anda cuba untuk mendorong mereka ke dalam mikropengawal yang sangat kecil. Dan apabila paparan Cina menanti anda di sudut ...
Itu sahaja. Terima kasih atas perhatian anda. Lihat awak tidak lama lagi!
Video pengarang: