#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define SWITCH 32
#define TRIG 5
#define ECHO 18
#define CM_TO_INCH 0.393701
Adafruit_MPU6050 mpu;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
float ultraRun(int state){
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
int duration = pulseIn(ECHO, HIGH);
float distance = duration * 0.034 / 2;
if (state){
return distance;
}else{
return distance * CM_TO_INCH;
}
}
void setup() {
Serial.begin(115200);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(SWITCH, INPUT_PULLUP);
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
Serial.println("MPU6050 ready!");
Serial.println("A11 - Made Yosfin Saputra");
delay(100);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(500);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
}
void loop() {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
display.clearDisplay();
display.setCursor(0, 0);
display.print("Jarak: ");
display.print(ultraRun(1));
display.println(" cm");
display.print("Jarak: ");
display.print(ultraRun(0));
display.println(" inchi");
display.println("");
if(digitalRead(SWITCH)){
display.println("Acceleration");
display.print("X: ");
display.println(a.acceleration.x);
display.print("Y: ");
display.println(a.acceleration.y);
display.print("Z: ");
display.println(a.acceleration.z);
}else{
display.println("Gyro / Rotation");
display.print("X: ");
display.println(g.gyro.x);
display.print("Y: ");
display.println(g.gyro.y);
display.print("Z: ");
display.println(g.gyro.z);
}
display.print("Temperature: ");
display.print(temp.temperature);
display.print(" *C");
display.display();
delay(1000);
}