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 :
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
Tinggalkan Komentar