4 #include "RunningAverage.h"
6 RunningAverage temp_avg(10);
7 RunningAverage hum_avg(10);
11 #include <Adafruit_BMP280.h>
13 U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
15 // U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display
18 #define DHTPIN 3 // what pin we're connected to
19 #define DHTTYPE DHT11 // DHT 11
21 DHT dht(DHTPIN, DHTTYPE);
24 Adafruit_BMP280 bmp; // I2C
29 LIS3DHTR<TwoWire> LIS; //IIC
39 //u8x8.setBusClock(100000); // If you breakout other modules, please enable this line
49 Serial.println(F("Could not find a valid BMP280 sensor!"));
52 /* Default settings from datasheet. */
53 bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
54 Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
55 Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
56 Adafruit_BMP280::FILTER_X16, /* Filtering. */
57 Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
59 pinMode(BUTTON_PIN, OUTPUT);
60 pinMode(SOUND_PIN, INPUT);
61 pinMode(LIGHT_PIN, INPUT);
64 LIS.begin(WIRE, 0x19);
67 LIS.setFullScaleRange(LIS3DHTR_RANGE_2G);
68 LIS.setOutputDataRate(LIS3DHTR_DATARATE_5KHZ);
69 LIS.setHighSolution(true); //High solution enable
79 int oled_active = ! digitalRead(BUTTON_PIN);
80 u8x8.setPowerSave( oled_active );
82 temp_avg.addValue( dht.readTemperature() );
83 hum_avg.addValue( dht.readHumidity() );
84 float temp = temp_avg.getAverage();
85 float humi = hum_avg.getAverage();
87 u8x8.setFont(u8x8_font_chroma48medium8_r);
89 //u8x8.print("Temp:");
92 Serial.print("dht_temp=");
95 temp = bmp.readTemperature();
97 Serial.print(",bmp_temp=");
102 u8x8.setCursor(0,1 * 9);
103 u8x8.print("Humidity:");
107 Serial.print(",dht_humidity=");
111 pressure = bmp.readPressure();
113 u8x8.setCursor(0,2 * 9);
114 u8x8.print( pressure );
115 Serial.print(",bmp_pressure=");
116 Serial.print(pressure);
118 unsigned long sumSquare;
119 for(int i=0; i++; i<1000) {
120 int sound = analogRead(SOUND_PIN);
121 sumSquare += sound * sound;
123 int rms_sound = sqrt(sumSquare / 1000);
124 Serial.print(",rms_sound=");
125 Serial.print(rms_sound);
127 int sound = analogRead(SOUND_PIN);
128 u8x8.setCursor(0,3 * 9);
130 Serial.print(",sound=");
133 int light = analogRead(LIGHT_PIN);
134 u8x8.setCursor(0,3 * 9);
136 Serial.print(",light=");
139 u8x8.refreshDisplay();
141 float x = 0, y = 0, z = 0;
142 for(int i=0; i<=300; i++) {
143 x += LIS.getAccelerationX();
144 y += LIS.getAccelerationY();
145 z += LIS.getAccelerationZ();
148 Serial.print(",x="); Serial.print(x);
149 Serial.print(",y="); Serial.print(y);
150 Serial.print(",z="); Serial.print(z);
154 t = t + 1000 - millis();