Membuat Papan Skor dengan 8x8 Dot Matrix

Papan skor merupakan sebuah papan informasi yang digunakan pada suatu permainan dengan tampilan hasil angka dari tiap kelompok permainan itu sendiri. Papan skor ini sering kita jumpai pada permainan olahraga seperti sepakbola, basket, badminton, voly dan masih banyak lagi. Tampilannya juga bermacam-macam ada yang menggunakan P10, 7 segment, videotron dan bahkan yang masih manual juga ada ya hee... Nah pada postingan ini, saya akan berbagi project cara membuat papan skor dengan 8x8 dot matrix. Sebenarnya papan skor ini kurang cocok digunakan karena bentuknya yang kecil. Papan skor ini mungkin cocok untuk permainan kecil yang hanya terdapat kurang dari 5 pemain, misalnya permainan kartu, catur, kuis dan permainan kecil lainnya.

Papan skor ini terdiri dari dua modul 8x8 dot matrix yang digunakan untuk dua tim, yaitu TIM A dan TIM B. Kemudian terdapat tiga buah tombol, tombol sebelah kiri adalah tombol untuk memilih tim yang akan diubah skornya, tombol yang tengah untuk menambah nilai dan yang sebelah kanan untuk mengurangi nilainya. Terdapat juga dua lampu indikator yang berfungsi untuk menunjukan tim mana yang sedang diubah nilainya dengan menekan tombol pilih lampu indikator akan menyala apakah pada TIM A atau TIM B. Di bawah ini merupakan gambaran dari papan skor yang akan dibuat.

cara membuat papan skor dot matrix 8x8
Untuk membuat project ini diperlukan bahan-bahan berikut ini :
Software :
  1. Arduino IDE
  2. Library yang digunakan library LedControl.h, download.
Hardware :
  1. Arduino Uno atau board lain
  2. Modul 8x8 dot matrix 2 buah
  3. Push button switch 3 buah
  4. Lampu led 2 buah
  5. Resistor 220 Ohm 2 buah
  6. Kabel Jumper
  7. Project Board
Rangkaian :
8x8 dot matrix
- DIN dihubungkan ke pin 12 Arduino
- CLK dihubungkan ke pin 11 Arduino
- CS dihubungkan ke pin 10 Arduino
- VCC dihubungkan ke 5v Arduino
- GNDdihubungkan ke GND Arduino
Silahkan hubungkan 2 8x8 dot matrix dengan pin yang sama.

Push Button Switch
- Tombol kiri (PILIH), dihubungkan ke pin 6 Arduino
- Tombol tengah (TAMBAH), dihubungkan ke pin 7 Arduino
- Tombol kanan (KURANG), dihubungkan ke pin 8 Arduino

Lampu LED
- LED1, kaki (+) dihubungkan dengan resistor 220 Ohm kemudian ke pin 3 Arduino
- LED2, kaki (+) dihubungkan dengan resistor 220 Ohm kemudian ke pin 4 Arduino
- Kaki (-) pada kedua LED dihubungkan ke GND Arduino

Langkah-langkah :
  1. Rangkai komponen seperti rangkaian yang sudah dijelaskan di atas.
  2. Buka Arduino IDE, masukkan library LedControl.h yang sudah didownload.
  3. Masuk ke menu Tools > Board : Arduino Genuino/Uno > Port terceklis, misalnya COM20
  4. Upload sketch berikut ini:
  5. #include "LedControl.h"

    //DataIn = Pin 12
    //CLK = Pin 11
    //CS = Pin 10

    LedControl lc = LedControl(12, 11, 10, 2);

    int btnPilih, btnTambah, btnKurang;

    int kecerahan = 15;
    int j = 0;

    int skor[2] = {0, 0};
    int skor_ant[2] = {0, 0};

    unsigned long delaytime = 200;

    void setup() {
    Serial.begin(9600);
    pinMode(6, INPUT_PULLUP);
    pinMode(7, INPUT_PULLUP);
    pinMode(8, INPUT_PULLUP);

    pinMode(3, OUTPUT);
    pinMode(4, OUTPUT);
    digitalWrite(3, HIGH);

    lc.shutdown(0, false);
    lc.shutdown(1, false);

    lc.setIntensity(0, kecerahan);
    lc.setIntensity(1, kecerahan);

    lc.clearDisplay(0);
    lc.clearDisplay(1);

    writeOnMatrix(0, 0);
    writeOnMatrix(0, 1);
    }

    void loop() {
    btnPilih = digitalRead(6);
    if (btnPilih == 0) {
    j = !j;
    if (j == 0) {
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    }
    else {
    digitalWrite(3, LOW);
    digitalWrite(4, HIGH);
    }
    while (digitalRead(6) == 0) {
    delay(50);
    }
    }

    btnTambah = digitalRead(7);
    if (btnTambah == 0) {
    skor[j] = skor[j] + 1;
    if (skor[j] <= 0 || skor[j] >= 10) {
    skor[j] = 0;
    }
    if (skor_ant[j] != skor[j]) {
    writeOnMatrix(skor[j], j);
    btnKurang = digitalRead(8);
    skor_ant[j] = skor [j];
    }
    while (digitalRead(7) == 0) {
    delay(50);
    }
    }

    btnKurang = digitalRead(8);
    if (btnKurang == 0) {
    skor[j] = skor[j] - 1;
    if (skor[j] <= 0 || skor[j] >= 10) {
    skor[j] = 0;
    }
    if (skor_ant[j] != skor[j]) {
    writeOnMatrix(skor[j], j);
    btnKurang = digitalRead(8);
    skor_ant[j] = skor [j];
    }
    while (digitalRead(8) == 0) {
    delay(50);
    }
    }
    }

    void writeOnMatrix(int nomor, int tampil) {
    byte N0[8] = {B00000000, B00000000, B00111110, B01000001,
    B01000001, B00111110, B00000000, B00000000
    };
    //1
    byte N1[8] = {B00000000, B00000000, B00000000, B01000010,
    B01111111, B01000000, B00000000, B00000000
    };
    //2
    byte N2[8] = {B00000000, B00000000, B01100010, B01010001,
    B01001001, B01000110, B00000000, B00000000
    };
    //3
    byte N3[8] = {B00000000, B00000000, B00100010, B01000001,
    B01001001, B00110110, B00000000, B00000000
    };
    //4
    byte N4[8] = {B00000000, B00000000, B00001100, B00001010,
    B00001001, B01111111, B00000000, B00000000
    };
    //5
    byte N5[8] = {B00000000, B00000000, B00100111, B01000101,
    B01000101, B00111001, B00000000, B00000000
    };
    //6
    byte N6[8] = {B00000000, B00000000, B00111110, B01001001,
    B01001001, B00110000, B00000000, B00000000
    };
    //7
    byte N7[8] = {B00000000, B00000000, B01100001, B00010001,
    B00001001, B00000111, B00000000, B00000000
    };
    //8
    byte N8[8] = {B00000000, B00000000, B00110110, B01001001,
    B01001001, B00110110, B00000000, B00000000
    };
    //9
    byte N9[8] = {B00000000, B00000000, B00001110, B01001001,
    B01001001, B00111110, B00000000, B00000000
    };

    switch (nomor)
    {
    case 0:
    lc.setRow(tampil, 1, N0[0]);
    lc.setRow(tampil, 1, N0[1]);
    lc.setRow(tampil, 2, N0[2]);
    lc.setRow(tampil, 3, N0[3]);
    lc.setRow(tampil, 4, N0[4]);
    lc.setRow(tampil, 5, N0[5]);
    lc.setRow(tampil, 6, N0[6]);
    lc.setRow(tampil, 7, N0[7]);
    break;
    case 1:
    lc.setRow(tampil, 1, N1[0]);
    lc.setRow(tampil, 1, N1[1]);
    lc.setRow(tampil, 2, N1[2]);
    lc.setRow(tampil, 3, N1[3]);
    lc.setRow(tampil, 4, N1[4]);
    lc.setRow(tampil, 5, N1[5]);
    lc.setRow(tampil, 6, N1[6]);
    lc.setRow(tampil, 7, N1[7]);
    break;
    case 2:
    lc.setRow(tampil, 1, N2[0]);
    lc.setRow(tampil, 1, N2[1]);
    lc.setRow(tampil, 2, N2[2]);
    lc.setRow(tampil, 3, N2[3]);
    lc.setRow(tampil, 4, N2[4]);
    lc.setRow(tampil, 5, N2[5]);
    lc.setRow(tampil, 6, N2[6]);
    lc.setRow(tampil, 7, N2[7]);
    break;
    case 3:
    lc.setRow(tampil, 1, N3[0]);
    lc.setRow(tampil, 1, N3[1]);
    lc.setRow(tampil, 2, N3[2]);
    lc.setRow(tampil, 3, N3[3]);
    lc.setRow(tampil, 4, N3[4]);
    lc.setRow(tampil, 5, N3[5]);
    lc.setRow(tampil, 6, N3[6]);
    lc.setRow(tampil, 7, N3[7]);
    break;
    case 4:
    lc.setRow(tampil, 1, N4[0]);
    lc.setRow(tampil, 1, N4[1]);
    lc.setRow(tampil, 2, N4[2]);
    lc.setRow(tampil, 3, N4[3]);
    lc.setRow(tampil, 4, N4[4]);
    lc.setRow(tampil, 5, N4[5]);
    lc.setRow(tampil, 6, N4[6]);
    lc.setRow(tampil, 7, N4[7]);
    break;
    case 5:
    lc.setRow(tampil, 1, N5[0]);
    lc.setRow(tampil, 1, N5[1]);
    lc.setRow(tampil, 2, N5[2]);
    lc.setRow(tampil, 3, N5[3]);
    lc.setRow(tampil, 4, N5[4]);
    lc.setRow(tampil, 5, N5[5]);
    lc.setRow(tampil, 6, N5[6]);
    lc.setRow(tampil, 7, N5[7]);
    break;
    case 6:
    lc.setRow(tampil, 1, N6[0]);
    lc.setRow(tampil, 1, N6[1]);
    lc.setRow(tampil, 2, N6[2]);
    lc.setRow(tampil, 3, N6[3]);
    lc.setRow(tampil, 4, N6[4]);
    lc.setRow(tampil, 5, N6[5]);
    lc.setRow(tampil, 6, N6[6]);
    lc.setRow(tampil, 7, N6[7]);
    break;
    case 7:
    lc.setRow(tampil, 1, N7[0]);
    lc.setRow(tampil, 1, N7[1]);
    lc.setRow(tampil, 2, N7[2]);
    lc.setRow(tampil, 3, N7[3]);
    lc.setRow(tampil, 4, N7[4]);
    lc.setRow(tampil, 5, N7[5]);
    lc.setRow(tampil, 6, N7[6]);
    lc.setRow(tampil, 7, N7[7]);
    break;
    case 8:
    lc.setRow(tampil, 1, N8[0]);
    lc.setRow(tampil, 1, N8[1]);
    lc.setRow(tampil, 2, N8[2]);
    lc.setRow(tampil, 3, N8[3]);
    lc.setRow(tampil, 4, N8[4]);
    lc.setRow(tampil, 5, N8[5]);
    lc.setRow(tampil, 6, N8[6]);
    lc.setRow(tampil, 7, N8[7]);
    break;
    case 9:
    lc.setRow(tampil, 1, N9[0]);
    lc.setRow(tampil, 1, N9[1]);
    lc.setRow(tampil, 2, N9[2]);
    lc.setRow(tampil, 3, N9[3]);
    lc.setRow(tampil, 4, N9[4]);
    lc.setRow(tampil, 5, N9[5]);
    lc.setRow(tampil, 6, N9[6]);
    lc.setRow(tampil, 7, N9[7]);
    break;
    }
    }
Silahkan coba teman-teman praktikan hasilnya.

Demikian pembahasan project kali ini semoga bermanfaat.
Terima kasih sudah berkunjung. Salam.

0 Response to "Membuat Papan Skor dengan 8x8 Dot Matrix"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel

Iklan Bawah Artikel