1
2
3#include <elapsedMillis.h>
4#include "Wire.h"
5int led = 3;
6int relay = 2;
7int a;
8int ax;
9int ay;
10int az;
11int i;
12const int MPU_ADDR = 0x68;
13int16_t accelerometer_x, accelerometer_y, accelerometer_z;
14int16_t gyro_x, gyro_y, gyro_z;
15int16_t temperature;
16char tmp_str[7];
17char* convert_int16_to_str(int16_t i) {
18 sprintf(tmp_str, "%6d", i);
19 return tmp_str;
20
21}
22void setup() {
23 Serial.begin(9600);
24 pinMode(relay, OUTPUT);
25 digitalWrite(relay, LOW);
26 pinMode(led, OUTPUT);
27 digitalWrite(led, LOW);
28 Wire.begin();
29 Wire.beginTransmission(MPU_ADDR);
30 Wire.write(0x6B);
31 Wire.write(0);
32 Wire.endTransmission(true);
33}
34void loop() {
35 Wire.beginTransmission(MPU_ADDR);
36 Wire.write(0x3B);
37 Wire.endTransmission(false);
38 Wire.requestFrom(MPU_ADDR, 7*2, true);
39
40
41 accelerometer_x = Wire.read()<<8 | Wire.read();
42 accelerometer_y = Wire.read()<<8 | Wire.read();
43 accelerometer_z = Wire.read()<<8 | Wire.read();
44 temperature = Wire.read()<<8 | Wire.read();
45 gyro_x = Wire.read()<<8 | Wire.read();
46 gyro_y = Wire.read()<<8 | Wire.read();
47 gyro_z = Wire.read()<<8 | Wire.read();
48
49
50 Serial.print("aX,"); Serial.print(convert_int16_to_str(accelerometer_x));
51 Serial.print(",aY,"); Serial.print(convert_int16_to_str(accelerometer_y));
52 Serial.print(",aZ,"); Serial.print(convert_int16_to_str(accelerometer_z));
53
54 Serial.print(",tmp,"); Serial.print(temperature/340.00+36.53);
55 Serial.print(",gX,"); Serial.print(convert_int16_to_str(gyro_x));
56 Serial.print(",gY,"); Serial.print(convert_int16_to_str(gyro_y));
57 Serial.print(",gZ,"); Serial.print(convert_int16_to_str(gyro_z));
58ax=accelerometer_x/100;
59ay=accelerometer_y/100;
60az=accelerometer_z/100;
61
62 a=(sq(ax)+sq(ay));
63 Serial.print(",Calculation,"); Serial.print(a);
64 Serial.println();
65
66 if (a>8000){
67 digitalWrite(relay, HIGH);
68 delay(5000);
69 digitalWrite(relay, LOW);}
70 Serial.print("Fire Pyro");
71 Serial.println();
72 digitalWrite(led, HIGH);
73 delay(100);
74 digitalWrite(led, LOW);
75
76 }
77