Pada minggu ke 9 kuliah IMKA kami diberikan tugas untuk merancang sebuah proyek arduino dengan memanfaatkan dua buah seven segment. Kami berfikir cukup panjang tentang proyek apa yang akan dibuat. Dengan mempertimbangkan ide-ide yang ada dan komponen yang tersedia, kami memutuskan untuk membuat Automatic Runner Stopwatch.
Automatic Runner Stopwatch akan mulai menghitung waktu pelari ketika pelari itu melewati sensor PIR (Passive Infra Red) dan akan berhenti jika pelari tersebut melewati sensor PIR tersebut kembali, sehingga dapat dihitung waktu yang diperlukan untuk pelari dapat mengelilingi satu putaran ( satu lap).

Sensor PIR ini menggunakan perbedaan suhu yang terekam dalam sensor, sehingga apabila benda mati yang berlalu atau tertangkap sensor maka tidak akan mentrigger stopwatch untuk menyala. Terdapat suatu masalah saat kami mengerjakan proyek ini yaitu karena area deteksi dari sensor PIR ini berbentuk cone, akan terlalu lebar area yang terdeteksi, sehingga kami mencoba mengakalinya dengan membuat selubung menggunakan kertas yang berfungsi sebagai kacamata kuda dari sensor.

Alat-alat yang digunakan dalam proyek ini adalah
- Arduino Uno
- Breadboard
- Kabel Jumper
- Sensor PIR
- Seven Segment
- Resistor 225 Ohm
Berikut adalah code dari rangkaian tersebut
int a = 2; //Untuk menyalakan segmen “a”
int b = 3; //Untuk menyalakan segmen “b”
int c = 4; //Untuk menyalakan segmen “c”
int d = 5; //Untuk menyalakan segmen “d”
int e = 6; //Untuk menyalakan segmen “e”
int f = 7; //Untuk menyalakan segmen “f”
int g = 8; //Untuk menyalakan segmen “g”
int D2 = 9; //Segmen ke-2
int D3 = 10; //Segmen ke-3int inputPIR = 11; // pin input untuk sensor PIR
int reset_button = 12; // pin button
int ledPin = 13; // pin LED
int pirLastState = 0; // kondisi memulai, asumsi tak ada gerakan terdeteksi
int valPIR = 0; // variabel untuk membaca status pin
int valButton = 0;
int display_number = 0; // variabel untuk waktu sekarang yang akan ditampilkan sebagai output
int number = 0;
bool isStart = false; // kondisi orang telah startvoid setup() {
pinMode(a, OUTPUT); //A
pinMode(b, OUTPUT); //B
pinMode(c, OUTPUT); //C
pinMode(d, OUTPUT); //D
pinMode(e, OUTPUT); //E
pinMode(f, OUTPUT); //F
pinMode(g, OUTPUT); //G
pinMode(D2, OUTPUT); //D2
pinMode(D3, OUTPUT); //D3
pinMode(inputPIR, INPUT); // deklarasi sensor sebagai input
pinMode(reset_button, INPUT); // deklarasi button sebagai inputSerial.begin(9600);
}void displayDigit(int digit)
{
//Kondisi untuk menyalakan segmen a
if(digit!=1 && digit != 4)
digitalWrite(a,HIGH);//Kondisi untuk menyalakan segmen b
if(digit != 5 && digit != 6)
digitalWrite(b,HIGH);//Kondisi untuk menyalakan segmen c
if(digit !=2)
digitalWrite(c,HIGH);//Kondisi untuk menyalakan segmen d
if(digit != 1 && digit !=4 && digit !=7)
digitalWrite(d,HIGH);//Kondisi untuk menyalakan segmen e
if(digit == 2 || digit ==6 || digit == 8 || digit==0)
digitalWrite(e,HIGH);//Kondisi untuk menyalakan segmen f
if(digit != 1 && digit !=2 && digit !=3 && digit !=7)
digitalWrite(f,HIGH);//Kondisi untuk menyalakan segmen g
if (digit!=0 && digit!=1 && digit !=7)
digitalWrite(g,HIGH);
}void displayNumber()
{
digitalWrite(D2, LOW);
digitalWrite(D3, HIGH);turnOff();
displayDigit(display_number/10);
delay(1);digitalWrite(D2, HIGH);
digitalWrite(D3, LOW);turnOff();
displayDigit(display_number%10);
delay(1);
}void turnOff()
{
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
}void loop(){
valPIR = digitalRead(inputPIR); // membaca nilai input
valButton = digitalRead(reset_button);
if(valPIR == 1 && pirLastState==1){
pirLastState = 1;
valPIR = 0;
}
else{
pirLastState = valPIR;
}
Serial.println(valPIR);
if(valPIR == 1){
isStart = !isStart;
}
if(isStart){
number++;
}
displayNumber();display_number=number/100;
if(display_number > 59){
number = 0;
}if(valButton == HIGH){
number = 0;
}
}