NIM : C010318103
Kelas : 3D3K-LISTRIK
Diskusikan:
Kalau diamati lebih teliti pada perulangan ke-25 ketika display memperlihatkan angka 5 setelah itu langsung
ke-0. Coba fikirkan kenapa hal tersebut bisa terjadi.
Karena .. jumlah biner hanya 255 karna dibagi persen 10, hasilnya 5.Jadi, setelah perulangan angka 0-9
sebanyak 25 kali, maka tersisa hanya sampai angka 5 saja
Aktifitas 2
Dengan rangkaian yang sama dengan aktifitas 1 buatlah program agar simulasi menampilkan angka dari
9 turun ke 0 kemudian balik lagi ke angka 9 dst.
byte angka[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
byte i=249, number;
void setup() {
// put your setup code here, to run once:
DDRD=0xFF;
}
void loop() {
//proses
number = i;
//display
PORTD = angka[number%10];
delay(100);
i--;
if(i==255) i=249;
}
Aktifitas 4
Sama seperti aktifitas 3. Tambahkan satu button dan modifikasi programnya sehingga button
tersebut berfungsi sebagai tombol reset yang menyebabkan angka pada 7 segmen ke angka 0.
#define tblNaikPin 14
#define tblTurunPin 15
#define tblResetPin 16
byte angka[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
byte i=150,number;
bool tblNaik=0, tblTurun=0, tblReset=0, tblNaikOld, tblTurunOld,
tblResetOld;
void setup() {
// put your setup code here, to run once:
DDRD=0xFF;
pinMode(tblNaikPin, INPUT_PULLUP);
pinMode(tblTurunPin, INPUT_PULLUP);
pinMode(tblResetPin, INPUT_PULLUP);
}
void loop() {
//baca input
tblNaikOld = tblNaik;
tblNaik = not digitalRead(tblNaikPin);
tblTurunOld = tblTurun;
tblTurun = not digitalRead(tblTurunPin);
tblResetOld = tblReset;
tblReset = not digitalRead(tblResetPin);
//proses
number=i;
if(tblNaik and not tblNaikOld) i++;
if(tblTurun and not tblTurunOld) i--;
if(tblReset and not tblResetOld) i=250;
//display (output)
PORTD = angka[number%10];
}
Keadaan sebelum push-button ditekan.
Ketika pushbutton pin A0 ditekan, maka muncul Pushbutton pin A0 ditekan lagi, maka hasilnya
angka 1 counting up, angka naik menjadi angka 2
Ketika pushbottton pada pin A2 ditekan, maka akan mereset hitungan menjadi 0
Aktifitas 5
Rangkaian seperti aktifitas 4. Buat sehingga sistem
- jika ditekan b1 maka akan count up terus menerus. Jika ditekan b1 sekali lagi maka akan
pause. tekan sekali lagi akan count up lagi, dst
-jika ditekan b3 akan reset ke 0 dan pause.
#define tblNaikPin 14
#define tblResetPin 15
byte angka[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
byte i=0,number, stat=0;
bool tblNaik=0, tblReset=0, tblNaikOld, tblResetOld;
void setup() {
// put your setup code here, to run once:
DDRD=0xFF;
pinMode(tblNaikPin, INPUT_PULLUP);
pinMode(tblResetPin, INPUT_PULLUP);
}
void loop() {
//baca input
tblNaikOld = tblNaik;
tblNaik = not digitalRead(tblNaikPin);
tblResetOld = tblReset;
tblReset = not digitalRead(tblResetPin);
//proses
number=i;
if(tblNaik and not tblNaikOld)
if(stat==1) stat=2;
else stat=1;
if(tblReset and not tblResetOld) stat=0;
if(stat==0) i=0;
if(stat==1){ i++;delay(200);}
PORTD= angka[number%10];
}