Sedikit Pengenalan
Hallo semuanya, jumpa lagi ni. Siapa sih yang tidak mengenal DADU / DICE, sebuah alat untuk menunjukan angka yang terbuat dalam bentuk kubus 6 sisi yang dapat menunjukan angka 1 sampai dengan 6. Biasanya Dadu digunakan dalam permainan papan, seperti Monopoly, ular dan tangga, permainan di casino, dll.
Loh bang kok malah bahas permainan dadu?
Eh tunggu dulu, disini saya akan membuat sebuah project dari arduino, sesuai dengan judulnya Arduino Dadu Otomatis dengan menggunakan 7 Segmen. Dalam project ini saya masih tetap menggunakan simulasi, dari project sebelumnya, dimana cara mengakses 7 segmen menggunakan Shift Register dengan Arduino. Baca referensi artikel lainya di sub referensi. Ok langsung saja kita buat project ini.
Referensi & File Download
Skematik Rangkaian
Pemrograman Arduino
Berikut adalah program Arduino Project Dadu 7 Segmen:
//------------------------------------------------------------------------ // By Irfan Indra Kurniawan - FansElectronics.com // 100% untuk pembelajaran, dilarang keras menipu // dengan menjual program ini (kalau anda beriman) :D //------------------------------------------------------------------------ #define A 11 #define B 10 #define C 9 #define IN1 13 #define IN2 12 #define DITEKAN LOW #define ON HIGH #define OFF LOW int LED[] = {A0, A1, A2, A3, A4, A5, 7, 6}; // LED Pin // Fungsi Setup void setup() { pinMode(A, OUTPUT); pinMode(B, OUTPUT); pinMode(C, OUTPUT); pinMode(IN1, INPUT_PULLUP); pinMode(IN2, INPUT_PULLUP); for (int i = 0; i < 8; i++) { // counter 0-7 = 8 pin led pinMode(LED[i], OUTPUT); // mode pin LED } } // Fungsi Looping void loop() { if (selectButton(1) == DITEKAN) { // BUTTON 1 = LED 1 ON selectLED(0, ON); } else if(selectButton(2) == DITEKAN) { // BUTTON 2 = LED 2 ON selectLED(1, ON); } else if(selectButton(3) == DITEKAN) { // BUTTON 3 = LED 3 ON selectLED(2, ON); } else if(selectButton(4) == DITEKAN) { // BUTTON 4 = LED 4 ON selectLED(3, ON); } else if(selectButton(5) == DITEKAN) { // BUTTON 5 = LED 5 ON selectLED(4, ON); } else if(selectButton(6) == DITEKAN) { // BUTTON 6 = LED 6 ON selectLED(5, ON); } else if(selectButton(7) == DITEKAN) { // BUTTON 7 = LED 7 ON selectLED(6, ON); } else if(selectButton(8) == DITEKAN) { // BUTTON 8 = LED 8 ON selectLED(7, ON); } else if(selectButton(9) == DITEKAN) { // BUTTON 9 = LED 1 ON selectLED(0, OFF); } else if(selectButton(10) == DITEKAN) { // BUTTON 10 = LED 2 ON selectLED(1, OFF); } else if(selectButton(11) == DITEKAN) { // BUTTON 11 = LED 3 ON selectLED(2, OFF); } else if(selectButton(12) == DITEKAN) { // BUTTON 12 = LED 4 ON selectLED(3, OFF); } else if(selectButton(13) == DITEKAN) { // BUTTON 13 = LED 5 ON selectLED(4, OFF); } else if(selectButton(14) == DITEKAN) { // BUTTON 14 = LED 6 ON selectLED(5, OFF); } else if(selectButton(15) == DITEKAN) { // BUTTON 15 = LED 7 ON selectLED(6, OFF); } else if(selectButton(16) == DITEKAN) { // BUTTON 16 = LED 8 ON selectLED(7, OFF); } } // Fungsi Ambil data dari Pin yang dibaca int selectButton(int button) { int kondisi; // switching pin yang aktif dan ambil data button switch (button) { case 1: switchMux(0, 0, 0); kondisi = digitalRead(IN1); break; case 2: switchMux(0, 0, 1); kondisi = digitalRead(IN1); break; case 3: switchMux(0, 1, 0); kondisi = digitalRead(IN1); break; case 4: switchMux(0, 1, 1); kondisi = digitalRead(IN1); break; case 5: switchMux(1, 0, 0); kondisi = digitalRead(IN1); break; case 6: switchMux(1, 0, 1); kondisi = digitalRead(IN1); break; case 7: switchMux(1, 1, 0); kondisi = digitalRead(IN1); break; case 8: switchMux(1, 1, 1); kondisi = digitalRead(IN1); break; case 9: switchMux(0, 0, 0); kondisi = digitalRead(IN2); break; case 10: switchMux(0, 0, 1); kondisi = digitalRead(IN2); break; case 11: switchMux(0, 1, 0); kondisi = digitalRead(IN2); break; case 12: switchMux(0, 1, 1); kondisi = digitalRead(IN2); break; case 13: switchMux(1, 0, 0); kondisi = digitalRead(IN2); break; case 14: switchMux(1, 0, 1); kondisi = digitalRead(IN2); break; case 15: switchMux(1, 1, 0); kondisi = digitalRead(IN2); break; case 16: switchMux(1, 1, 1); kondisi = digitalRead(IN2); break; } return kondisi; // kembalikan dari ke void selectButton } // Fungsi switching data biner dari pin Multiplexer void switchMux(byte c, byte b, byte a) { digitalWrite(A, a); digitalWrite(B, b); digitalWrite(C, c); } // Fungsi aktifkan dan Matikan pin LED void selectLED(int nomor, int kondisi) { digitalWrite(LED[nomor], kondisi); }
Dari program diatas, jika tombol ditekan makan 7 segmen akan mengacak angka secara random antara 1 sampai dengan 12, perinta random digunakan untuk mengacak data interger. Dalam pemrograman diatas saya sarankan untuk melihat pada artikel tentang 7 segmen Shift Register untuk cara akses 7 segmenya. Dalam penampilan dadu dapat kalian kreasikan sendiri dengan menggunakan outputan lain, misal LED, LCD, ataupun Dot Matrix. Untuk lebih lengkapnya dalam project ini dapat tonton video berikut.
Video Simulasi
Oke, sekian dulu totorial project Dadu kali ini, semoga bermanfaat. Jangan lupa dukung terus Fans Electronics dengan Follow dan Subscribe kami di semua link SOSMED, link tersedia pada footer website ini. Sekian dan salam solder.
4.5