#include <Adafruit_MPU6050.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht= DHT(DHTPIN,DHTTYPE);
Adafruit_MPU6050 mpu;
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 48, &Wire);
int led= 13;
int sensor=2;
int state=LOW;
int val=0;
int flag=0;
float hum;
float tempa;
void setup() {
pinMode(led, OUTPUT);
pinMode(sensor, INPUT);
dht.begin();
Serial.begin(115200);
// while (!Serial);
Serial.println("MPU6050 OLED demo");
if (!mpu.begin()) {
Serial.println("Sensor init failed");
while (1)
yield();
}
Serial.println("Found a MPU6050 sensor");
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64
Serial.println(F("SSD1306 allocation failed"));
for (;;)
; // Don't proceed, loop forever
}
display.display();
delay(500); // Pause for 2 seconds
display.setTextSize(1);
display.setTextColor(WHITE);
display.setRotation(0);
}
void loop() {
hum= dht.readHumidity();
tempa=dht.readTemperature();
if(isnan(hum)||isnan(tempa))
Serial.println("Failed to read from sensor");
val=digitalRead(sensor);
if(val==HIGH)
{
digitalWrite(led,HIGH);
if(state==LOW)
{
flag=1;
state=HIGH;
}
}
else{
digitalWrite(led,LOW);
if(state==HIGH)
{
flag=0;
state=LOW;
}
}
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
display.clearDisplay();
display.setCursor(0, 0);
Serial.print("Accelerometer ");
Serial.print("X: ");
Serial.print(a.acceleration.x, 2);
Serial.print(" m/s^2, ");
Serial.print("Y: ");
Serial.print(a.acceleration.y, 2);
Serial.print(" m/s^2, ");
Serial.print("Z: ");
Serial.print(a.acceleration.z, 2);
Serial.println(" m/s^2");
display.println("Accelerometer - m/s^2");
display.print(a.acceleration.x, 2);
display.print(", ");
display.print(a.acceleration.y, 2);
display.print(", ");
display.print(a.acceleration.z, 2);
display.println("");
display.print("Humidity: ");
display.print(hum,2);
display.println("%");
display.print("Temperature:");
display.print(tempa,2);
display.println(" C");
if((a.acceleration.x<-2)||(a.acceleration.y<-2)||(a.acceleration.z<7)||(a.acceleration.x>2)||(a.acceleration.y>2)||(a.acceleration.z)>11)
display.println("Vibration Detected!");
else display.println("No vibration");
if(flag==1)
display.println("Motion Detected");
else
display.println("No Motion");
display.display();
delay(100);
}