NIM : 11.11.1998
Scoring Board Otomatis Pada Permainan Bola Basket Berbasis Atmega 8535
Analisa Algoritma
Analisa Algoritma pemrograman adalah menjelaskan cara kerja untuk mengendalikan input dan output pada sebuah alat. Algoritma dapat dilihat dengan menggunakan analisa secara flowchart. Pada analisa secara flowchart ini terdiri dari simbol “mulai”, simbol “kondisi” dan simbol “proses”. Berikut adalah penjelasan gambar dari flowchart tersebut. Pada awal rangkaian diberi tegangan seven segmentnyala menandakan siap dioperasikan. Untuk memulai bagaimana alat ini berkerja dibutuhkan penekanan pushbutton. Dimana setelah push button di tekan, maka waktu(timer) akan tampil dan sensor-sensor akan berkerja. Penambahan skor (nilai) terjadi apabila sensor IR-FD (infrared – fotodioda) kiri terhalang, maka nilai atau skor pada seven segment kiri akan bertambah 1. Begitupun dengan sensor IR-FD (infrared – fotodioda) disebelah kanan terhalang, maka nilai atau skor pada seven segment kanan akan bertambah 1. Jika tampilan waktu (timer) pada LCD telah mencapai angka 0, maka LCD akan menampilkan tulisan “WAKTU HABIS” dan sensor tidak akan berpengaruh lagi terhadap perubahan skor. Apabila ingin mencoba kembali, maka tekan kembali push button tersebut dan jika tidak, maka lepaskan catu daya dan alat tersebut akan berhenti.
Analisa Program
#include <mega8535.h>
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __lcd_port=0x15;
#endasm
flash unsigned char seg4[]={0x80,0x88,0x84,0x8C,0x82,0x8A,0x86,0x8E,0x81,0x89};
flash unsigned char seg5[]={0x40,0x48,0x44,0x4C,0x42,0x4A,0x46,0x4E,0x41,0x49};
flash unsigned char
seg6[]={0x20,0x28,0x24,0x2C,0x22,0x2A,0x26,0x2E,0x21,0x29};
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __lcd_port=0x15;
#endasm
flash unsigned char seg4[]={0x80,0x88,0x84,0x8C,0x82,0x8A,0x86,0x8E,0x81,0x89};
flash unsigned char seg5[]={0x40,0x48,0x44,0x4C,0x42,0x4A,0x46,0x4E,0x41,0x49};
flash unsigned char
seg6[]={0x20,0x28,0x24,0x2C,0x22,0x2A,0x26,0x2E,0x21,0x29};
unsigned char i=0; unsigned char j=0;
unsigned char k=0;
unsigned char x=0;
unsigned char y=0;
unsigned char z=0;
unsigned char buff[33];
void lcd_putint(int p){
sprintf(buff,"%d",p);
lcd_puts(buff);
}
unsigned char k=0;
unsigned char x=0;
unsigned char y=0;
unsigned char z=0;
unsigned char buff[33];
void lcd_putint(int p){
sprintf(buff,"%d",p);
lcd_puts(buff);
}
void main(void){
int h;
int O;
int p=30;
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0x00;
PORTD=0xFF;
DDRD=0x00;
lcd_init(16);
lcd_gotoxy(2,0);
lcd_putsf("PENCET START")
int h;
int O;
int p=30;
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0x00;
PORTD=0xFF;
DDRD=0x00;
lcd_init(16);
lcd_gotoxy(2,0);
lcd_putsf("PENCET START")
while(1){ switch(PIND){
case 0x7F:
i=0;
j=0;
k=0;
x=0;
y=0;
z=0;
O=0;
lcd_clear();
lcd_gotoxy(5,0);
lcd_putsf("READY ");
delay_ms(1000);
lcd_gotoxy(6,1);
lcd_putsf("GO !");
delay_ms(1000);
case 0x7F:
i=0;
j=0;
k=0;
x=0;
y=0;
z=0;
O=0;
lcd_clear();
lcd_gotoxy(5,0);
lcd_putsf("READY ");
delay_ms(1000);
lcd_gotoxy(6,1);
lcd_putsf("GO !");
delay_ms(1000);
for(O=0;O<31;O++){
lcd_clear();
lcd_gotoxy(2,0); lcd_putsf("SISA WAKTU ");
lcd_putint(p);
p--;
if(O==30){
p=30;
lcd_clear();
lcd_gotoxy(2,0);
lcd_putsf("Waktu Habis");
lcd_gotoxy(3,1);
lcd_putsf("GAME OVER");
break;
}
lcd_clear();
lcd_gotoxy(2,0); lcd_putsf("SISA WAKTU ");
lcd_putint(p);
p--;
if(O==30){
p=30;
lcd_clear();
lcd_gotoxy(2,0);
lcd_putsf("Waktu Habis");
lcd_gotoxy(3,1);
lcd_putsf("GAME OVER");
break;
}
else if(PIND.0==0){
delay_ms(150);
i++;
PORTA=seg4[i];
delay_ms(10);
if(i==10){
j++;
i=0;
PORTA=seg4[i];
delay_ms(10);
PORTA=seg5[j];
delay_ms(10);
if(j==10){
j=0;
k++;
PORTA=seg4[i];
delay_ms(10);
PORTA=seg5[j];
delay_ms(10);
PORTA=seg6[k];
delay_ms(10);
} }
}
delay_ms(150);
i++;
PORTA=seg4[i];
delay_ms(10);
if(i==10){
j++;
i=0;
PORTA=seg4[i];
delay_ms(10);
PORTA=seg5[j];
delay_ms(10);
if(j==10){
j=0;
k++;
PORTA=seg4[i];
delay_ms(10);
PORTA=seg5[j];
delay_ms(10);
PORTA=seg6[k];
delay_ms(10);
} }
}
else if(PIND.1==0){
delay_ms(250);
x++;
PORTB=seg4[x];
delay_ms(10);
if(x==10){
y++;
x=0;
PORTB=seg4[x];
delay_ms(10);
PORTB=seg5[y];
delay_ms(10);
if(y==10){
y=0;
z++;
PORTB=seg4[x];
delay_ms(10);
PORTB=seg5[y];
delay_ms(10);
PORTB=seg6[z];
delay_ms(10);
}
}
}
delay_ms(250);
x++;
PORTB=seg4[x];
delay_ms(10);
if(x==10){
y++;
x=0;
PORTB=seg4[x];
delay_ms(10);
PORTB=seg5[y];
delay_ms(10);
if(y==10){
y=0;
z++;
PORTB=seg4[x];
delay_ms(10);
PORTB=seg5[y];
delay_ms(10);
PORTB=seg6[z];
delay_ms(10);
}
}
}
else{
PORTA=seg4[i];
delay_ms(10);
PORTA=seg5[j];
delay_ms(10);
PORTA=seg6[k];
delay_ms(10);
PORTB=seg4[x];
delay_ms(10);
PORTB=seg5[y];
delay_ms(10);
PORTB=seg6[z];
delay_ms(10);
}
for(h=0;h<16;h++){
if(PIND.0==0){
delay_ms(150);
i++;
PORTA=seg4[i];
delay_ms(10);
if(i==10){
j++;
i=0;
PORTA=seg4[i];
delay_ms(10);
PORTA=seg5[j];
delay_ms(10);
PORTA=seg4[i];
delay_ms(10);
PORTA=seg5[j];
delay_ms(10);
PORTA=seg6[k];
delay_ms(10);
PORTB=seg4[x];
delay_ms(10);
PORTB=seg5[y];
delay_ms(10);
PORTB=seg6[z];
delay_ms(10);
}
for(h=0;h<16;h++){
if(PIND.0==0){
delay_ms(150);
i++;
PORTA=seg4[i];
delay_ms(10);
if(i==10){
j++;
i=0;
PORTA=seg4[i];
delay_ms(10);
PORTA=seg5[j];
delay_ms(10);
default:
PORTA=seg4[i];
delay_ms(10);
PORTA=seg5[j];
delay_ms(10);
PORTA=seg6[k];
delay_ms(10);
PORTB=seg4[x];
delay_ms(10);
PORTB=seg5[y];
delay_ms(10);
PORTB=seg6[z];
delay_ms(10);
break;
}}
}
PORTA=seg4[i];
delay_ms(10);
PORTA=seg5[j];
delay_ms(10);
PORTA=seg6[k];
delay_ms(10);
PORTB=seg4[x];
delay_ms(10);
PORTB=seg5[y];
delay_ms(10);
PORTB=seg6[z];
delay_ms(10);
break;
}}
}
Kesimpulan
Dari analisa dan hasil uji alat yang telah dilakukan, penulis memiliki beberapa kesimpulan sebagai berikut :
•Simulasi scoring board otomatis, memerlukan penekanan push button dan pengaktifan sensor infrared - fotodioda sebagai input, mikrokontroler ATMEGA 8535, ic decoder 74LS47 dan ic op-amp (Operational Amplifier) LM324 sebagai proses, seven segment dan LCD sebagai output.
•Setelah hasil uji coba alat, berfungsi sesuai dengan diinginkan yaitu :
–Jika ingin memulai sebuah permainan, maka tekan push button S1 untuk mengaktifkan batasan waktu (timer).
–Jika salah satu pemain memasukkan bola ke ring yang telah di pasangkan sensor infrared - fotodioda, maka skor atau nilai pada seven segment akan secara otomatis bertambah,
–Jika push button yang berfungsi sebagai riset di tekan, maka kedua seven segment tersebut kembali ke awal yaitu 000.
•Simulasi scoring board otomatis, memerlukan penekanan push button dan pengaktifan sensor infrared - fotodioda sebagai input, mikrokontroler ATMEGA 8535, ic decoder 74LS47 dan ic op-amp (Operational Amplifier) LM324 sebagai proses, seven segment dan LCD sebagai output.
•Setelah hasil uji coba alat, berfungsi sesuai dengan diinginkan yaitu :
–Jika ingin memulai sebuah permainan, maka tekan push button S1 untuk mengaktifkan batasan waktu (timer).
–Jika salah satu pemain memasukkan bola ke ring yang telah di pasangkan sensor infrared - fotodioda, maka skor atau nilai pada seven segment akan secara otomatis bertambah,
–Jika push button yang berfungsi sebagai riset di tekan, maka kedua seven segment tersebut kembali ke awal yaitu 000.
Keterangan :
- = Sensor tidak terhalang bola basket
√ = Sensor terhalang bola basket
S1 = Penekanan push button untuk mengaktifkan timer pada LCD
S2 = Sensor infrared dan fotodioda pada ring kanan
S3 = Sensor infrared dan fotodioda pada ring kiri
- = Sensor tidak terhalang bola basket
√ = Sensor terhalang bola basket
S1 = Penekanan push button untuk mengaktifkan timer pada LCD
S2 = Sensor infrared dan fotodioda pada ring kanan
S3 = Sensor infrared dan fotodioda pada ring kiri
Gambar rangkaian
Pustaka
http://library.gunadarma.ac.id/repository/view/3763859/scoring-board-otomatis-pada-permainan-bola-basket-berbasis-atmega-8535.html/
0 komentar:
Post a Comment