#include <SPI.h> //Library SPI
#include <Wire.h> //Library Wire
#include <Adafruit_GFX.h> //Library GFX
#include <Adafruit_SSD1306.h> //Library OLED SSD1306
#define SCREEN_WIDTH 128 //Panjang LCD OLED
#define SCREEN_HEIGHT 64 //Tinggi LCD OLED
#define OLED_RESET -1 //Pin reset terhubung dengan arduino
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
double i = 0;
double a = millis();
double c ;
int lap = 0;
void setup() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { //Alamat OLED
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
pinMode(2, INPUT);
digitalWrite(2, HIGH);
}
}
double ia1 = 0;
double ia2 = 0;
double ia3 = 0;
float dis =0;
float abc;
void loop() {
display.clearDisplay();
delay(10);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("CAR01 CAR02 CAR03");
if(digitalRead(2) == LOW)
{
c = millis();
i = (c - a) / 1000;
if(i > 1)
{
lap++;
Serial.print("Lap: ");
Serial.print(lap);
Serial.print("\t\t");
Serial.println(i);
a = millis();
}
}
if(lap==0){
abc = millis();
dis = abc/1000;
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,14);
display.print(dis);
display.display();
}
if(lap==1){
ia1=i;
abc = millis()-ia1;
dis = abc/1000;
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,14);
display.print(ia1);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,28);
display.print(dis-ia1);
display.display();
}
if(lap==2){
ia2=i;
abc = millis()-ia1;
dis = abc/1000;
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,14);
display.print(ia1);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,28);
display.print(ia2);
display.setTextColor(WHITE);
display.setCursor(0,42);
display.print(dis-ia1-ia2);
display.display();
}
}