Membuat Up Counter 60 Menghitung Dari 0 - 59

Sudah beberapa hari belakangan saya tidak menulis di blog ini karena belum ada bahan yang akan saya tulis. Alhamdulillah kali ini saya akan menuliskan catatan tentang membuat up counter 60 dengan display seven segment.

Saya membuat rangkaian ini menggunakan simulator elektronika Proteus yang nantinya rangkaian ini akan menampilkan angka dari 00 - 59 dengan output seven segment.

Nantinya arduino uno sebagai pemrosesnya dan tentunya akan ada program atau sketch arduino yang saya buat untuk rangkaian ini. 

Untuk membuat rangkaian counter ini beberapa komponen dan modul dibutuhkan diantaranya :
  1. Modul Arduino Uno / Kompatiblenya
  2. LED Seven Segment Common Anoda 2 Digit
  3. Resistor 330 Ohm
  4. Resistor 10 KOhm
  5. Komputer / Laptop untuk simulasi.

Cara Kerja

Rangkaian akan bekerja ketika tombol start Proteus di tekan kemudian akan menghitung pulsa input dan hasilnya akan ditampilkan ke display seven segment 2 digit.

Gambar Rangkaian

Gambar rangkaian yang telah saya buat ke dalam software proteus yang dapat dilihat di bawah ini. Gambar ini digunakan untuk memperjelas bagaimana koneksi input pulsa ke arduino uno dan juga arduino uno ke seven segment.

up counter 60 menghitung dari 0-59

Sketch Arduino Uno

List program atau sketch yang saya buat ini sebagian saya cuplik dari contoh sketch arduino lain yang telah saya buat dan saya posting di blog ini , salah satunya dari Counter 4 Digit Seven Segment di postingan sebelumnya.

Baiklah langsung saja di bawah ini adalah list program untuk Counter 60 yang akan menampilkan angka 0-59. Silahkan buka spoiler di bawah ini untuk menampilkan kodenya.
// Program Up-Counter 60
// Menampilkan angka 0-59 kemudian kembali ke 0 lagi dan seterusnya
// www.herwanto.my.id
const int inPulsa = A0;

int segA = 13;
int segB = 12;
int segC = 11;
int segD = 10;
int segE = 9;
int segF = 8;
int segG = 7;
int segDot = 6;
int digPul =5; // digit Puluhan
int digSat =4; // digit Satuan


int conPulsa = 0;
int nilPulsa = 0;
int angka =0;
int angkaSat =0;
int angkaPul =0;


void setup() {
  pinMode(inPulsa,INPUT); //pin A0 in Pulsa
  pinMode(segA,OUTPUT); //inisialisasi pin 13 out seg a
  pinMode(segB,OUTPUT); //inisialisasi pin 12 out seg b
  pinMode(segC,OUTPUT); //inisialisasi pin 11 out seg c
  pinMode(segD,OUTPUT); //inisialisasi pin 10 out seg d
  pinMode(segE,OUTPUT); //inisialisasi pin 9 out seg e
  pinMode(segF,OUTPUT); //inisialisasi pin 8 out seg f
  pinMode(segG,OUTPUT); //inisialisasi pin 7 out seg g
  pinMode(segDot,OUTPUT); //pin 6 output seg titik
  pinMode(digPul,OUTPUT); //digit 1
  pinMode(digSat,OUTPUT); //digit 2
angka =0;
angkaSat =0;
angkaPul =0;
}

void loop() {
  // put your main code here, to run repeatedly:
  
  bacaPulsa();
  hitungPulsa();
  tampil7Seg();


}
void bacaPulsa(){
  if(digitalRead(inPulsa)==HIGH){
    while (digitalRead(inPulsa)==HIGH){
    conPulsa=1;
    tampil7Seg(); // agar tampilan tidak kedip
    }
  }
}
void out7seg(){
  
  switch(angka){
case 0:
  digitalWrite(segA,LOW);
  digitalWrite(segB,LOW);
  digitalWrite(segC,LOW);
  digitalWrite(segD,LOW);
  digitalWrite(segE,LOW);
  digitalWrite(segF,LOW);
  digitalWrite(segG,HIGH);
  digitalWrite(segDot,HIGH);
break;
case 1:
  digitalWrite(segA,HIGH);
  digitalWrite(segB,LOW);
  digitalWrite(segC,LOW);
  digitalWrite(segD,HIGH);
  digitalWrite(segE,HIGH);
  digitalWrite(segF,HIGH);
  digitalWrite(segG,HIGH);
  digitalWrite(segDot,HIGH);
break;
case 2:
  digitalWrite(segA,LOW);
  digitalWrite(segB,LOW);
  digitalWrite(segC,HIGH);
  digitalWrite(segD,LOW);
  digitalWrite(segE,LOW);
  digitalWrite(segF,HIGH);
  digitalWrite(segG,LOW);
  digitalWrite(segDot,HIGH);
break;
case 3:
  digitalWrite(segA,LOW);
  digitalWrite(segB,LOW);
  digitalWrite(segC,LOW);
  digitalWrite(segD,LOW);
  digitalWrite(segE,HIGH);
  digitalWrite(segF,HIGH);
  digitalWrite(segG,LOW);
  digitalWrite(segDot,HIGH);
break;
case 4:
  digitalWrite(segA,HIGH);
  digitalWrite(segB,LOW);
  digitalWrite(segC,LOW);
  digitalWrite(segD,HIGH);
  digitalWrite(segE,HIGH);
  digitalWrite(segF,LOW);
  digitalWrite(segG,LOW);
  digitalWrite(segDot,HIGH);
break;
case 5 :
  digitalWrite(segA,LOW);
  digitalWrite(segB,HIGH);
  digitalWrite(segC,LOW);
  digitalWrite(segD,LOW);
  digitalWrite(segE,HIGH);
  digitalWrite(segF,LOW);
  digitalWrite(segG,LOW);
  digitalWrite(segDot,HIGH);
break;
case 6 :
  digitalWrite(segA,LOW);
  digitalWrite(segB,HIGH);
  digitalWrite(segC,LOW);
  digitalWrite(segD,LOW);
  digitalWrite(segE,LOW);
  digitalWrite(segF,LOW);
  digitalWrite(segG,LOW);
  digitalWrite(segDot,HIGH);
break;
case 7:
  digitalWrite(segA,LOW);
  digitalWrite(segB,LOW);
  digitalWrite(segC,LOW);
  digitalWrite(segD,HIGH);
  digitalWrite(segE,HIGH);
  digitalWrite(segF,HIGH);
  digitalWrite(segG,HIGH);
  digitalWrite(segDot,HIGH);
break;
case 8:
  digitalWrite(segA,LOW);
  digitalWrite(segB,LOW);
  digitalWrite(segC,LOW);
  digitalWrite(segD,LOW);
  digitalWrite(segE,LOW);
  digitalWrite(segF,LOW);
  digitalWrite(segG,LOW);
  digitalWrite(segDot,HIGH);
break;
case 9:
  digitalWrite(segA,LOW);
  digitalWrite(segB,LOW);
  digitalWrite(segC,LOW);
  digitalWrite(segD,LOW);
  digitalWrite(segE,HIGH);
  digitalWrite(segF,LOW);
  digitalWrite(segG,LOW);
  digitalWrite(segDot,HIGH);
break;
  }
}

// 
void tampil7Seg(){
  
  angkaSat=nilPulsa%10;
  angka=angkaSat;
  digitalWrite(digSat,HIGH);  // digit satuan dipilih
  out7seg();                  // tulis angka di digit satuan
  delay(5);
  digitalWrite(digSat,LOW);   // digit satuan dimatikan lagi
  
  angkaPul=nilPulsa/10;
  angka=angkaPul;
  digitalWrite(digPul,HIGH);
  out7seg();
  delay(5);
  digitalWrite(digPul,LOW);
}

void hitungPulsa(){
  if(conPulsa==1){
    nilPulsa=nilPulsa+1; // menambah isi nilPulsa
    if(nilPulsa>=60){ // mengenolkan hitungan pulsa jika >60
      nilPulsa=0;
    }
    conPulsa=0; //mengenolkan in Pulsa
  }
}
Download Simulasi Proteus Up COunter 60 dan Sketch Arduinonya