#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
int timer1;
int timer2;
float time;
int flag1 = 0;
int flag2 = 0;
float distance = 1.0;
float speed;
float kecepatan;
int ir_s1 = 18;
int ir_s2 = 19;
// bagian display
const int lebar=128;
const int tinggi=64;
const int reset=4;
Adafruit_SSD1306 oled(lebar,tinggi,&Wire,reset);
void setup() {
pinMode(ir_s1, INPUT);
pinMode(ir_s2, INPUT);
Serial.begin(9600);
// bagian display
oled.begin(SSD1306_SWITCHCAPVCC,0x3C);
oled.clearDisplay();
oled.display();
oled.setTextColor(WHITE);
oled.setTextSize(1,4);
oled.setCursor(15,20);
oled.println("SENSOR KECEPATAN");
oled.display();
delay(1000);
oled.clearDisplay();
oled.setTextSize(2);
oled.setCursor(10,22);
oled.println("KELOMPOK4");
oled.display();
delay(2000);
}
void loop() {
oled.display();
oled.setTextColor(WHITE);
oled.clearDisplay();
if (digitalRead(ir_s1) == LOW && flag1==0) {timer1 = millis(); flag1=1;myservo.write;digitalWrite(led, HIGH);}
if (digitalRead(ir_s2) == LOW && flag2==0) {time2 = millis(); flag2=1;}
if (flag1==1 && flag2==1) {
if (timer1 > timer2) {time == timer1 - timer2;}
else if (timer2 > timer1) {time == timer2 - timer1;}
time=time/1000; //convert milisecond
speed=(distance/time); // v=d/t
speed=speed*3600; //multiply by seconds per hr
speed=speed/1000; //division by meter per Km
kecepatan=speed;
}
if (kecepatan==0) {
oled.setCursor(2,0);
if (flag1==0 && flag2==0) {lcd.print("Searching..");}
else {lcd.clear();}
}
else{
oled.setTextSize(1,1);
oled.setCursor(2,0);
oled.println("kecepatan;");
oled.println(kecepatan,1);
oled.println("km/hr");
oled.setCursor(2,1);
Serial.print("kecepatan:");
serial.print(kecepatan);
oled.display();
delay(5000);
}
}