Project II Arduino mata kuliah Interaksi Manusia dengan Komputer & Antarmuka II3231. Pada tugas kali ini kami diminta untuk membuat counter. Project ini melibatkan push button dan seven segment display. Pada kondisi awal, seven segment menampilkan angka 0. Ketika push button ditekan sekali, seven segment menampilkan angka 1. Tampilan angka pada seven segment terus naik seiring push button ditekan. tapi, karena hanya terdapat satu seven segment display, setelah angka 9 tampilan pada seven segment kembali ke angka 0.

Berikut adalah alat dan bahan yang digunakan dalam proyek ini :

  1. Arduino Uno
  2. Kabel USB
  3. Kabel jumper secukupnya
  4. Resistor 2 buah (kami menggunakan 330Ω dan 560Ω, jangan tanya kenapa)
  5. Breadboard
  6. Push button
  7. Seven segment display

Berikut rangkaian proyek ini :

undefined

 Kami menggunakan seven segment jenis common anode (LED menyala ketika diberi tegangan LOW). Berikut seven segment display yang kami gunakan :

undefined

Berikut logika tampilan pada seven segment :

AngkaLED
ABCDEFG
0 ON ON  ON  ON  ON  ON OFF
1 OFF ON ON OFF OFF OFF OFF
2 ON ON OFF ON ON OFF ON
3 ON ON ON ON OFF OFF ON
4 OFF ON ON OFF OFF ON ON
5 ON OFF ON ON OFF ON ON
6 ON OFF ON ON ON ON ON
7 ON ON ON OFF OFF OFF OFF
8 ON ON ON ON ON ON ON
9 ON ON ON ON OFF ON ON

Berikut kode program yang kami gunakan :

int masuk=2;       //pin input pushbutton
int state1;        //state tombol sekarang
int state0=1;      //state tombol sebelumnya

//Pin-pin digital untuk 7 segment
int a=13;    //  
int b=12;    //   ______
int c=11;    //  |\__a_/|
int d=10;    //  | |  | |
int e=9;     //  |f|__|b|
int f=7;     //  |< g_ >|
int g=6;     //  | |  | |
             //  |e|__|c|
             //  |/__d_\|

int count=0;  //jumlah hitungan

void setup(){
  pinMode(masuk,INPUT);
  pinMode(a,OUTPUT);
  pinMode(b,OUTPUT);
  pinMode(c,OUTPUT);
  pinMode(d,OUTPUT);
  pinMode(e,OUTPUT);
  pinMode(f,OUTPUT);
  pinMode(g,OUTPUT);
}

void loop(){
  state1=digitalRead(masuk);
  if(state1==HIGH && state0==LOW){
    count=(count+1)%10;
  }
  
  //menulis angka
  digitalWrite(a,!(count!=1 && count!=4));
  digitalWrite(b,!(count!=5 && count!=6));
  digitalWrite(c,!(count!=2));
  digitalWrite(d,!(count!=1 && count!=4 && count!=7));
  digitalWrite(e,!(count==0 || count==2 || count==6 || count==8));
  digitalWrite(f,!(count!=1 && count!=2 && count!=3 && count!=7));
  digitalWrite(g,!(count!=0 && count!=1 && count!=7));
  
  state0=state1;
  delay(5);
}

Kode di atas adalah modifikasi dari kode project sebelumnya (Project I : Menyalakan dan Mematikan Lampu dengan Push Button). Variabel count akan bertambah nilainya setiap tombol dilepas (switch terputus). Karena nilai maksimum variabel count adalah 9, maka nilainya dimodulo 10. Tampilan pada seven segment selalu diperbarui pada setiap loop program.

Pada mulanya kami menggunakan seven segment jenis common cathode (LED menyala ketika diberi tegangan HIGH). Namun, terdapat kerusakan pada LED G dan kami menggantinya dengan seven segment jenis common anode. Konsekuensinya adalah kami harus menambahkan negasi pada tegangan ke seven segment (baris kode 36 sampai 42).

Berikut hasil implementasi :

undefined

undefined

Tim kami :
18214046 Fat Han Nuraddin
18214033 Andreas Ekadinata Widodo
18214015 Raden Haryo Pandu Prakoso