Kita semua biasa dengan dadu dan sering bermain permainan LUDO atau SANP SIDI (Ular & Tangga) dengan menggunakan dadu. Dice adalah kotak padat jenis squire yang mengandungi 6 nombor berbeza di semua sisinya. Kami melempar dadu ke permukaan untuk mendapatkan nombor rawak semasa bermain permainan. Dalam projek ini, kami telah mencuba menirunya dengan dadu digital menggunakan papan arduino uno. Sebagai ganti membuang dadu, di sini kita perlu menekan butang untuk mendapatkan nombor rawak antara 0 hingga 6.
Komponen yang Diperlukan
- Arduino UNO
- Paparan tujuh segmen (Anode Biasa)
- Tekan butang
- Menyambung wayar
- Papan roti
- Perintang 1 k
- Bekalan kuasa
Rajah dan Penjelasan Litar
Seperti yang ditunjukkan dalam rangkaian dadu digital di atas, arduino digunakan untuk mengawal keseluruhan proses. Dua butang tekan digunakan di litar - satu untuk memulakan dadu dan satu lagi untuk menetapkan semula dadu. Arduino membaca dua butang ini dan melakukan operasi. Paparan tujuh segmen digunakan untuk memaparkan hasil dadu.
Arduino terus menjalankan fungsi rand () dan menyimpan nilainya ke pemboleh ubah sementara. Apabila butang dadu ditekan, nilai simpanan dikira dan dipaparkan pada tujuh segmen dengan menggunakan kaedah yang sesuai (lihat bahagian artikel dari program)
Di sini dalam rangkaian dadu ini, paparan anode tujuh segmen biasa digunakan untuk memaparkan nombor dadu, yang dihubungkan secara langsung dengan nombor pin digital arduino 6, 5, 4, 3, 2, 1, 0. Dan pin anod tujuh segmen biasa adalah disambungkan dengan perintang +5 volt 220 Ohm. Dua butang tekan juga disambungkan iaitu butang dadu dan butang set semula yang disambungkan ke pin digital 14 (A0) dan 15 (A1) berkenaan dengan tanah.
Penjelasan Kod
Pengaturcaraan bahagian projek ini memainkan peranan yang sangat penting untuk menunjukkan nombor dadu digital secara rawak pada paparan tujuh segmen. Arduino tidak mengandungi perpustakaan untuk paparan tujuh segmen. jadi kami membuat kod keseluruhan tanpa menggunakan perpustakaan.
Pertama sekali kami memilih pin digital untuk paparan tujuh segmen.
int pin = {6,5,4,3,2,1,0};
Selepas itu kami membuat susunan 6 digit dadu iaitu 1, 2, 3, 4, 5 dan 6.
digit char = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Sekarang kami memberi arahan untuk menggunakan pin arduino sebagai output.
batal persediaan () {untuk (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (dadu, INPUT); pinMode (tetapkan semula, INPUT); digitalWrite (dadu, TINGGI); digitalWrite (set semula, TINGGI);
Kami menghantar kod untuk menunjukkan sifar pada paparan tujuh segmen secara lalai.
int temp = 0x40; untuk (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; }
Sekarang kita menjalankan fungsi rand () untuk mendapatkan nombor rawak.
int temp = rand ();
Dan apabila kita menekan program butang dadu, terlebih dahulu memetakan nombor rawak ini dan kemudian menghantar nombor ke paparan tujuh segmen dengan menggunakan operator sedikit bijak.
jika (digitalRead (dadu) == 0) {int k = temp% 6; temp = digit; tunggu (); untuk (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; } kelewatan (200); }
Dan sama untuk butang reset.
Dalam program ini kami menghantar satu bit pada satu masa. Di sini kami menerapkan loop for yang berjalan 7 kali untuk mengirim data ke setiap segmen satu demi satu.