Daftar Isi:

Tutorial Perakitan AVR 11: 5 Langkah
Tutorial Perakitan AVR 11: 5 Langkah

Video: Tutorial Perakitan AVR 11: 5 Langkah

Video: Tutorial Perakitan AVR 11: 5 Langkah
Video: cara pemasangan AvR yg aman 2024, November
Anonim
Tutorial Perakitan AVR 11
Tutorial Perakitan AVR 11
Tutorial Perakitan AVR 11
Tutorial Perakitan AVR 11
Tutorial Perakitan AVR 11
Tutorial Perakitan AVR 11

Selamat datang di Tutorial 11!

Dalam tutorial singkat ini, kita akhirnya akan membangun bagian pertama dari proyek akhir kita.

Hal pertama yang harus Anda lakukan adalah pergi ke langkah terakhir dari tutorial ini dan tonton videonya. Kemudian kembali ke sini. [jeda saat Anda melakukan itu ….] Oke. Sekarang lanjutkan.

Jika Anda belum menebak, kami sedang membangun game Craps! Tentu saja, hanya karena saya sedang membuat game dadu, bukan berarti Anda harus melakukannya. Saya harap itu tidak perlu dikatakan. Bagaimanapun juga, sangat berguna untuk menggunakan mikrokontroler untuk mengontrol tampilan tersegmentasi, dll., dan untuk berkomunikasi satu sama lain -- itulah yang terutama kami lakukan di sini. Anda dapat menulis kode untuk menggunakannya sesuka Anda. Untuk saat ini saya akan mengkodekan mereka untuk bermain dadu meskipun saya dapat memutuskan nanti untuk menggunakan kembali tampilan tersegmentasi untuk melakukan sesuatu yang lain.

Alasan saya membangun ini adalah karena saya berpikir bahwa pada akhirnya saya mungkin menginginkan meja dadu Vegas ukuran penuh di "gua manusia" saya di ruang bawah tanah rumah saya. Namun, tidak ada teman saya yang memiliki ide sedikit pun bagaimana menangani, mencetak, atau membayar taruhan dan gulungan dadu. Jadi saya pikir akan keren jika meja melakukan semua pekerjaan dealer untuk kita! Ketika kita memasang taruhan di atas meja, kita juga dapat menekan tombol kecil di sebelah kotak tempat chip kita berada untuk menunjukkan berapa banyak yang ditempatkan di sana, kemudian mikrokontroler dapat menghitung pembayaran untuk kotak itu setelah dadu dilempar dan menampilkannya. Saya masih tidak yakin bagaimana saya akan mengatur aspek ini. Satu pemikiran yang saya miliki adalah bahwa setiap orang akan diminta untuk menempatkan semua taruhan mereka secara bergiliran sehingga pengontrol akan mencatat di mana uang setiap orang berada sebelum merekam pemain berikutnya dan seterusnya. Kemudian setelah roll, komputer dapat menunjukkan pembayaran pada setiap kotak dan juga dapat menyimpan "total uang tunai" untuk setiap pemain.

Untuk salah satu gambar sampul tutorial ini saya hanya harus menggunakan gambar saya menarik 5 ace di meja poker di Vegas musim panas ini. Hehe. Manjakan aku.

Berikut ini tautan ke koleksi lengkap tutorial assembler AVR saya:

Langkah 1: Sial

Sial!
Sial!
Sial!
Sial!
Sial!
Sial!

Dalam tutorial ini kita hanya akan membuat bagian paling sederhana dari game Craps terakhir. Ini disebut "The Pass Line" dan Anda bisa bertaruh untuk itu. Anda dapat mempelajari semua yang perlu Anda ketahui tentang bagian "garis lulus" dari permainan dengan menonton video instruksional singkat 2 menit yang saya lampirkan pada langkah ini.

Kami akan membuat tampilan 4 digit lainnya yang akan melacak Uang Dealer dengan cara yang sama seperti tampilan 4 digit kami saat ini yang melacak Uang Pemain. Dealer akan mulai dengan $20 dan pemain akan mulai dengan $20 (total uang yang mungkin dalam permainan adalah $9999 -- maksimum tampilan 4 digit kami, tetapi kami hanya membutuhkan $20 untuk bagian pertama dari permainan ini atau sebaliknya. akan membosankan secara ekstrim dan sulit untuk menang atau kalah dalam jumlah waktu yang layak). Jika pemain mengambil semua uang dealer, pemain menang. Jika pemain kehilangan semua uangnya maka dealer menang.

Bagaimana Anda menang atau kehilangan uang? Nah, bagi Anda yang pernah bermain Craps, melihat orang “menembak dadu” di jalan, atau melihatnya bermain melawan kasino di Vegas, pasti sudah tahu. Untuk yang lainnya, izinkan saya memberi Anda deskripsi singkat tentang bagian "pass line" dari game yang akan kita koding hari ini.

Craps telah dimainkan selama ratusan tahun, sejak zaman perang salib. Itu dimainkan oleh pasukan di parit Perang Dunia II, dimainkan di jalanan, dimainkan di kasino dan ruang perjudian. Itu dimulai hanya dengan garis lulus dan semua hal lain ditambahkan kemudian. Kami akan mengikuti perkembangan yang sama ini.

Cara kerja garis lulus adalah ini. Anda memasang taruhan dan kemudian melempar dadu. Gulungan pertama disebut "gulungan keluar". Jika Anda mendapatkan 2 (mata ular), 3 (ace deuce), atau 12 (mobil box) pada roll keluar, Anda kehilangan taruhan Anda dan itu disebut "craps". Jika Anda menggulung 7 (alami) atau 11 (a yo, atau yo-leven), Anda menang. Jika Anda menggulung nomor lain maka nomor ini menjadi "titik" Anda. Setelah "poin" ditetapkan, Anda terus melempar dadu dengan tujuan memukul poin lagi sebelum menggulirkan angka 7. Jika Anda mendapatkan poin sebelum angka 7 dilempar, Anda memenangkan uang genap. Jadi taruhan dolar memenangkan Anda satu dolar dari dealer. Jika Anda mendapatkan 7 sebelum poin Anda digulirkan, ini disebut "tujuh keluar" dan Anda kehilangan taruhan Anda ke dealer.

Setelah itu Anda mulai lagi. Pasang taruhan pada garis lulus dan lempar dadu, 7 atau 11 menang, 2, 3, atau 12 kalah.

Ada banyak lagi jenis taruhan, "jangan lulus", "lewati odds", "tidak lulus", "ayo taruhan", "jangan ikut taruhan", "bidang", "tanduk", " cara yang sulit", dll dll. Anda dapat menemukan detailnya di sini:

en.wikipedia.org/wiki/Craps

Seperti yang saya katakan di atas, untuk saat ini, kami hanya akan mengkodekan bagian garis lulus dari permainan yang mereka miliki di masa ketika anak-anak melempar dadu ke dinding untuk uang makan siang satu sama lain dan di sinilah kita akan mulai.

Namun, sebelum kita mulai mengkodekan barang, mari kita buat tampilan uang tunai dealer. Untuk ini, saya ingin menggunakan salah satu tampilan 4 digit yang lebih besar yang bisa Anda dapatkan dari Sparkfun atau di tempat lain. Mulai sekarang saya tidak akan membuat daftar materi pada tutorial ini. Jika Anda benar-benar telah membangun semuanya bersama saya maka Anda sudah tahu di mana mendapatkan bahan dan apa itu. Tidak ada gunanya bagi saya untuk mencantumkannya atau berapa harganya.

Jadi mari ambil salah satu papan prototyping kami, layar 4 digit besar, ATmega328p lain untuk mengontrol tampilan itu, dan buat seperti yang kami lakukan dengan rol dadu, dan tampilan pemutar sebelumnya. Kami juga akan melampirkan header untuk daya, untuk pemrograman, dan untuk komunikasi TWI seperti yang lainnya.

Langkah 2: Tampilan Uang Tunai Dealer

Tampilan Uang Tunai Dealer
Tampilan Uang Tunai Dealer
Tampilan Uang Tunai Dealer
Tampilan Uang Tunai Dealer
Tampilan Uang Tunai Dealer
Tampilan Uang Tunai Dealer

Kami membuat tampilan dealer dengan cara yang sama seperti yang kami lakukan dengan tampilan 4 digit pemain di tutorial terakhir. Satu-satunya perbedaan adalah ukurannya lebih besar, dan pinnya lebih sedikit, jadi kami akan mengaturnya dan memasangnya secara berbeda.

Saya telah melampirkan gambar kabel layar ini. Anda dapat melihat bahwa itu lebih besar dan memiliki lebih sedikit pin daripada tampilan playercash kami. Gambar dari halaman sparkfun di mana saya mendapatkan tampilan dan itu menunjukkan pin mana yang merupakan kekuatan untuk setiap digit dan pin mana yang mengontrol setiap segmen dalam satu digit.

Seperti biasa, Anda harus mulai dengan mencolokkan layar ke papan tempat memotong roti prototipe dan menguji setiap segmen untuk memastikan bahwa Anda memahami cara kabelnya. Kemudian Anda harus menghubungkannya ke pin mikrokontroler AVR di papan tempat memotong roti Anda dan menjalankannya dari sana sampai semua kode kami berfungsi dalam tutorial ini. Akhirnya, pada akhirnya, Anda harus membuat papan eksternal dan menyoldernya. Kemudian ketika Anda menguji produk akhir, Anda akan tahu bahwa masalah apa pun berasal dari pekerjaan penyolderan dan pemotongan Anda dan bukan kodenya. Juga, jangan lupa aksioma terkenal dari pertukangan "mengukur dua kali, dan memotong sekali", atau dalam hal membuat papan sirkuit: "potong dua kali, solder sekali." Seperti yang Anda lihat di gambar, saya akhirnya mogok dan membeli lampiran Dremel yang sempurna untuk pekerjaan semacam ini. Sebuah "Set Titik Berlian". Biayanya 5 dolar tetapi itu jauh lebih murah daripada biaya Terapi Manajemen Kemarahan yang datang dengan meningkatkan pekerjaan pemotongan saya terlalu sering berturut-turut.

Saya menggunakan resistor 330 ohm untuk tampilan ini. Pin COM melewati resistor ke GND dan daya mengalir ke segmen mana pun yang ingin Anda tampilkan. Saya akan menggunakan PC0 melalui PC3 untuk COM pin dan PB0, PB1, PB2, PB3, PB4, PD5, PD6, dan PD7 untuk segmen.

Inilah kunci untuk memaksimalkan peluang Anda untuk melakukannya dengan benar:

  1. memetakan sirkuit
  2. memotong sirkuit
  3. periksa kabel Anda
  4. pasang resistor, tutup, dan osilator kristal
  5. periksa koneksi dan kabel lagi
  6. pasang kabel eksternal
  7. pasang mikrokontroler
  8. periksa kabelnya lagi
  9. pasang layar 4 digit
  10. periksa setiap digit dengan sepasang kabel dari papan tempat memotong roti
  11. sisihkan dan tulis kodenya, karena mengetahui bahwa Anda mungkin harus mengubah beberapa hal nanti dan berharap Anda tidak menutupi koneksi yang perlu dipotong.

Saya telah menunjukkan serangkaian gambar pekerjaan kabel saya. Harap sadari bahwa Anda bebas untuk mengirim kabel sesuka Anda. Sangat mungkin Anda dapat menemukan peta yang lebih baik daripada saya dan Anda harus menggunakannya. Tidak ada dalam tutorial ini yang bergantung pada bagaimana komponen Anda terhubung, selama mereka memiliki port output yang benar. Yang mengingatkan saya. Perhatikan bahwa sekarang ada dua header menuju SDA dan dua menuju SCL? Menurut Anda mengapa kami melakukan itu?

Sekarang, seperti yang Anda lihat dengan kode terlampir di akhir tutorial, saya cukup memotong dan menempelkan kode dari tampilan pemutar tutorial terakhir ke file baru untuk tampilan dealer. Kemudian saya memeriksa dan mengubah tabel pencarian "segmen" agar sesuai dengan peta pin baru dengan mencatat bahwa untuk tampilan ini pin "com" di-ground dan pin segmen adalah 5V daripada sebaliknya seperti untuk tampilan lainnya. Saya juga mengubah inisialisasi port untuk mencerminkan kabel baru, saya mengubah alamat tampilan dealercash menjadi 0b1000000 sehingga rol dadu dapat berbicara dengannya, saya mengubah subrutin "siklus" sehingga mematikan PC0 melalui pin "com" PC3 ketika ingin memberi daya pada segmen tertentu dan saya mengubah "digit" yang ditampilkan karena kabel baru memiliki digit dalam urutan yang berlawanan (jika Anda membiarkannya seperti semula dan mencoba menampilkan 1234 itu akan muncul sebagai 4321 sebagai gantinya).

Berikut adalah peta register baru:

(PD7, PD6, PD5, PB4, PB3, PB2, PB1, PB0) = (titik desimal, c, g, b, f, a, e, d)

dimana 1 ON dan 0 OFF.

Sekarang uji tampilan dengan terlebih dahulu mengatur nilai tampilan yang diinisialisasi ke berbagai angka sehingga ketika dihidupkan menunjukkannya. Ini akan memberi tahu Anda jika semuanya berfungsi dengan benar.

Kemudian ubah kode dicerroller sehingga menggunakan alamat baru untuk slave, kaitkan keduanya, dan jalankan. Ini harus bertindak persis seperti yang kita lakukan di tutorial terakhir kecuali bahwa gulungan dadu sekarang muncul di layar baru.

Besar! Sekarang kita siap untuk menulis kode rol dadu baru sehingga berkomunikasi dengan tampilan pemain dan tampilan dealer.

Langkah 3: Garis Besar Program

Garis Besar Program
Garis Besar Program
Garis Besar Program
Garis Besar Program
Garis Besar Program
Garis Besar Program

Cara kode akan bekerja untuk permainan kami adalah kami akan menjaga rol dadu sebagai master dan menambahkan tampilan dealer sebagai budak tambahan. Rol dadu akan mengontrol permainan dan akan mengirimkan perubahan yang dihasilkan dalam bentuk uang tunai ke dealer dan pemain ditampilkan setelah setiap lemparan. Untuk saat ini kita hanya akan memiliki taruhan garis lulus menjadi $10 setiap kali jadi kita tidak perlu terlalu rumit dulu dengan pemain mengubah taruhannya. Nanti, setelah mekanismenya bekerja, kami akan menambahkan pengontrol lain yang akan menjadi master tambahan yang akan mengontrol taruhan dan pembayaran dan penggulung dadu kami akan tetap menjadi master tetapi hanya digunakan untuk melempar dadu. Ini akan memungkinkan kita untuk masuk ke arbitrase TWI, tabrakan, dan aspek penting lainnya dari komunikasi serial ketika Anda memiliki banyak master dan slave. Kami juga akan menambahkan sejumlah tampilan 7 digit tunggal dengan tombol tekan di bawahnya yang memungkinkan kami bertaruh pada jenis gulungan lain, tetapi semua itu akan datang di tutorial mendatang. Untuk saat ini, kami hanya ingin rol dadu sebagai master, dan keduanya ditampilkan sebagai budak. Saat kita menekan tombol, kode akan memutuskan apakah akan membayar alami, mengambil uang dari dadu, atau bercabang ke serangkaian gulungan "titik" hingga menang atau tujuh keluar.

Mari kita pertama menulis rutinitas budak. Ini sederhana karena yang akan mereka lakukan hanyalah melihat jalur SDA untuk alamat mereka, jika mereka dipanggil, mereka akan membaca nomor baru untuk menampilkan dan menampilkannya. Itu semuanya! Mereka bahkan tidak perlu berbicara kembali dengan master karena master akan melacak total mereka dan melakukan semua perhitungan pembayaran sebelum memperbaruinya. Dalam tutorial mendatang kita akan meminta budak menulis kembali ke master (misalnya ketika kita memiliki 7-digit display tunggal dengan tombol tekan untuk jumlah taruhan, mereka harus memberitahu master berapa banyak yang dipertaruhkan pada setiap tampilan dan jadi kami akan alamat mereka dengan alamat + baca panggilan dengan master dalam "mode penerima master") tetapi kami akan membahasnya pada waktunya.

Untuk saat ini semuanya dipicu oleh penekanan tombol lempar dadu diikuti dengan perhitungan atau penekanan tombol lebih lanjut dan akhirnya pesan ke masing-masing tampilan dengan total baru mereka. Akan ada tes setelah setiap pembayaran untuk menentukan apakah pemain menang atau kalah, dengan kata lain, jika uang dealer menjadi nol setelah lemparan, atau jika uang tunai pemain menjadi nol setelah lemparan (baik dealer atau pemain bisa menjadi negatif karena mereka hanya akan diizinkan untuk bertaruh $10 atau apa pun yang tersisa jika kurang dari $10).

Jadi begitulah cara kerjanya. Mari kita mendapatkan pengkodean.

Langkah 4: Kode Komunikasi Master

Kode Komunikasi Utama
Kode Komunikasi Utama

Kita sekarang dapat menulis komunikasi rutin dari rol dadu. Hal ini juga hampir identik dengan yang kita tulis terakhir kali kecuali bahwa kita akan berkomunikasi dengan dua budak yang berbeda daripada hanya satu. Perhatikan bahwa untuk masing-masing budak kami menggunakan alamat yang berbeda. Anda harus memodifikasi kode sendiri dan kemudian mengujinya dengan setiap alamat dan memastikannya berfungsi seperti tutorial terakhir kecuali dengan masing-masing tampilan terpisah.

Saya akan melampirkan kode untuk setiap komponen yang hanya menampilkan hasil gulungan sehingga dapat digunakan untuk membuat tampilan berfungsi dengan baik dan memeriksa kabelnya.

Pengkodean permainan tidak mengenalkan hal baru sejauh perintah bahasa rakitan atau komponen mikrokontroler AVR dan jadi saya tidak merasa perlu melewatinya baris demi baris. Anda mungkin telah memperhatikan bahwa ketika kami memperkenalkan sesuatu yang baru, saya membahas setiap baris dengan sangat rinci hingga membuat Anda jengkel jika tidak membuat Anda tertidur. Di sisi lain saya tidak akan melakukan itu jika tidak ada yang baru diperkenalkan. Itulah yang terjadi hari ini. Jadi saya pikir Anda sudah siap sekarang untuk bermain dengan kode, membaca kode, menganalisis kode, memahami kode, mengkritik kode, mencemooh kode, dan menertawakan orang yang menulis kode. Jadi saya akan membiarkan Anda pergi ke depan dan melakukan itu. Hampir dapat dipastikan bahwa Anda akan menemukan banyak tempat yang dapat Anda tingkatkan atau paling tidak menyederhanakan apa yang telah saya tulis.

Saya telah, seperti biasa, melampirkan versi terakhir dari kode untuk dua tampilan dan pemain dadu di langkah berikutnya bersama dengan video saya menguji hal itu.

Langkah 5: Kode Akhir dan Video

Saya telah melampirkan video dan 3 program. Anda akan melihat bahwa Anda dapat memperbaiki taruhan dan dealer awal dan uang tunai pemain di bagian atas program dengan pernyataan.equ.

Dalam tutorial berikutnya kami akan menambahkan kemampuan untuk bertaruh pada berbagai hal yang akan membuat permainan lebih menarik. Hal yang menarik tentang Craps modern adalah Anda memiliki banyak cara berbeda untuk bertaruh dan mencoba memaksimalkan peluang Anda. Faktanya, Craps adalah game odds tertinggi di Casino! … JIKA Anda tahu cara memainkannya. Di sisi lain, jika Anda tidak tahu cara bermain maka itu menjadi salah satu permainan odds terendah.

Setelah kami memiliki lebih banyak hal untuk mempertaruhkan uang kami maka saya akan meningkatkan jumlah total uang dalam permainan.

Aku harus menyenangkan!

Sampai jumpa lain waktu!

Direkomendasikan: