Info Sekolah
Senin, 21 Apr 2025
  • Selamat Datang di Website resmi SMKS Sanjaya Bajawa, berlokasi di Jalan Let.Jend. Soeprapto, Kec. Bajawa-Kabupaten Ngada-Flores, Nusa Tenggara Timur-Kontak Admin 082236008339
  • Selamat Datang di Website resmi SMKS Sanjaya Bajawa, berlokasi di Jalan Let.Jend. Soeprapto, Kec. Bajawa-Kabupaten Ngada-Flores, Nusa Tenggara Timur-Kontak Admin 082236008339
22 Februari 2025

Papan Score Simple pakai Arduino Uno

Sab, 22 Februari 2025 Dibaca 13x

Project kali ini lebih simpel yaitu Papan Score pakai Arduino Uno dengan beberapa fitu tambahan agar terlihat berkualitas. ini adalah Project ke sekian kali dari blog saya ini. Papan Score pada umumnya adalah papan besar yang digunakan untuk menunjukkan skor pertandingan olahraga. Papan skor juga disebut scoreboar. Fungsi papan skor paling utama yakni Menampilkan skor pertandingan.

Kali ini lebih simpel yakni displaynya adalah 7 segment, dan kontrolernya adalah Arduino Uno.

Kebutuhan Bahan :

  1. IC 74HC595 4pcs
  2. Arduino Uno library Arduino proteus disini
  3. 7 Segment Common Anoda (CA) 4pcs
  4. Push Button 6pcs
  5. R10K 6pcs

Arduino Program  Code 

/*
  program arduino simulasi proteus
  project: arduino 7 segment sore board
  board: arduino uno/nano, 74HC595 shift register, 7 segment CA 
*/

#include "Wire.h"

#define DATA 2
#define CLK 3
#define LATCH 4

#define S1_UP 5
#define S1_DOWN 6
#define S2_UP 7
#define S2_DOWN 8 
#define S_SHIFT 9
#define S_RESET 10
#define LED 11

//konfigurasi segment dengan hex / biner 8 bit = https://www.electrical4u.com/images/march16/1460385570.PNG
byte segment[10]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x7, 0x7F, 0x6F};

byte ani_char[8]= {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x01,0x40};

int skor1_d1=0; //satuan
int skor1_d2=0; //puluhan
int skor2_d1=0; //satuan
int skor2_d2=0; //puluhan
int stat_blink=0;

void setup(){
  pinMode(S1_UP, INPUT);
  pinMode(S1_DOWN, INPUT);
  pinMode(S2_UP, INPUT);
  pinMode(S2_DOWN, INPUT);
  pinMode(S_SHIFT, INPUT);
  pinMode(S_RESET, INPUT);

  pinMode(LATCH, OUTPUT);
  pinMode(CLK, OUTPUT);
  pinMode(DATA, OUTPUT);
  
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);
  
  // opening animation
  int i = 0;
  while(i<8){
    i++;
    digitalWrite(LATCH, LOW);
    shiftOut(DATA, CLK, MSBFIRST, ~ani_char[i]); 
    shiftOut(DATA, CLK, MSBFIRST, ~ani_char[i]); 
    shiftOut(DATA, CLK, MSBFIRST, ~ani_char[i]); 
    shiftOut(DATA, CLK, MSBFIRST, ~ani_char[i]);
    digitalWrite(LATCH, HIGH);
    delay(200);
  }
  digitalWrite(LED, HIGH);delay(200);digitalWrite(LED, LOW);delay(200);
  digitalWrite(LED, HIGH);delay(200);digitalWrite(LED, LOW);delay(200);
  digitalWrite(LED, HIGH);delay(200);digitalWrite(LED, LOW);delay(200);
  digitalWrite(LED, HIGH);
}

void loop(){
  //display 1 counter UP
  if(digitalRead(S1_UP)== HIGH){
    skor1_d1++;
    if(skor1_d1>9){
      skor1_d1 = 0;
      skor1_d2++;
      
      if(skor1_d2>9){
        skor1_d2 = 0;        
       }
     }
  }
  
  //display 1 counter DOWN
  else if(digitalRead(S1_DOWN)== HIGH){
    skor1_d1--;
    if(skor1_d1<0){
      skor1_d1 = 9;
      skor1_d2--;
      
      if(skor1_d2<0){
        skor1_d2 = 9;        
       }
     }
  }

  //display 2 counter UP
  else if(digitalRead(S2_UP)== HIGH){
    skor2_d1++;
    if(skor2_d1>9){
      skor2_d1 = 0;
      skor2_d2++;
      
      if(skor2_d2>9){
        skor2_d2 = 0;        
       }
     }
  }

  //display 2 counter UP
  else if(digitalRead(S2_DOWN)== HIGH){
    skor2_d1--;
    if(skor2_d1<0){
      skor2_d1 = 9;
      skor2_d2--;
      
      if(skor2_d2<0){
        skor2_d2 = 9;        
       }
     }
  }
  
  else if(digitalRead(S_SHIFT)== HIGH){
    stat_blink =1;
    int tmp_skor1, tmp_skor2;
    tmp_skor1 =  skor1_d1;
    tmp_skor2 =  skor1_d2;
    skor1_d1 = skor2_d1;
    skor1_d2 = skor2_d2;
    skor2_d1 = tmp_skor1;
    skor2_d2 = tmp_skor2;
  }
  
  else if(digitalRead(S_RESET)== HIGH){
    stat_blink =1;
    skor1_d1 = 0;
    skor1_d2 = 0;
    skor2_d1 = 0;
    skor2_d2 = 0;
  }

  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLK, MSBFIRST, ~segment[skor1_d1]); // display 1 digit satuan
  shiftOut(DATA, CLK, MSBFIRST, ~segment[skor1_d2]); // display 1 digit puluhan
  shiftOut(DATA, CLK, MSBFIRST, ~segment[skor2_d1]); // display 2 digit satuan
  shiftOut(DATA, CLK, MSBFIRST, ~segment[skor2_d2]); // display 2 digit puluhan
  digitalWrite(LATCH, HIGH);

  if(stat_blink == 1){
    led_blink(2); //led blink 2 kali
    stat_blink =0;
  }
  
  delay(300); //delay dalam simulasi-sesuaikan apabila terlalu tombol responsive
 
}

void led_blink(int blink_times){
  int x = 0;
  while (x <= blink_times){
    x++;
    digitalWrite(LED, HIGH);delay(200);digitalWrite(LED, LOW);delay(200);
  }
  digitalWrite(LED, HIGH);
}

Download File Project berikut ini : DOWNLOAD

Artikel ini memiliki

0 Komentar

Tinggalkan Komentar