Isi kandungan:
- Langkah 1: Craps
- Langkah 2: Paparan Tunai Peniaga
- Langkah 3: Garis Besar Program
- Langkah 4: Kod Komunikasi Induk
- Langkah 5: Kod Akhir dan Video
Video: Tutorial Penyusun AVR 11: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:06
Selamat Datang ke Tutorial 11!
Dalam tutorial ringkas ini, akhirnya kita akan membina bahagian pertama dari projek akhir kita.
Perkara pertama yang harus anda lakukan ialah pergi ke langkah terakhir tutorial ini dan menonton videonya. Kemudian kembali ke sini. [berhenti sementara semasa anda melakukannya….] Baiklah. Sekarang teruskan.
Sekiranya anda belum meneka, kami sedang membina permainan Craps! Sudah tentu, hanya kerana saya sedang membuat permainan craps tentu tidak bermaksud anda harus melakukannya. Saya harap perkara itu berlaku. Bagaimanapun, berguna untuk menggunakan mikrokontroler untuk mengawal paparan bersegmen, dan lain-lain, dan untuk berkomunikasi antara satu sama lain - itulah yang paling kita lakukan di sini. Anda boleh menulis kod untuk menggunakannya mengikut kehendak anda. Buat masa ini saya akan membuat kod untuk bermain craps walaupun saya mungkin akan memutuskan kemudian untuk mengarahkan semula paparan bersegmen untuk melakukan sesuatu yang lain.
Sebab saya membina ini adalah kerana saya berfikir bahawa saya mungkin akhirnya mahu meja sampah Vegas ukuran penuh di "gua lelaki" saya di ruang bawah tanah rumah saya. Walau bagaimanapun, tidak ada rakan saya yang mempunyai sedikit pun idea bagaimana menangani, menjaringkan gol, atau membuat bayaran pertaruhan. Oleh itu, saya fikir akan menyenangkan apabila meja membuat semua peniaga berfungsi untuk kita! Apabila kita meletakkan taruhan di atas meja, kita juga boleh menekan sedikit butang di sebelah petak yang ditunjukkan oleh cip kita berapa banyak yang diletakkan di sana, maka mikrokontroler dapat mengira pembayaran untuk kotak itu setelah dadu bergulung dan memaparkannya. Saya masih belum pasti bagaimana saya akan mengatur aspek ini. Satu pemikiran saya adalah bahawa setiap orang akan diminta untuk meletakkan semua taruhan mereka secara bergantian sehingga pengawal akan mencatat di mana wang setiap orang sebelum merekodkan pemain seterusnya dan seterusnya. Kemudian setelah penggulungan, komputer dapat menunjukkan pembayaran di setiap petak dan juga dapat menyimpan "jumlah tunai" yang berjalan untuk setiap pemain.
Untuk salah satu gambar sampul tutorial ini, saya hanya perlu menggunakan gambar saya menarik 5 ace di meja poker di Vegas musim panas ini. Heheh. Manjakan saya.
Berikut adalah pautan ke koleksi lengkap tutorial penghimpun AVR saya:
Langkah 1: Craps
Dalam tutorial ini kita hanya akan membina bahagian paling mudah dari permainan Craps terakhir. Ini dipanggil "The Pass Line" dan anda boleh bertaruh di atasnya. Anda boleh mengetahui semua perkara yang perlu anda ketahui mengenai bahagian permainan "pass line" dengan menonton video pengajaran pendek 2 minit yang telah saya lampirkan pada langkah ini.
Kami akan membina paparan 4 digit lagi yang akan memantau Wang Tunai Dealer dengan cara yang sama seperti paparan 4 digit semasa kami memantau Tunai Tunai. Dealer akan bermula dengan $ 20 dan pemain akan bermula dengan $ 20 (jumlah wang yang mungkin dalam permainan adalah $ 9999 - maksimum paparan 4 digit kami, tetapi kami hanya memerlukan $ 20 untuk permainan pertama ini atau sebaliknya akan membosankan secara melampau dan sukar untuk menang atau kalah dalam jangka masa yang lumayan). Sekiranya pemain mengambil semua wang peniaga, pemain akan menang. Sekiranya pemain kehilangan semua wangnya maka peniaga akan menang.
Bagaimana anda menang atau kehilangan wang? Nah, anda yang pernah bermain Craps, melihat orang "menembak dadu" di jalan, atau melihatnya bermain melawan kasino di Vegas, sudah pasti tahu. Untuk anda semua, izinkan saya memberi anda penerangan ringkas mengenai bahagian permainan "pass line" yang akan kami kodkan hari ini.
Craps telah dimainkan selama beratus-ratus tahun, sejak zaman perang salib. Itu dimainkan oleh pasukan di parit Perang Dunia II, ia dimainkan di jalanan, dimainkan di kasino dan ruang perjudian. Ia dimulakan hanya dengan garis laluan dan semua perkara lain ditambahkan kemudian. Kami akan mengikuti perkembangan yang sama.
Cara garis laluan berfungsi adalah ini. Anda meletakkan taruhan dan kemudian anda meletakkan dadu. Roll pertama dipanggil "roll out". Sekiranya anda mendapat 2 (mata ular), 3 (ace deuce), atau 12 (kotak kereta) pada gulungan keluar, anda akan kehilangan pertaruhan dan ia disebut "craps". Sekiranya anda melancarkan 7 (semula jadi) atau 11 (yo, atau yo-leven) anda akan menang. Sekiranya anda melancarkan nombor lain maka nombor ini menjadi "titik" anda. Setelah "mata" dibentuk, anda terus menggulung dadu dengan tujuan untuk memukul kembali titik sebelum melancarkan 7. Sekiranya anda mendapat titik sebelum 7 dilancarkan, anda akan mendapat wang yang sama rata. Jadi pertaruhan dolar memenangkan anda satu dolar dari peniaga. Sekiranya anda mendapat 7 sebelum mata anda dilancarkan, ini disebut "tujuh keluar" dan anda kehilangan pertaruhan anda kepada peniaga.
Selepas itu anda mulakan lagi. Letakkan taruhan di garisan hantaran dan gulung dadu, 7 atau 11 kemenangan, 2, 3, atau 12 kalah.
Terdapat banyak lagi jenis pertaruhan, "jangan lulus", "lulus odds", "jangan lulus odds", "come bet", "don't come bet", "field", "horn", " cara sukar ", dll dll. Anda boleh mendapatkan butiran di sini:
ms.wikipedia.org/wiki/Craps
Seperti yang saya katakan di atas, buat masa ini, kami hanya akan membuat kod bahagian garisan permainan yang mereka miliki pada hari ketika anak-anak melemparkan dadu ke dinding untuk wang makan tengah hari masing-masing dan di sinilah kita akan memulakan.
Namun, sebelum kita memulakan pengekodan, mari buat paparan tunai peniaga. Untuk ini, saya ingin menggunakan salah satu paparan 4 digit yang lebih besar yang anda dapat dari Sparkfun atau di tempat lain. Mulai sekarang saya tidak akan menyenaraikan bahan dalam tutorial ini. Sekiranya anda betul-betul membina semuanya bersama saya, maka anda sudah tahu di mana untuk mendapatkan bahan dan apa sebenarnya. Tidak ada gunanya saya menyenaraikannya atau berapa harganya.
Oleh itu, mari ambil salah satu papan prototaip kami, paparan 4 digit yang besar, ATmega328p lain untuk mengawal paparan itu, dan bina seperti yang kami lakukan dengan roller dadu, dan paparan pemain sebelumnya. Kami juga akan melampirkan tajuk untuk kuasa, untuk pengaturcaraan, dan untuk komunikasi TWI seperti yang lain.
Langkah 2: Paparan Tunai Peniaga
Kami membina paparan peniaga dengan cara yang sama seperti paparan 4 digit pemain pada tutorial terakhir. Satu-satunya perbezaan adalah bahawa ia lebih besar, dan ia mempunyai pin yang lebih sedikit, jadi kami akan mengaturnya dan memasang kabel dengan cara yang berbeza.
Saya telah melampirkan gambar pendawaian paparan ini. Anda dapat melihatnya lebih besar dan mempunyai pin lebih sedikit daripada paparan playercash kami. Gambar adalah dari halaman sparkfun di mana saya mendapat paparan dan ia menunjukkan pin mana yang berkuasa untuk setiap digit dan pin mana yang mengawal setiap segmen dalam satu digit.
Seperti biasa, anda harus mulakan dengan memasang paparan ke papan roti prototaip anda dan menguji setiap segmen untuk memastikan bahawa anda memahami bagaimana kabelnya. Kemudian anda harus menghubungkannya ke pin mikrokontroler AVR di papan roti anda dan jalankan dari sana sehingga kami semua kod kami berfungsi dalam tutorial ini. Akhirnya, pada akhirnya, anda harus membina papan luaran dan memasangnya. Kemudian apabila anda menguji produk akhir, anda akan mengetahui bahawa sebarang masalah berpunca dari kerja pematerian dan pemotongan dan bukan kodnya. Juga, jangan lupa aksioma terkenal dari pertukangan "ukuran dua kali, dan potong sekali", atau dalam kes membuat papan litar: "potong dua kali, solder sekali." Seperti yang anda dapat lihat di gambar, saya akhirnya merosot dan membeli lampiran Dremel yang sempurna untuk karya seperti ini. "Set Titik Berlian". Harganya 5 dolar tetapi jauh lebih rendah daripada kos Anger Managment Therapy yang disertakan dengan mengerjakan pekerjaan pemotongan saya terlalu banyak berturut-turut.
Saya menggunakan perintang 330 ohm untuk paparan ini. Pin COM melalui perintang ke GND dan kuasa pergi ke segmen mana yang anda mahu paparkan. Saya akan menggunakan PC0 melalui PC3 untuk pin COM dan PB0, PB1, PB2, PB3, PB4, PD5, PD6, dan PD7 untuk segmen.
Inilah kunci untuk memaksimumkan peluang anda untuk mendapatkannya dengan betul:
- memetakan litar
- potong litar
- periksa pendawaian anda
- pasangkan perintang, penutup, dan pengayun kristal
- periksa sambungan dan pendawaian sekali lagi
- pasangkan wayar luaran
- pasang mikrokontroler
- periksa semula pendawaian
- pasangkan paparan 4 digit
- periksa setiap digit dengan sepasang wayar dari papan roti
- ketepikan dan tuliskan kodnya, mengetahui bahawa anda mungkin perlu mengubah beberapa perkara kemudian dan berharap anda belum menutup hubungan yang perlu dipotong.
Saya telah menunjukkan sebilangan gambar pekerjaan pendawaian saya. Harap sedar bahawa anda bebas untuk menyambung dengan cara yang anda suka. Kemungkinan besar anda dapat mencari peta yang lebih baik daripada saya dan anda semestinya menggunakannya. Tiada apa-apa dalam tutorial ini bergantung pada bagaimana komponen anda disambungkan, selagi ia mempunyai port output yang betul. Yang mengingatkan saya. Perhatikan bahawa sekarang ada dua tajuk yang menuju SDA dan dua yang pergi ke SCL? Mengapa anda menganggap kami melakukan itu?
Sekarang, seperti yang anda lihat dengan kod yang dilampirkan pada akhir tutorial, saya hanya memotong dan menampal kod dari paparan pemain tutorial terakhir ke fail baru untuk paparan peniaga. Kemudian saya melalui dan menukar jadual pencarian "segmen" agar sesuai dengan peta pin baru dengan menyatakan bahawa untuk paparan ini pin "com" dibumikan dan pin segmen adalah 5V dan bukan sebaliknya kerana seperti paparan lain. Saya juga mengubah inisialisasi port untuk mencerminkan pendawaian baru, saya menukar alamat paparan dealercash menjadi 0b1000000 sehingga roller dadu dapat berbicara dengannya, saya mengubah subrutin "cycle" sehingga mematikan PC0 melalui pin "com" PC3 ketika ingin memberi kuasa pada segmen tertentu dan saya menukar "digit" yang dipaparkan kerana pendawaian baru mempunyai digit dalam urutan yang berlawanan (jika anda membiarkannya seperti dulu dan cuba memaparkannya 1234 akan muncul sebagai 4321 sebagai gantinya).
Berikut adalah peta daftar baru:
(PD7, PD6, PD5, PB4, PB3, PB2, PB1, PB0) = (titik perpuluhan, c, g, b, f, a, e, d)
di mana 1 ON dan 0 OFF.
Sekarang uji paparan dengan menetapkan terlebih dahulu nilai awal dari paparan ke pelbagai nombor sehingga apabila dihidupkan menunjukkannya. Ini akan memberitahu anda jika semuanya berfungsi dengan betul.
Kemudian ubah kod diceroller sehingga menggunakan alamat baru untuk hamba, hubungkan mereka, dan jalankan. Ia harus bertindak persis seperti yang kami lakukan dalam tutorial terakhir kecuali bahawa gulungan dadu kini muncul di paparan baru.
Hebat! Sekarang kita sudah bersedia untuk menulis kod roller dadu baru sehingga berkomunikasi dengan paparan pemain dan paparan peniaga.
Langkah 3: Garis Besar Program
Cara kod ini berfungsi untuk permainan kita adalah kita akan menjadikan dadu roller sebagai master dan menambahkan paparan dealer sebagai hamba tambahan. Roller dadu akan mengawal permainan dan ia akan mengirimkan perubahan wang tunai kepada peniaga dan pemain akan muncul selepas setiap gulungan. Buat masa ini kita hanya akan membuat taruhan hantaran menjadi $ 10 setiap kali jadi kita tidak perlu terlalu rumit dengan pemain menukar taruhannya. Kemudian, setelah mekanik berfungsi, kami akan menambah pengawal lain yang akan menjadi master tambahan yang akan mengawal pertaruhan dan pembayaran dan roller dadu kami akan tetap menjadi tuan tetapi hanya digunakan untuk melancarkan dadu. Ini akan membolehkan kita masuk ke arbitrase TWI, pertembungan, dan aspek penting lain dari komunikasi bersiri apabila anda mempunyai banyak tuan dan hamba. Kami juga akan menambah sebilangan paparan 7 digit tunggal dengan butang tekan di bawahnya yang membolehkan kami bertaruh pada jenis gulungan lain, tetapi semua itu akan datang dalam tutorial yang akan datang. Buat masa ini, kami hanya mahukan roller dadu sebagai master, dan kedua-duanya dipaparkan sebagai budak. Apabila kita menekan butang, kod itu akan memutuskan sama ada membayar secara semula jadi, mengambil wang dari omong kosong, atau cabang ke siri gulungan "titik" sehingga menang atau tujuh.
Mari kita tulis dahulu rutin hamba. Ini mudah kerana semua yang akan mereka lakukan ialah menonton garis SDA untuk alamat mereka, jika mereka dipanggil mereka akan membaca nombor baru untuk memaparkan dan memaparkannya. Itu sahaja! Mereka bahkan tidak perlu berbincang dengan tuan kerana tuan akan mengawasi jumlah mereka dan melakukan semua pengiraan pembayaran sebelum memperbaruinya. Dalam tutorial yang akan datang, kita akan meminta hamba menulis semula kepada master (contohnya apabila kita mempunyai paparan 7 digit tunggal dengan butang tekan untuk jumlah pertaruhan, mereka harus memberitahu tuan berapa banyak yang dipertaruhkan pada setiap paparan dan jadi kita akan atasi mereka dengan alamat + baca panggilan dengan tuan dalam "mod penerima utama") tetapi kita akan sampai pada waktunya.
Buat masa ini semuanya dihasut dengan menekan butang dadu roll diikuti dengan perhitungan atau tekan butang lebih lanjut dan akhirnya mesej kepada setiap paparan dengan jumlah baru mereka. Akan ada ujian selepas setiap pembayaran untuk menentukan sama ada pemain telah menang atau kalah, dengan kata lain, jika wang tunai peniaga menjadi sifar setelah satu gulungan, atau jika wang tunai pemain menjadi sifar setelah satu gulungan (baik peniaga atau pemain boleh menjadi negatif kerana mereka hanya dibenarkan bertaruh $ 10 atau yang tersisa jika kurang dari $ 10).
Oleh itu, ia akan berjaya. Mari dapatkan pengekodan.
Langkah 4: Kod Komunikasi Induk
Kita sekarang boleh menulis rutin komunikasi roller dadu. Ini juga hampir sama dengan yang kita tulis kali terakhir kecuali bahawa kita akan berkomunikasi dengan dua hamba yang berbeza dan bukan hanya dengan satu. Perhatikan bahawa untuk setiap hamba kami menggunakan alamat yang berbeza. Anda harus mengubah kodnya sendiri dan kemudian mengujinya dengan setiap alamat dan pastikan ia berfungsi seperti tutorial terakhir kecuali dengan setiap paparan yang berasingan.
Saya akan melampirkan kod untuk setiap komponen yang hanya memaparkan hasil gulungan sehingga dapat digunakan agar paparan berfungsi dengan baik dan memeriksa pendawaian.
Pengekodan permainan tidak memperkenalkan apa-apa yang baru sejauh perintah bahasa pemasangan atau komponen mikrokontroler AVR dan jadi saya tidak merasa seperti saya harus melaluinya baris demi baris. Anda mungkin menyedari bahawa ketika kita memperkenalkan sesuatu yang baru, saya akan melalui setiap baris secara terperinci hingga ke tahap menjengkelkan anda jika tidak membuat anda tidur. Sebaliknya saya tidak akan berbuat demikian sekiranya tidak ada perkara baru yang diperkenalkan. Begitulah keadaannya hari ini. Oleh itu, saya rasa sekarang anda sudah bersedia untuk bermain dengan kod, membaca kod, menganalisis kod, memahami kod, mengecam kod, mengejek kod, dan mentertawakan orang yang menulis kod tersebut. Oleh itu, saya akan membiarkan anda terus maju dan melakukannya. Sudah pasti anda akan menemui banyak tempat yang boleh anda tingkatkan atau sekurang-kurangnya mempermudah apa yang saya tulis.
Seperti biasa, saya melampirkan versi terakhir kod untuk dua paparan dan diceroller pada langkah seterusnya bersama dengan video saya menguji perkara itu.
Langkah 5: Kod Akhir dan Video
Saya telah melampirkan video dan 3 program. Anda akan menyedari bahawa anda boleh memperbaiki taruhan dan wang tunai awal pemain dan pemain di bahagian atas program dengan pernyataan.equ.
Dalam tutorial seterusnya kami akan menambahkan kemampuan untuk bertaruh pada perkara yang berbeza yang akan menjadikan permainan lebih menarik. Perkara menarik mengenai Craps moden ialah anda mempunyai banyak cara untuk bertaruh dan cuba memaksimumkan peluang anda. Sebenarnya, Craps adalah permainan dengan peluang tertinggi di Kasino! … JIKA anda tahu bermain. Sebaliknya, jika anda tidak tahu bermain, ia akan menjadi salah satu permainan dengan peluang paling rendah.
Setelah kita mempunyai lebih banyak perkara untuk mempertaruhkan wang kita maka saya akan menambah jumlah wang dalam permainan.
Saya semestinya seronok!
Jumpa awak lain kali!
Disyorkan:
Tutorial Penyusun AVR 2: 4 Langkah
Tutorial AVR Assembler 2: Tutorial ini adalah kesinambungan dari " AVR Assembler Tutorial 1 " Sekiranya anda belum mengikuti Tutorial 1, anda harus berhenti sekarang dan melakukannya terlebih dahulu. Dalam tutorial ini, kami akan meneruskan kajian pengaturcaraan bahasa pemasangan atmega328p u
Tutorial Penyusun AVR 1: 5 Langkah
AVR Assembler Tutorial 1: Saya telah memutuskan untuk menulis satu siri tutorial mengenai cara menulis program bahasa pemasangan untuk Atmega328p yang merupakan mikrokontroler yang digunakan di Arduino. Sekiranya orang tetap berminat, saya akan terus mengeluarkan satu minggu atau lebih sehingga saya kehabisan
Tutorial Penyusun AVR 6: 3 Langkah
AVR Assembler Tutorial 6: Selamat Datang ke Tutorial 6! Tutorial hari ini akan menjadi pendek di mana kita akan mengembangkan kaedah mudah untuk menyampaikan data antara satu atmega328p dan yang lain menggunakan dua port yang menghubungkannya. Kami kemudian akan mengambil roller dadu dari Tutorial 4 dan Daftar
Tutorial Penyusun AVR 8: 4 Langkah
Tutorial 8 Assembler AVR: Selamat Datang ke Tutorial 8! Dalam tutorial ringkas ini, kita akan mengambil sedikit perbezaan daripada memperkenalkan aspek baru pengaturcaraan bahasa pemasangan untuk menunjukkan cara memindahkan komponen prototaip kita ke "dicetak" " yang terpisah papan litar
Tutorial Penyusun AVR 7: 12 Langkah
Tutorial AVR Assembler 7: Selamat Datang ke Tutorial 7! Hari ini kita akan pertama kali menunjukkan cara membersihkan papan kekunci, dan kemudian menunjukkan cara menggunakan port input Analog untuk berkomunikasi dengan papan kekunci. Kami akan melakukan ini menggunakan gangguan dan wayar tunggal sebagai input. Kami akan memasang papan kekunci sehingga